public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* PCI VPD checksum ambiguity
@ 2025-04-01 20:55 Bjorn Helgaas
  2025-04-01 21:51 ` Heiner Kallweit
  2025-04-10 16:21 ` Bjorn Helgaas
  0 siblings, 2 replies; 6+ messages in thread
From: Bjorn Helgaas @ 2025-04-01 20:55 UTC (permalink / raw)
  To: Pavan Chebbi, Michael Chan, Potnuri Bharat Teja, Heiner Kallweit
  Cc: netdev, linux-pci, linux-kernel

Hi,

The PCIe spec is ambiguous about how the VPD checksum should be
computed, and resolving this ambiguity might break drivers.

PCIe r6.0 sec 6.27 says only the VPD-R list should be included in the
checksum:

  One VPD-R (10h) tag is used as a header for the read-only keywords.
  The VPD-R list (including tag and length) must checksum to zero.

But sec 6.27.2.2 says "all bytes in VPD ... up to the checksum byte":

  RV   The first byte of this item is a checksum byte. The checksum is
       correct if the sum of all bytes in VPD (from VPD address 0 up
       to and including this byte) is zero.

These are obviously different unless VPD-R happens to be the first
item in VPD.  But sec 6.27 and 6.27.2.1 suggest that the Identifier
String item should be the first item, preceding the VPD-R list:

  The first VPD tag is the Identifier String (02h) and provides the
  product name of the device. [6.27]

  Large resource type Identifier String (02h)

    This tag is the first item in the VPD storage component. It
    contains the name of the add-in card in alphanumeric characters.
    [6.27.2.1, Table 6-23]

I think pci_vpd_check_csum() follows sec 6.27.2.2: it sums all the
bytes in the buffer up to and including the checksum byte of the RV
keyword.  The range starts at 0, not at the beginning of the VPD-R
read-only list, so it likely includes the Identifier String.

As far as I can tell, only the broadcom/tg3 and chelsio/cxgb4/t4
drivers use pci_vpd_check_csum().  Of course, other drivers might
compute the checksum themselves.

Any thoughts on how this spec ambiguity should be resolved?

Any idea how devices in the field populate their VPD?

Can you share any VPD dumps from devices that include an RV keyword
item?

Bjorn

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-04-10 16:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-01 20:55 PCI VPD checksum ambiguity Bjorn Helgaas
2025-04-01 21:51 ` Heiner Kallweit
2025-04-01 22:35   ` Bjorn Helgaas
2025-04-02 10:33     ` Pavan Chebbi
2025-04-07 22:22       ` Bjorn Helgaas
2025-04-10 16:21 ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox