Thread (3 messages) 3 messages, 2 authors, 2012-09-12

Re: [PATCH 1/1] pci-iov: Fix warnings when CONFIG_PCI_IOV is enabled

From: Bjorn Helgaas <bhelgaas@google.com>
Date: 2012-09-11 23:35:35
Also in: lkml

On Tue, Sep 4, 2012 at 5:11 PM, Jiang Wang [off-list ref] wrote:
quoted hunk ↗ jump to hunk
When CONFIG_PCI_IOV is enabled, the kernel will call sriov_init().
This function tries to allocate virtual resources even if the
virtual function of a PCI devive is not enabled by the BIOS.

This sometimes causes following warning messages during boot up:
pci 0000:02:00.0: BAR 9: can't allocate mem resource [0x000000-0x3fffff]
pci 0000:02:00.0: BAR 7: can't allocate mem resource [0x000000-0x03ffff]

Tested on three Mitac motherboards.

Signed-off-by: Jiang Wang <redacted>
---
 drivers/pci/iov.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index 6554e1a..0ca8cb2 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -441,7 +441,8 @@ static int sriov_init(struct pci_dev *dev, int pos)
        if (ctrl & PCI_SRIOV_CTRL_VFE) {
                pci_write_config_word(dev, pos + PCI_SRIOV_CTRL, 0);
                ssleep(1);
-       }
+       } else
+               return 0;
But this would mean that Linux can't *ever* enable VFs unless the BIOS
enabled them, right?  I don't think that's what we want -- there's
code in sriov_enable() to turn on VFE, assuming we have enough
resources for the VFs.

It's certainly possible that the BIOS didn't allocate large enough
apertures in the bridges leading to the SR-IOV device to accommodate
all the VFs, and Linux may not be smart enough to enlarge them.  And
probably our warning messages in that case are not very enlightening.

Bjorn
        pci_read_config_word(dev, pos + PCI_SRIOV_TOTAL_VF, &total);
        if (!total)
--
1.7.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help