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. Jun