On Mon, 11 Mar 2002, Jun Sun wrote:
> Gerald Champagne wrote:
> > I'm studying the VRC-5477 code and I'm trying to understand how pci config
> > cycles can work reliably with the current code. It looks like the pci
> > config code must execute with interrupts disabled, but I can't find code
> > that disables interrupts. Can someone offer a few pointers? Here's why
> > I ask...
> >
> > All pci io, memory, and config accesses on the 5477 are performed through
> > two windows in the cpu address space. Normally these two windows are
> > configured
> > to perform pci memory and io accesses, and any driver can access pci io and
> > memory at any time. In order to perform a pci config access, one of the
> > two
> > windows must be remapped to perform pci config cycles. The code in
> > read_config_dword() looks something like this:
> >
> > - Call ddb_access_config_base() to reconfigure the window into pci
> > memory space
> > to access pci config space instead.
> >
> > - Read from pci config space by reading from an offset into the window.
> >
> > - Call ddb_close_config_base to restore the registers to the original
> > values.
> >
> > It looks like anything can interrupt this an try to perform a pci memory
> > access while the window is programmed to perfom config cycles.
> >
> > Did I miss something, or is this a bug?
>
> Your understanding is correct. I think this is a bug.
>
> Do you actually see the bug happening? So far it has never hit me, but maybe
> due to the drivers that are loaded on my configuration.
(IIRC) When I wrote the Vrc-5074 support, I thought about this as well.
But then I noticed that this was already done by the upper PCI layer. Is this
still true?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
|