On Thu, Apr 09, 2020 at 11:32:04AM -0700, Sean V Kelley wrote: > Instead of current generic 'unknown' output for DVSEC, add details on > Vendor ID, Rev, etc. > > Suggested-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> > Signed-off-by: Sean V Kelley <sean.v.kelley@xxxxxxxxxxxxxxx> Looks good to me. > +static void > +cap_dvsec(struct device *d, int where) > +{ > + u32 hdr; > + > + printf("Designated Vendor Specific Extended Capability:\n"); s/Vendor Specific/Vendor-Specific/ to match the spec usage s/ Extended Capability:// to match other lspci capability output (?) > +4e:00.0 Unassigned class [ff00]: Intel Corporation Device 0d93 > + Capabilities: [d00 v1] Vendor Specific Information: ID=0040 Rev=1 Len=04c <?> > + Capabilities: [e00 v1] Designated Vendor Specific Extended Capability: > + DVSEC Vendor ID=8086 Rev=0 Len=038 <?> > + DVSEC ID=0000 <?> > + Capabilities: [e38 v1] Device Serial Number 12-34-56-78-90-00-00-00 > +00: 86 80 93 0d 00 00 10 00 00 00 00 ff 00 00 80 00 Obviously this class code is wrong. I assume it'll be fixed in real hardware, but ironically we've just spent a few days chasing a problem because of a Google Edge TPU with invalid class code. In that case, Linux doesn't assign resources to BARs, so things fall apart after that.