On 7/30/07, Roman Kononov <kononov@dls.net> 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

Nice idea ;-).

I'll try tocombine that with Windows HAL function for the PCI direct IO because doing it through CF8/CFC is very risky. I'll let the OS do it ;-).

--
Regards,

Darmawan Salihun
--------------------------------------------------------------------
-= Human knowledge belongs to the world =-