Sun 3/260 Virtual Address Caching Problem
David B Stewart
dstewart at fas.ri.cmu.edu
Thu Oct 19 06:01:31 AEST 1989
I would appreciate any pointers or ideas concerning the following problem:
We have an Ironics M68020 processor board, with 4 MBytes of memory, on the
VME backplane. We have written a memory mapping driver which works on a
Sun 3/160, but not on a Sun 3/260. We have tried both Sun OS Release 3.2
and Release 3.5.
Sometimes when running my program, I get a segmentation fault when
accessing part of the memory mapped memory. Using the dbx debugger,
however, I can access the memory even after the segmentation fault. The
problem only happens some of the time, and not all the time; and not
always at the same place. Since everything works fine on a Sun 3/160, I
assume the problem has to do with the Virtual Address Caching of the Sun
3/260.
I used the routine "vac_disable_kpage()", which supposedly disables the
caching mechanism on the memory mapped pages. However, the problem
remained. I could not find any documentation on this routine; I only
found out about it looking at the source code from a commercial driver.
As an added note: We are not memory mapping the entire board at kernel
time, only a small portion of it. We map the rest of the board during the
mmap call. Again, this works on the Sun 3/160, but not on the 3/260.
The mmap routine we are using follows:
/*
* ixmmmap() - allows user to memory map the entire processor memory.
*/
ixmmmap(dev, off, protection)
dev_t dev;
off_t off;
int protection;
{
register XM_DEV_STATUS * xmd;
register int page;
xmd = ixmdevice + minor(dev);
if(off >= xmd->cpu_size) return -1; /* check for valid addr */
if(off <= XM_MAP_SIZE) { /* Memory previously mapped by kernel */
page = getkpgmap(xmd->cpu_addr + off) & PG_PFNUM;
vac_disable_kpage(xmd->cpu_addr + off);
} else { /* Memory not mapped by kernel */
page = getkpgmap(xmd->cpu_addr) & PG_PFNUM;
page += btop(off);
}
return page;
}
If you have any clues, I would appreciate hearing from you.
David B. Stewart, Dept. of Electrical and Computer Engineering,
and The Robotics Institute, Carnegie Mellon University
email: stewart at faraday.ece.cmu.edu, office: 412-268-7120; lab: 412-268-3652.
More information about the Comp.sys.sun
mailing list