PCI bus numbering and orphaned devices
M. Warner Losh
imp at bsdimp.com
Wed Jun 11 14:49:10 PDT 2003
In message: <361340000.1055367125 at caspian.scsiguy.com>
"Justin T. Gibbs" <gibbs at scsiguy.com> writes:
: > I'm thinking that the loop should be more like:
: >
: > pcifunchigh = 0;
: > f = 0;
: > hdrtype = REG(PCIR_HEADERTYPE, 1);
: > if (hdrtype & 0x7f > 2)
: > continue;
:
: My only complaint about this is that if no device is present in the
: slot, won't you just get all bits set in whatever you read? If so,
: the headertype check should be better bounded.
hdrtype would be 0xff. 0xff & 0x7f is 0x7f, which is greater than 2.
What would the problem be? The only valid header types are 0, 1, and
2 (at least the only ones that we understand). Technically, if it is
a header type we don't know, we're supposed to disable the device in
the command register too.
Warner
More information about the freebsd-current
mailing list