Subject: Re: FDDI: PC/BIOS and MTU
To: Chris G. Demetriou <cgd@netbsd.org>
From: Matthias Drochner <drochner@zel459.zel.kfa-juelich.de>
List: current-users
Date: 06/02/1999 14:32:02
cgd@netbsd.org said:
> Jason Thorpe <thorpej@nas.nasa.gov> writes:
> > Possibly, maybe we could just put it in the code that attaches devices
> > to the PCI bus; as I understand it, devices which do NOT do bus
> > mastering
> > have this bit hard-wired to 0, so setting it doens't hurt anything. 

Hmm - as I understand it, the BIOS is not obliged to set the
bus master bit. Many do, but where it is not done, it might
be for a purpose:
During a warm boot, the chips' DMA engine might be still active.
The BIOS can switch off all the bus master bits before the
OS is loaded again, without doing a hard reset, to save the
fresh OS brom being corrupted.
(That's what I read in a PCI mailing list a while ago -- hope I
remember correctly, didn't save the mail. Looks reasonable however.)
The OS would then have to make sure the chip's DMA engine is
stopped before the DMA is enabled in the PCI command register.
This is device specific, so the generic PCI code can't do it.

> Some PCI slots are not capable of being bus masters
> (don't know more details than that, but i've seen vendors say that
> about some of their PCI slots)

Many CompactPCI systems have slave-only slots. The Standard tells
that all physical slots must be potential busmasters, but not
all at the same time. There are jumpers to choose 4 slots of the 7
on my systems.
The reason is that the typical Intel PCI chipset does only provide
4 request-grant line pairs for arbitration.
[rant about PC crap omitted]
I'd say the user is responsible to put busmastering boards only
into DMA capable slots.

best regards
Matthias