Accessing shared physical memory

Richard B. Johnson (root@chaos.analogic.com)
Thu, 11 Nov 1999 12:17:02 -0500 (EST)


Hello,

I am trying to access a board with shared memory at absolute address
0xd0000. This is accessible in 'real-mode' on the ISA bus as D000:0000.

It is plainly visible using DOS Debug.

Access from a driver that does:

ptr = (short *) ioremap(0xd0000, 0x10000);
for(;;)
*ptr = 0xdead;

Does not ever produce address 0xD... anything on the ISA bus. Therefore,
I can't access the device. There is some activity on the ISA bus, but
I am waiting to use our logic-analyzer. In the meantime, maybe somebody
knows what I am doing wrong. I need to access physical address 0xd0000.

I tried:

virt_to_phys(0xd0000);
phys_to_virt(0xd0000);
ioremap(of above);

I have used ioremap() on other systems to access shared memory, but
I have found that it doesn't work on all systems tested. It seems that
some kind of caching remains turned ON so that actual writes never occur
to the physical device (maybe the first which I didn't catch with a
'scope). This particular machine is a Pentium II (Gateway). The board
and the code worked in my Pentium that uses a Tyan Thunder board.

Cheers,
Dick Johnson

Penguin : Linux version 2.3.13 on an i686 machine (400.59 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/