Blob Blame History Raw
From: Sebastian Ott <sebott@linux.ibm.com>
Date: Fri, 21 Dec 2018 15:14:19 +0100
Subject: PCI/IOV: Add flag so platforms can skip VF scanning
Git-commit: aff68a5a621e2569d126b817d0d42f658df524bf
Patch-mainline: v5.0-rc1
References: jsc#SLE-5803 FATE#327056

Provide a flag to skip scanning for new VFs after SR-IOV enablement.  This
can be set by implementations for which the VFs are already reported by
other means.

Signed-off-by: Sebastian Ott <sebott@linux.ibm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Acked-by: Petr Tesarik <ptesarik@suse.com>
---
 drivers/pci/iov.c   |    6 ++++++
 include/linux/pci.h |    1 +
 2 files changed, 7 insertions(+)

--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -229,6 +229,9 @@ static int sriov_add_vfs(struct pci_dev
 	unsigned int i;
 	int rc;
 
+	if (dev->no_vf_scan)
+		return 0;
+
 	for (i = 0; i < num_vfs; i++) {
 		rc = pci_iov_add_virtfn(dev, i);
 		if (rc)
@@ -357,6 +360,9 @@ static void sriov_del_vfs(struct pci_dev
 	struct pci_sriov *iov = dev->sriov;
 	int i;
 
+	if (dev->no_vf_scan)
+		return;
+
 	for (i = 0; i < iov->num_VFs; i++)
 		pci_iov_remove_virtfn(dev, i);
 }
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -404,6 +404,7 @@ struct pci_dev {
 	unsigned int	irq_managed:1;
 	unsigned int	has_secondary_link:1;
 	unsigned int	non_compliant_bars:1;	/* broken BARs; ignore them */
+	unsigned int	no_vf_scan:1;		/* Don't scan for VFs after IOV enablement */
 	pci_dev_flags_t dev_flags;
 	atomic_t	enable_cnt;	/* pci_enable_device has been called */