Subject: Re: pci probe
To: M. Warner Losh <imp@bsdimp.com>
From: None <cgd@broadcom.com>
List: tech-kern
Date: 08/15/2003 14:20:39
At Fri, 15 Aug 2003 14:46:12 -0600 (MDT), M. Warner Losh wrote:
> Only types 0, 1 and 2 are defined, but except for section 6.1 that
> says "the host bridge is required to return 0xff for reads to
> non-existant devices" you are correct. There are two ways of dealing
> with this. One is to accept only those things you know are defined.
> The other is to reject those things you know to be undefined. When
> the register is 0xff, it is likely the result of a read on a device
> that isn't there. Hmmmm, come to think of it, you have the same
> problem here as you do with the vendor string. One could, in theory,
> define a header type of 0x7f (it is reserved in the standard, not
> illegal) for a multifunction device.
uh, puzzled.
"vendor string"? The PCI spec does explicitly state that vendor ID
0xffff is "an invalid vendor ID." (PCI 2.1 page 188.) Note that
vendors *can* use device ID of 0 or 0xffff, if they so choose.
As you note, those, header type 0x7f is *not* Illegal.
> : Maybe there's a better (more general) quirk to be had based on your
> : experience. However, if you really think this is a case of anything
> : other than a buggy device, please quote C&V that allows the behaviour
> : that you describe.
>
> In another post I pointed out that the standard doesn't say that if
> you read back 0xffff on function 0, that there won't be valid one on
> function 1.
Uh, the standard *does* indicate that if it is a multi-function
device, function 0 *must* be implemented. (previously quoted.)
"Read back 0xffff on function 0" from what?
If you read that back as vendor ID, no, you *cannot* have a function 1.
(I don't know what Itojun implemented, but was responding to your
suggestion that a more general filter was desirable. If what he did
was a device-specific quirk, well, maybe it could be better but it
wouldn't harm other devices at least. whereas, a more general check
might.)
cgd