From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: netdev@vger.kernel.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
Bjorn Helgaas <bhelgaas@google.com>,
Santosh Raspatur <santosh@chelsio.com>,
Alex Williamson <alex.williamson@redhat.com>,
Paul Mackerras <paulus@samba.org>,
Alexander Duyck <alexander.duyck@gmail.com>,
Hannes Reinecke <hare@suse.de>,
linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org
Subject: [RFC PATCH kernel] PCI: Enable access to custom VPD for Chelsio devices (cxgb3)
Date: Thu, 11 Aug 2016 20:03:29 +1000 [thread overview]
Message-ID: <1470909809-11007-1-git-send-email-aik@ozlabs.ru> (raw)
In-Reply-To: <307b33c6-786e-f910-c456-fda94e8fdb98@suse.de>
There is at least one Chelsio 10Gb card which uses VPD area to store
some custom blocks (example below). However pci_vpd_size() returns
the length of the first block only assuming that there can be only
one VPD "End Tag" and VFIO blocks access beyond that offset
(since 4e1a63555) which leads to the situation when the guest "cxgb3"
driver fails to probe the device. The host system does not have this
problem as the drives accesses the config space directly without
pci_read_vpd()/...
This adds a quirk to override the VPD size to a bigger value.
This is the controller:
Ethernet controller [0200]: Chelsio Communications Inc T310 10GbE Single Port Adapter [1425:0030]
This is its VPD:
#0000 Large item 42 bytes; name 0x2 Identifier String
b'10 Gigabit Ethernet-SR PCI Express Adapter'
#002d Large item 74 bytes; name 0x10
#00 [EC] len=7: b'D76809 '
#0a [FN] len=7: b'46K7897'
#14 [PN] len=7: b'46K7897'
#1e [MN] len=4: b'1037'
#25 [FC] len=4: b'5769'
#2c [SN] len=12: b'YL102035603V'
#3b [NA] len=12: b'00145E992ED1'
#007a Small item 1 bytes; name 0xf End Tag
---
#0c00 Large item 16 bytes; name 0x2 Identifier String
b'S310E-SR-X '
#0c13 Large item 234 bytes; name 0x10
#00 [PN] len=16: b'TBD '
#13 [EC] len=16: b'110107730D2 '
#26 [SN] len=16: b'97YL102035603V '
#39 [NA] len=12: b'00145E992ED1'
#48 [V0] len=6: b'175000'
#51 [V1] len=6: b'266666'
#5a [V2] len=6: b'266666'
#63 [V3] len=6: b'2000 '
#6c [V4] len=2: b'1 '
#71 [V5] len=6: b'c2 '
#7a [V6] len=6: b'0 '
#83 [V7] len=2: b'1 '
#88 [V8] len=2: b'0 '
#8d [V9] len=2: b'0 '
#92 [VA] len=2: b'0 '
#97 [RV] len=80: b's\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'...
#0d00 Large item 252 bytes; name 0x11
#00 [VC] len=16: b'122310_1222 dp '
#13 [VD] len=16: b'610-0001-00 H1\x00\x00'
#26 [VE] len=16: b'122310_1353 fp '
#39 [VF] len=16: b'610-0001-00 H1\x00\x00'
#4c [RW] len=173: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'...
#0dff Small item 0 bytes; name 0xf End Tag
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
drivers/pci/quirks.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index ee72ebe1..94d3fb5 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3241,6 +3241,18 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
quirk_thunderbolt_hotplug_msi);
+static void quirk_chelsio_extend_vpd(struct pci_dev *dev)
+{
+ if (!dev->vpd || !dev->vpd->ops || !dev->vpd->ops->set_size)
+ return;
+
+ dev->vpd->ops->set_size(dev, max_t(unsigned int, dev->vpd->len, 0xe00));
+}
+
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO,
+ PCI_ANY_ID,
+ quirk_chelsio_extend_vpd);
+
#ifdef CONFIG_ACPI
/*
* Apple: Shutdown Cactus Ridge Thunderbolt controller.
--
2.5.0.rc3
next prev parent reply other threads:[~2016-08-11 10:09 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-13 11:25 [PATCHv2 0/4] PCI VPD access fixes Hannes Reinecke
2016-01-13 11:25 ` [PATCHv2 1/4] pci: Update VPD definitions Hannes Reinecke
2016-01-13 11:25 ` [PATCHv2 2/4] pci: allow access to VPD attributes with size '0' Hannes Reinecke
2016-02-09 20:53 ` Bjorn Helgaas
2016-02-10 7:17 ` Hannes Reinecke
2016-01-13 11:25 ` [PATCHv2 3/4] pci: Determine actual VPD size on first access Hannes Reinecke
2016-02-09 21:04 ` Bjorn Helgaas
2016-02-10 7:24 ` Hannes Reinecke
2016-08-09 12:54 ` Alexey Kardashevskiy
2016-08-09 18:12 ` Alexander Duyck
2016-08-10 0:03 ` Benjamin Herrenschmidt
2016-08-10 15:47 ` Alexander Duyck
2016-08-10 23:54 ` Benjamin Herrenschmidt
2016-08-11 18:52 ` Alexander Duyck
2016-08-11 20:17 ` Alex Williamson
2016-08-12 5:11 ` Benjamin Herrenschmidt
2016-08-15 17:59 ` Rustad, Mark D
2016-08-15 22:23 ` Benjamin Herrenschmidt
2016-08-15 22:33 ` Benjamin Herrenschmidt
2016-08-15 23:16 ` Rustad, Mark D
2016-08-16 0:13 ` Benjamin Herrenschmidt
2016-08-16 1:40 ` Alexey Kardashevskiy
2016-08-10 6:23 ` Hannes Reinecke
2016-08-11 10:03 ` Alexey Kardashevskiy [this message]
2016-09-06 15:48 ` [RFC PATCH kernel] PCI: Enable access to custom VPD for Chelsio devices (cxgb3) Bjorn Helgaas
2016-09-06 18:30 ` Alexander Duyck
2016-09-21 10:53 ` Alexey Kardashevskiy
2016-08-09 23:59 ` [PATCHv2 3/4] pci: Determine actual VPD size on first access Benjamin Herrenschmidt
2016-01-13 11:25 ` [PATCHv2 4/4] pci: Blacklist vpd access for buggy devices Hannes Reinecke
2016-01-19 20:57 ` [PATCH v3 " Babu Moger
2016-02-09 21:07 ` [PATCHv2 " Bjorn Helgaas
2016-02-09 21:24 ` Babu Moger
2016-01-15 1:07 ` [PATCHv2 0/4] PCI VPD access fixes Seymour, Shane M
2016-01-15 14:10 ` Babu Moger
2016-01-15 14:18 ` Hannes Reinecke
2016-01-19 20:53 ` Babu Moger
2016-01-21 18:34 ` [PATCH v4 4/4] pci: Blacklist vpd access for buggy devices Babu Moger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1470909809-11007-1-git-send-email-aik@ozlabs.ru \
--to=aik@ozlabs.ru \
--cc=alex.williamson@redhat.com \
--cc=alexander.duyck@gmail.com \
--cc=bhelgaas@google.com \
--cc=hare@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=paulus@samba.org \
--cc=santosh@chelsio.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).