On Fri, Aug 10, 2007 at 03:08:26PM +0700, Darmawan Salihun wrote:
Roman Kononov wrote:
Make all CPUs spinning inside a DPC function:
After discussing about the access method at length with more experienced Windows driver developers. I think if HalGetBusData is not working at all then direct I/O port access with your "multiprocessor-aware kernel thread protection" is the "safest" method.
But PCI config accesses are not atomic operations. Is there a guarantee that the other CPUs are not in the middle of doing a PCI access already?
And even if they are actually doing something else, perhaps they (erroneously? but we don't want to break them anyway) rely on 0xcfc being what they set it to in the last PCI config access?
I really prefer using whatever API Windows offers.
//Peter