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.
Anyway, in your experience. Is this approach takes quite a lot "time slice" in the kernel space?
Regards, Darmawan