Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 1407

kernel-2.6.18-238.el5.src.rpm

From: Konrad Rzeszutek <konradr@redhat.com>
Date: Wed, 3 Oct 2007 14:49:27 -0400
Subject: [hotplug] acpiphp: System error during PCI hotplug
Message-id: 20071003184927.GA16783@mars.boston.redhat.com
O-Subject: [RHEL5 U2 PATCH] BZ#243003 - LTC35259-System error during PCI hotplug
Bugzilla: 243003

RHBZ#:
------
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243003

Description:
------------
The ACPI PCI hotplug driver 'acpiphp' triggers an SERR during
a PCI hotplug operation on the IBM x3850.

We have determined that this is happening because 'acpiphp'
is incorrectly writing hot plug parameters to the PCI host
bridge.

RHEL Version Found:
------------------
RHEL5

kABI Status:
------------
No broken symbols.

Brew:
-----
Built on all platforms.

Upstream Status:
----------------
git commit 9ef2241b18266d75319e7d66156243bd9010be44

Test Status:
------------
Tested on the affective machines with a stock kernel and with the patched
kernel. Tests worked with the patched kernel. Also I tested for regression
the kernel on other machines  (Dell, HP, and other IBM boxes) without
any fault.

Proposed Patch:
---------------
This patch is based on 2.6.18-51.el5

acpiphp is writing hot plug parameters to the PCI host bridge
PCI config space.  This patch removes the incorrect operation.

Signed-off-by: Gary Hade <garyhade@us.ibm.com>

Acked-by: Alan Cox <alan@redhat.com>
Acked-by: Prarit Bhargava <prarit@redhat.com>
---
 drivers/pci/hotplug/acpiphp_glue.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index a67702f..7e2867c 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -1369,6 +1369,9 @@ static void program_hpp(struct pci_dev *dev, struct acpiphp_bridge *bridge)
 			(dev->class >> 8) == PCI_CLASS_BRIDGE_PCI)))
 		return;
 
+	if ((dev->class >> 8) == PCI_CLASS_BRIDGE_HOST)
+		return;
+
 	pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE,
 			bridge->hpp.t0->cache_line_size);
 	pci_write_config_byte(dev, PCI_LATENCY_TIMER,
-- 
1.5.3.5.645.gbb47