Roman Kononov wrote: > Darmawan Salihun wrote: >> As I couldn't find any better replacement to the PCI direct I/O >> function at the moment (which is needed in chipset_enable and >> board_enable), I will try to implement them using a quite old kernel >> mode API, i.e. HalGetBusData and HalSetBusData. I hope the kernel >> "emulates" these functions so that it works like in NT4 and Windows >> 2000. > > A more "portable" way: > > Make all CPUs spinning inside a DPC function: > KeQueryActiveProcessors() is used to get all processors. > KeSetTargetProcessorDpc() is used to tie the DPC function and particular > SMP processors. > When all CPUs are spinning inside the function, one of them does IO > (CF8/CFC) to the PCI configuration space. > After the IO completes, let all DPC functions finish. > > Roman >
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. --Darmawan Salihun -- linuxbios mailing list [email protected] http://www.linuxbios.org/mailman/listinfo/linuxbios
