Ronald G Minnich wrote: >I'm wrong. Sorry. > >I misinterpreted a problem we're having in Plan 9, but now I see that I do >correctly enable most things -- except the Bus Master Enable bit. Some >times I do, but on some interfaces I don't so I have to see what's going >on. > >Also, Etherboot gets upset when Bus Master is not set. > >I have to see if I understand the rules for turning on Bus Master, which I >thought I did, but obviously do not. >
A few notes, blindly enabling IO and MEM for all devices is bad... recall that video devices for example try to decode the same VGA region at the same time. Disabling the IO decode bit in PCI config space for VGA devices is the only generic way to avoid this. WRT to bus mastering, it is very very evil to blindly enable busmastering. Tulips and probably most other typical devices lock the entire system, if (a) initialization occurs in some fashion that initiates DMA, and (b) the busmaster bit is enabled. There were some lockup fixes put into Linux kernel device drivers, that basically moved the pci_set_master() function after some chip-specific quiescing code. To sum, most devices you can enable IO and MEM bits, but not all. Only enable busmaster bit on devices you are confident about. The OS should take care of the rest, i.e. enabling busmastering when it needs it. Jeff