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