diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-05-09 16:27:58 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-05-09 16:27:58 -0700 |
commit | fbbd5ef9fa373ca30e5a302a432e5482aafff7fd (patch) | |
tree | 457e8c2580133c9204095f3fbbe079e05accf8c0 /pci | |
parent | f628fa265a01b8223d60715906b86cffdc72d5f4 (diff) | |
download | patches-fbbd5ef9fa373ca30e5a302a432e5482aafff7fd.tar.gz |
more patches
Diffstat (limited to 'pci')
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; + } |