<br><br><div><span class="gmail_quote">On 7/30/07, <b class="gmail_sendername">Roman Kononov</b> <<a href="mailto:kononov@dls.net">kononov@dls.net</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Darmawan Salihun wrote:<br>>  As I couldn't find any better replacement to the PCI direct I/O<br>>  function at the moment (which is needed in chipset_enable and<br>>  board_enable), I will try to implement them using a quite old kernel
<br>>  mode API, i.e. HalGetBusData and HalSetBusData. I hope the kernel<br>>  "emulates" these functions so that it works like in NT4 and Windows<br>>  2000.<br><br>A more "portable" way:<br>
<br>Make all CPUs spinning inside a DPC function:<br>KeQueryActiveProcessors() is used to get all processors.<br>KeSetTargetProcessorDpc() is used to tie the DPC function and particular<br>SMP processors.<br>When all CPUs are spinning inside the function, one of them does IO
<br>(CF8/CFC) to the PCI configuration space.<br>After the IO completes, let all DPC functions finish.<br><br>Roman<br></blockquote></div><br>Nice idea ;-).<br><br>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 ;-).
<br clear="all"><br>-- <br>Regards,<br><br>Darmawan Salihun<br>--------------------------------------------------------------------<br>-= Human knowledge belongs to the world =-