aboutsummaryrefslogtreecommitdiffstats
path: root/pci
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-05-09 16:27:58 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-05-09 16:27:58 -0700
commitfbbd5ef9fa373ca30e5a302a432e5482aafff7fd (patch)
tree457e8c2580133c9204095f3fbbe079e05accf8c0 /pci
parentf628fa265a01b8223d60715906b86cffdc72d5f4 (diff)
downloadpatches-fbbd5ef9fa373ca30e5a302a432e5482aafff7fd.tar.gz
more patches
Diffstat (limited to 'pci')
-rw-r--r--pci/pci-64-bit-resources-drivers-net-changes.patch2
-rw-r--r--pci/pci-add-pci_cap_id_vndr.patch31
-rw-r--r--pci/pci-bus-parity-status-broken-hardware-attribute-edac-foundation.patch84
-rw-r--r--pci/pci-hotplug-fix-recovery-path-from-errors-during-pcie_init.patch83
-rw-r--r--pci/pci-via-quirk-fixup-additional-pci-ids.patch50
-rw-r--r--pci/sgi-hotplug-incorrect-power-status.patch37
6 files changed, 286 insertions, 1 deletions
diff --git a/pci/pci-64-bit-resources-drivers-net-changes.patch b/pci/pci-64-bit-resources-drivers-net-changes.patch
index e60fd8e8434ba..75d94983665fc 100644
--- a/pci/pci-64-bit-resources-drivers-net-changes.patch
+++ b/pci/pci-64-bit-resources-drivers-net-changes.patch
@@ -126,7 +126,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
if ((dev = skge_devinit(hw, 0, using_dac)) == NULL)
--- gregkh-2.6.orig/drivers/net/sky2.c
+++ gregkh-2.6/drivers/net/sky2.c
-@@ -3255,9 +3255,9 @@ static int __devinit sky2_probe(struct p
+@@ -3267,9 +3267,9 @@ static int __devinit sky2_probe(struct p
if (err)
goto err_out_iounmap;
diff --git a/pci/pci-add-pci_cap_id_vndr.patch b/pci/pci-add-pci_cap_id_vndr.patch
new file mode 100644
index 0000000000000..5ac04dff574d9
--- /dev/null
+++ b/pci/pci-add-pci_cap_id_vndr.patch
@@ -0,0 +1,31 @@
+From akpm@osdl.org Tue May 9 10:49:33 2006
+Message-Id: <200605091749.k49HnRbn016281@shell0.pdx.osdl.net>
+From: Brice Goglin <brice@myri.com>
+Subject: PCI: Add PCI_CAP_ID_VNDR
+To: brice@myri.com, greg@kroah.com, mm-commits@vger.kernel.org
+From: akpm@osdl.org
+Date: Tue, 9 May 2006 10:52:09 -0700
+
+From: Brice Goglin <brice@myri.com>
+
+Add the vendor-specific extended capability PCI_CAP_ID_VNDR. It will be
+used by the Myri-10G Ethernet driver (will be submitted soon).
+
+Signed-off-by: Brice Goglin <brice@myri.com>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/pci_regs.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- gregkh-2.6.orig/include/linux/pci_regs.h
++++ gregkh-2.6/include/linux/pci_regs.h
+@@ -197,6 +197,7 @@
+ #define PCI_CAP_ID_CHSWP 0x06 /* CompactPCI HotSwap */
+ #define PCI_CAP_ID_PCIX 0x07 /* PCI-X */
+ #define PCI_CAP_ID_HT_IRQCONF 0x08 /* HyperTransport IRQ Configuration */
++#define PCI_CAP_ID_VNDR 0x09 /* Vendor specific capability */
+ #define PCI_CAP_ID_SHPC 0x0C /* PCI Standard Hot-Plug Controller */
+ #define PCI_CAP_ID_EXP 0x10 /* PCI Express */
+ #define PCI_CAP_ID_MSIX 0x11 /* MSI-X */
diff --git a/pci/pci-bus-parity-status-broken-hardware-attribute-edac-foundation.patch b/pci/pci-bus-parity-status-broken-hardware-attribute-edac-foundation.patch
new file mode 100644
index 0000000000000..c0bf57bd24664
--- /dev/null
+++ b/pci/pci-bus-parity-status-broken-hardware-attribute-edac-foundation.patch
@@ -0,0 +1,84 @@
+From norsk5@yahoo.com Mon May 8 17:12:56 2006
+Message-ID: <20060509000609.62160.qmail@web50101.mail.yahoo.com>
+Date: Mon, 8 May 2006 17:06:09 -0700 (PDT)
+From: Doug Thompson <norsk5@yahoo.com>
+Subject: PCI Bus Parity Status-broken hardware attribute, EDAC foundation
+To: Greg K-H <greg@kroah.com>, <arjan@infradead.org>
+
+Currently, the EDAC (error detection and correction) modules that are in
+the kernel contain some features that need to be moved. After some good
+feedback on the PCI Parity detection code and interface
+(http://www.ussg.iu.edu/hypermail/linux/kernel/0603.1/0897.html) this
+patch ADDs an new attribute to the pci_dev structure: Namely the
+'broken_parity_status' bit.
+
+When set this indicates that the respective hardware generates false
+positives of Parity errors.
+
+The EDAC "blacklist" solution was inferior and will be removed in a
+future patch.
+
+Also in this patch is a PCI quirk.c entry for an Infiniband PCI-X card
+which generates false positive parity errors.
+
+I am requesting comments on this AND on the possibility of a exposing
+this 'broken_parity_status' bit to userland via the PCI device sysfs
+directory for devices. This access would allow for enabling of this
+feature on new devices and for old devices that have their drivers
+updated. (SLES 9 SP3 did this on an ATI motherboard video device). There
+is a need to update such a PCI attribute between kernel releases.
+
+This patch just adds a storage place for the attribute and a quirk entry
+for a known bad PCI device. PCI Parity reaper/harvestor operations are
+in EDAC itself and will be refactored to use this PCI attribute instead
+of its own mechanisms (which are currently disabled) in the future.
+
+Signed-off-by: Doug Thompson <norsk5@xmission.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/quirks.c | 11 +++++++++++
+ include/linux/pci.h | 1 +
+ include/linux/pci_ids.h | 1 +
+ 3 files changed, 13 insertions(+)
+
+--- gregkh-2.6.orig/drivers/pci/quirks.c
++++ gregkh-2.6/drivers/pci/quirks.c
+@@ -24,6 +24,17 @@
+ #include <linux/acpi.h>
+ #include "pci.h"
+
++/* The Mellanox Tavor device gives false positive parity errors
++ * Mark this device with a broken_parity_status, to allow
++ * PCI scanning code to "skip" this now blacklisted device.
++ */
++static void __devinit quirk_mellanox_tavor(struct pci_dev *dev)
++{
++ dev->broken_parity_status = 1; /* This device gives false positives */
++}
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR,quirk_mellanox_tavor);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE,quirk_mellanox_tavor);
++
+ /* Deal with broken BIOS'es that neglect to enable passive release,
+ which can cause problems in combination with the 82441FX/PPro MTRRs */
+ static void __devinit quirk_passive_release(struct pci_dev *dev)
+--- gregkh-2.6.orig/include/linux/pci.h
++++ gregkh-2.6/include/linux/pci.h
+@@ -163,6 +163,7 @@ struct pci_dev {
+ unsigned int is_busmaster:1; /* device is busmaster */
+ unsigned int no_msi:1; /* device may not use msi */
+ unsigned int block_ucfg_access:1; /* userspace config space access is blocked */
++ unsigned int broken_parity_status:1; /* Device generates false positive parity */
+
+ u32 saved_config_space[16]; /* config space saved at suspend time */
+ struct hlist_head saved_cap_space;
+--- gregkh-2.6.orig/include/linux/pci_ids.h
++++ gregkh-2.6/include/linux/pci_ids.h
+@@ -1939,6 +1939,7 @@
+
+ #define PCI_VENDOR_ID_MELLANOX 0x15b3
+ #define PCI_DEVICE_ID_MELLANOX_TAVOR 0x5a44
++#define PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE 0x5a46
+ #define PCI_DEVICE_ID_MELLANOX_ARBEL_COMPAT 0x6278
+ #define PCI_DEVICE_ID_MELLANOX_ARBEL 0x6282
+ #define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c
diff --git a/pci/pci-hotplug-fix-recovery-path-from-errors-during-pcie_init.patch b/pci/pci-hotplug-fix-recovery-path-from-errors-during-pcie_init.patch
new file mode 100644
index 0000000000000..7282db75455fb
--- /dev/null
+++ b/pci/pci-hotplug-fix-recovery-path-from-errors-during-pcie_init.patch
@@ -0,0 +1,83 @@
+From akpm@osdl.org Tue May 9 00:53:11 2006
+Message-Id: <200605090753.k497r6pY002386@shell0.pdx.osdl.net>
+From: "Jan Beulich" <jbeulich@novell.com>
+Subject: PCI Hotplug: Fix recovery path from errors during pcie_init()
+To: jbeulich@novell.com, greg@kroah.com, kristen.c.accardi@intel.com
+Date: Tue, 09 May 2006 00:50:31 -0700
+
+From: "Jan Beulich" <jbeulich@novell.com>
+
+Signed-off-by: Jan Beulich <jbeulich@novell.com>
+Cc: Kristen Accardi <kristen.c.accardi@intel.com>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/hotplug/pciehp_hpc.c | 25 ++++++++++++++++++++-----
+ 1 file changed, 20 insertions(+), 5 deletions(-)
+
+--- gregkh-2.6.orig/drivers/pci/hotplug/pciehp_hpc.c
++++ gregkh-2.6/drivers/pci/hotplug/pciehp_hpc.c
+@@ -1472,7 +1472,7 @@ int pcie_init(struct controller * ctrl,
+ rc = hp_register_read_word(pdev, SLOT_CTRL(ctrl->cap_base), temp_word);
+ if (rc) {
+ err("%s : hp_register_read_word SLOT_CTRL failed\n", __FUNCTION__);
+- goto abort_free_ctlr;
++ goto abort_free_irq;
+ }
+
+ intr_enable = intr_enable | PRSN_DETECT_ENABLE;
+@@ -1498,19 +1498,19 @@ int pcie_init(struct controller * ctrl,
+ rc = hp_register_write_word(pdev, SLOT_CTRL(ctrl->cap_base), temp_word);
+ if (rc) {
+ err("%s : hp_register_write_word SLOT_CTRL failed\n", __FUNCTION__);
+- goto abort_free_ctlr;
++ goto abort_free_irq;
+ }
+ rc = hp_register_read_word(php_ctlr->pci_dev, SLOT_STATUS(ctrl->cap_base), slot_status);
+ if (rc) {
+ err("%s : hp_register_read_word SLOT_STATUS failed\n", __FUNCTION__);
+- goto abort_free_ctlr;
++ goto abort_disable_intr;
+ }
+
+ temp_word = 0x1F; /* Clear all events */
+ rc = hp_register_write_word(php_ctlr->pci_dev, SLOT_STATUS(ctrl->cap_base), temp_word);
+ if (rc) {
+ err("%s : hp_register_write_word SLOT_STATUS failed\n", __FUNCTION__);
+- goto abort_free_ctlr;
++ goto abort_disable_intr;
+ }
+
+ if (pciehp_force) {
+@@ -1519,7 +1519,7 @@ int pcie_init(struct controller * ctrl,
+ } else {
+ rc = pciehp_get_hp_hw_control_from_firmware(ctrl->pci_dev);
+ if (rc)
+- goto abort_free_ctlr;
++ goto abort_disable_intr;
+ }
+
+ /* Add this HPC instance into the HPC list */
+@@ -1546,6 +1546,21 @@ int pcie_init(struct controller * ctrl,
+ return 0;
+
+ /* We end up here for the many possible ways to fail this API. */
++abort_disable_intr:
++ rc = hp_register_read_word(pdev, SLOT_CTRL(ctrl->cap_base), temp_word);
++ if (!rc) {
++ temp_word &= ~(intr_enable | HP_INTR_ENABLE);
++ rc = hp_register_write_word(pdev, SLOT_CTRL(ctrl->cap_base), temp_word);
++ }
++ if (rc)
++ err("%s : disabling interrupts failed\n", __FUNCTION__);
++
++abort_free_irq:
++ if (pciehp_poll_mode)
++ del_timer_sync(&php_ctlr->int_poll_timer);
++ else
++ free_irq(php_ctlr->irq, ctrl);
++
+ abort_free_ctlr:
+ pcie_cap_base = saved_cap_base;
+ kfree(php_ctlr);
diff --git a/pci/pci-via-quirk-fixup-additional-pci-ids.patch b/pci/pci-via-quirk-fixup-additional-pci-ids.patch
new file mode 100644
index 0000000000000..739fd5f60d1fa
--- /dev/null
+++ b/pci/pci-via-quirk-fixup-additional-pci-ids.patch
@@ -0,0 +1,50 @@
+From cw@f00f.org Tue May 9 12:15:10 2006
+Date: Tue, 9 May 2006 12:14:55 -0700
+From: Chris Wedgwood <cw@f00f.org>
+To: Andrew Morton <akpm@osdl.org>
+Cc: <masouds@masoud.ir>, <jeff@garzik.org>, gregkh@suse.de
+Subject: PCI: VIA quirk fixup, additional PCI IDs
+Message-ID: <20060509191455.GA27503@taniwha.stupidest.org>
+Content-Disposition: inline
+
+An earlier commit (75cf7456dd87335f574dcd53c4ae616a2ad71a11) changed
+an overly-zealous PCI quirk to only poke those VIA devices that need
+it. However, some PCI devices were not included in what I hope is now
+the full list.
+
+This should I hope correct this.
+
+Thanks to Masoud Sharbiani <masouds@masoud.ir> for pointing this out
+and testing the fix.
+
+
+Signed-of-By: Chris Wedgwood <cw@f00f.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/quirks.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- gregkh-2.6.orig/drivers/pci/quirks.c
++++ gregkh-2.6/drivers/pci/quirks.c
+@@ -634,6 +634,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_V
+ * non-x86 architectures (yes Via exists on PPC among other places),
+ * we must mask the PCI_INTERRUPT_LINE value versus 0xf to get
+ * interrupts delivered properly.
++ *
++ * Some of the on-chip devices are actually '586 devices' so they are
++ * listed here.
+ */
+ static void quirk_via_irq(struct pci_dev *dev)
+ {
+@@ -648,6 +651,10 @@ static void quirk_via_irq(struct pci_dev
+ pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
+ }
+ }
++DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_via_irq);
++DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, quirk_via_irq);
++DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irq);
++DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_irq);
+ DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
+ DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
+ DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
diff --git a/pci/sgi-hotplug-incorrect-power-status.patch b/pci/sgi-hotplug-incorrect-power-status.patch
new file mode 100644
index 0000000000000..399b3cac426a3
--- /dev/null
+++ b/pci/sgi-hotplug-incorrect-power-status.patch
@@ -0,0 +1,37 @@
+From habeck@sgi.com Sat May 6 07:02:11 2006
+Date: Sat, 6 May 2006 09:01:59 -0500 (CDT)
+From: Mike Habeck <habeck@sgi.com>
+Cc: gregkh@suse.de, habeck@sgi.com, Mike Habeck <habeck@sgi.com>
+Message-Id: <20060506140159.10694.57720.75984@attica.americas.sgi.com>
+Subject: SGI Hotplug: Incorrect power status
+
+This is a repost of a patch submitted by Prarit Bhargava on 01-19-06 that
+never got integrated.
+
+The get_power_status function is currently reporting a bitwise mapping of
+the slot if the slot is powered on. It should return 1 if powered on and
+0 if powered off.
+
+Signed-off-by: Mike Habeck <habeck@sgi.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/hotplug/sgi_hotplug.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- gregkh-2.6.orig/drivers/pci/hotplug/sgi_hotplug.c
++++ gregkh-2.6/drivers/pci/hotplug/sgi_hotplug.c
+@@ -461,10 +461,12 @@ static inline int get_power_status(struc
+ {
+ struct slot *slot = bss_hotplug_slot->private;
+ struct pcibus_info *pcibus_info;
++ u32 power;
+
+ pcibus_info = SN_PCIBUS_BUSSOFT_INFO(slot->pci_bus);
+ mutex_lock(&sn_hotplug_mutex);
+- *value = pcibus_info->pbi_enabled_devices & (1 << slot->device_num);
++ power = pcibus_info->pbi_enabled_devices & (1 << slot->device_num);
++ *value = power ? 1 : 0;
+ mutex_unlock(&sn_hotplug_mutex);
+ return 0;
+ }