[coreboot] PCI bus mastering

Andrei Birjukov andrei.birjukov at artecdesign.ee
Fri May 9 16:06:37 CEST 2008


I am writing to the CoreBoot mailing list concerning the PCI bus 
mastering issue that prevents Windows CE drivers from functioning.
Artec DBE62 board has a VIA Velocity NIC, that requires bus mastering in 
order to perform DMA and function correctly. I noticed that nearly all 
Linux drivers set the bus mastering flag manually during init stage.

Unfortunately, this is not the case with Windows CE drivers. I would be 
more than happy to do the same thing there, but the problem is, drivers 
for modern NICs are often supplied as pre-compiled binaries. And it is 
not always feasible to init the mastering flag in a CE board support 

Provided that we want CoreBoot to set PCI bus mastering for a NIC, what 
is the most adequate way of doing it?

1. With DBE61, we had a dummy RTL8139 PCI driver under 
src/drivers/pci/rtl8139 that did some chip initialization. I believe 
that is not suitable for the mainline.

2. Another option would be to globally force the PCI_COMMAND_MASTER in 
pci_probe_dev(), if the base class is PCI_BASE_CLASS_NETWORK.

3. It must be also possible to find the PCI device during the 
mainboard-specific init and issue the mastering command from there.

We have already implemented it as (2), please let me know if you want 
the patch.


Andrei Birjukov
Embedded Software Engineer
Artec Design LLC
Turi 10C, 11313, Tallinn, Estonia
Phone: +3726718559
Fax: +3726718555
GSM: +37256908939
E-mail: andrei.birjukov at artecdesign.ee
WWW: http://www.artecdesign.com

More information about the coreboot mailing list