[parisc-linux] a500.out16

Grant Grundler grundler@cup.hp.com
Thu, 02 Nov 2000 08:12:47 -0800


This is why I do NOT like our current scheme of using host
physical addresses to access I/O space.

Richard Hirst wrote:
...
> I'd guess that the NCR registers are being cached:
> 
> 
> static int __init ncr_regtest (struct ncb* np)
> {
>         register volatile u_int32 data;
>         /*
>         **      ncr registers may NOT be cached.
>         **      write 0xffffffff to a read only register area,
>         **      and try to read it back.
>         */
>         data = 0xffffffff;
>         OUTL_OFF(offsetof(struct ncr_reg, nc_dstat), data);
>         data = INL_OFF(offsetof(struct ncr_reg, nc_dstat));

If INL_OFF and OUTL_OFF are broken, they will very likely point
to something in memory - page zero. And happily scribble over
it gsc_write(xxx).

We don't cache I/O space. Never.
Something is definitely broken on this code path.

I'll look at this once I find out what I broke on the j5k/c3k boot path
in lba_pci.c. jsm already restored the previous version of lba_pci.c
so folks can still boot 32-bit on c3k/j5k.

grant

Grant Grundler
Unix Systems Enablement Lab
+1.408.447.7253