svn commit: r313175 - stable/11/sys/dev/cxgbe
John Baldwin
jhb at FreeBSD.org
Fri Feb 3 21:37:29 UTC 2017
Author: jhb
Date: Fri Feb 3 21:37:27 2017
New Revision: 313175
URL: https://svnweb.freebsd.org/changeset/base/313175
Log:
MFC 313020: Fix a couple of issues with t4iov probe and attach.
- Check for Chelsio vendor ID in probe routines.
- Fail attach instead of faulting if pci_find_dbsf() doesn't find a
device.
PR: 216539
Sponsored by: Chelsio Communications
Modified:
stable/11/sys/dev/cxgbe/t4_iov.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/dev/cxgbe/t4_iov.c
==============================================================================
--- stable/11/sys/dev/cxgbe/t4_iov.c Fri Feb 3 20:33:23 2017 (r313174)
+++ stable/11/sys/dev/cxgbe/t4_iov.c Fri Feb 3 21:37:27 2017 (r313175)
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
#include <dev/pci/pci_iov.h>
#endif
+#include "common/common.h"
#include "t4_if.h"
struct t4iov_softc {
@@ -106,6 +107,9 @@ t4iov_probe(device_t dev)
uint16_t d;
size_t i;
+ if (pci_get_vendor(dev) != PCI_VENDOR_ID_CHELSIO)
+ return (ENXIO);
+
d = pci_get_device(dev);
for (i = 0; i < nitems(t4iov_pciids); i++) {
if (d == t4iov_pciids[i].device) {
@@ -123,6 +127,9 @@ t5iov_probe(device_t dev)
uint16_t d;
size_t i;
+ if (pci_get_vendor(dev) != PCI_VENDOR_ID_CHELSIO)
+ return (ENXIO);
+
d = pci_get_device(dev);
for (i = 0; i < nitems(t5iov_pciids); i++) {
if (d == t5iov_pciids[i].device) {
@@ -140,6 +147,9 @@ t6iov_probe(device_t dev)
uint16_t d;
size_t i;
+ if (pci_get_vendor(dev) != PCI_VENDOR_ID_CHELSIO)
+ return (ENXIO);
+
d = pci_get_device(dev);
for (i = 0; i < nitems(t6iov_pciids); i++) {
if (d == t6iov_pciids[i].device) {
@@ -161,6 +171,8 @@ t4iov_attach(device_t dev)
sc->sc_main = pci_find_dbsf(pci_get_domain(dev), pci_get_bus(dev),
pci_get_slot(dev), 4);
+ if (sc->sc_main == NULL)
+ return (ENXIO);
if (T4_IS_MAIN_READY(sc->sc_main) == 0)
return (t4iov_attach_child(dev));
return (0);
More information about the svn-src-stable
mailing list