WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [linux-2.6.18-xen] PCI: add a SR-IOV quirk for Intel 825

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [linux-2.6.18-xen] PCI: add a SR-IOV quirk for Intel 82576 NIC
From: "Xen patchbot-linux-2.6.18-xen" <patchbot-linux-2.6.18-xen@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 19 Mar 2009 10:05:11 -0700
Delivery-date: Thu, 19 Mar 2009 10:05:44 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1237458059 0
# Node ID 3d4c92b975561298238ab6e402eb05afbf288870
# Parent  6a0fee3b8b7da9e2aec96ee6807df5684218d6e4
PCI: add a SR-IOV quirk for Intel 82576 NIC

If BIOS doesn't allocate resources for VF BARs, zero Flash BAR and
program VF BARs to use the old Flash Memory Space.

Please refer to Intel 82576 Gigabit Ethernet Controller Datasheet
section 7.9.2.14.2 for details.
http://download.intel.com/design/network/datashts/82576_Datasheet.pdf

Signed-off-by: Yu Zhao <yu.zhao@xxxxxxxxx>
---
 drivers/pci/quirks.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+)

diff -r 6a0fee3b8b7d -r 3d4c92b97556 drivers/pci/quirks.c
--- a/drivers/pci/quirks.c      Thu Mar 19 10:07:31 2009 +0000
+++ b/drivers/pci/quirks.c      Thu Mar 19 10:20:59 2009 +0000
@@ -1747,3 +1747,60 @@ EXPORT_SYMBOL(pcie_mch_quirk);
 #ifdef CONFIG_HOTPLUG
 EXPORT_SYMBOL(pci_fixup_device);
 #endif
+
+#ifdef CONFIG_PCI_IOV
+/*
+ * If BIOS doesn't allocate resources for SR-IOV BARs, zero Flash BAR
+ * and program SR-IOV BARs to use the old Flash Memory Space.
+ * PCI subsystem may try to allocate Memory Space for Flash BAR later,
+ * that's why we don't clear Flash BAR flags.
+ */
+static void __devinit intel_82576_quirk(struct pci_dev *dev)
+{
+       int i, flags;
+       u32 bar, start, size;
+
+       if (PAGE_SIZE > 0x10000)
+               return;
+
+       if (pci_read_config_dword(dev, 0x184, &bar))
+               return;
+
+       if (bar & PCI_BASE_ADDRESS_MEM_MASK)
+               return;
+
+       i = 1;
+       flags = pci_resource_flags(dev, i);
+       if ((flags & PCI_BASE_ADDRESS_SPACE) ==
+                       PCI_BASE_ADDRESS_SPACE_MEMORY &&
+           (flags & PCI_BASE_ADDRESS_MEM_TYPE_MASK) ==
+                       PCI_BASE_ADDRESS_MEM_TYPE_32)
+               goto found;
+
+       i = 2;
+       flags = pci_resource_flags(dev, i);
+       if ((flags & PCI_BASE_ADDRESS_SPACE) ==
+                       PCI_BASE_ADDRESS_SPACE_MEMORY &&
+           (flags & PCI_BASE_ADDRESS_MEM_TYPE_MASK) ==
+                       PCI_BASE_ADDRESS_MEM_TYPE_64)
+               goto found;
+
+       return;
+found:
+       start = pci_resource_start(dev, i);
+       size = pci_resource_len(dev, i);
+       if (!start || size != 0x400000 || start & (size - 1))
+               return;
+
+       pci_write_config_dword(dev, 0x10 + i * 4, 0);
+       pci_resource_start(dev, i) = 0;
+       pci_resource_end(dev, i) = size - 1;
+       pci_write_config_dword(dev, 0x184, start);
+       pci_write_config_dword(dev, 0x190, start + size / 2);
+
+       dev_info(&dev->dev, "use Flash Memory Space for SR-IOV BARs\n");
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x10c9, intel_82576_quirk);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x10e6, intel_82576_quirk);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x10e7, intel_82576_quirk);
+#endif /* CONFIG_PCI_IOV */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [linux-2.6.18-xen] PCI: add a SR-IOV quirk for Intel 82576 NIC, Xen patchbot-linux-2.6.18-xen <=