From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
"Theodore Ts'o" <tytso@mit.edu>,
Randy Dunlap <rdunlap@xenotime.net>,
Dave Jones <davej@redhat.com>,
Chuck Wolber <chuckw@quantumlinux.com>,
Chris Wedgwood <reviews@ml.cw.f00f.org>,
Michael Krufky <mkrufky@linuxtv.org>,
Chuck Ebbert <cebbert@redhat.com>,
Domenico Andreoli <cavokz@gmail.com>, Willy Tarreau <w@1wt.eu>,
Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
Jake Edge <jake@lwn.net>, Eugene Teo <eteo@redhat.com>,
torvalds@linux-foundation.org, akpm@linux-foundation.org,
alan@lxorguk.ukuu.org.uk, Jesse Barnes <jbarnes@virtuousgeek.org>,
Shaohua Li <shaohua.li@intel.com>
Subject: [patch 20/26] PCI: disable ASPM on pre-1.1 PCIe devices
Date: Sat, 18 Oct 2008 11:48:09 -0700 [thread overview]
Message-ID: <20081018184809.GT301@suse.de> (raw)
In-Reply-To: <20081018184708.GA301@suse.de>
[-- Attachment #1: pci-disable-aspm-on-pre-1.1-pcie-devices.patch --]
[-- Type: text/plain, Size: 2346 bytes --]
2.6.26-stable review patch. If anyone has any objections, please let us
know.
------------------
From: Shaohua Li <shaohua.li@intel.com>
commit 149e16372a2066c5474d8a8db9b252afd57eb427 upstream
Disable ASPM on pre-1.1 PCIe devices, as many of them don't implement it
correctly.
Tested-by: Jack Howarth <howarth@bromo.msbb.uc.edu>
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/pci/pcie/aspm.c | 13 +++++++++++++
drivers/pci/probe.c | 3 ++-
include/linux/pci_regs.h | 1 +
3 files changed, 16 insertions(+), 1 deletion(-)
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -510,6 +510,7 @@ static int pcie_aspm_sanity_check(struct
{
struct pci_dev *child_dev;
int child_pos;
+ u32 reg32;
/*
* Some functions in a slot might not all be PCIE functions, very
@@ -519,6 +520,18 @@ static int pcie_aspm_sanity_check(struct
child_pos = pci_find_capability(child_dev, PCI_CAP_ID_EXP);
if (!child_pos)
return -EINVAL;
+
+ /*
+ * Disable ASPM for pre-1.1 PCIe device, we follow MS to use
+ * RBER bit to determine if a function is 1.1 version device
+ */
+ pci_read_config_dword(child_dev, child_pos + PCI_EXP_DEVCAP,
+ ®32);
+ if (!(reg32 & PCI_EXP_DEVCAP_RBER)) {
+ printk("Pre-1.1 PCIe device detected, "
+ "disable ASPM for %s\n", pci_name(pdev));
+ return -EINVAL;
+ }
}
return 0;
}
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1047,7 +1047,8 @@ int pci_scan_slot(struct pci_bus *bus, i
}
}
- if (bus->self)
+ /* only one slot has pcie device */
+ if (bus->self && nr)
pcie_aspm_init_link_state(bus->self);
return nr;
--- a/include/linux/pci_regs.h
+++ b/include/linux/pci_regs.h
@@ -373,6 +373,7 @@
#define PCI_EXP_DEVCAP_ATN_BUT 0x1000 /* Attention Button Present */
#define PCI_EXP_DEVCAP_ATN_IND 0x2000 /* Attention Indicator Present */
#define PCI_EXP_DEVCAP_PWR_IND 0x4000 /* Power Indicator Present */
+#define PCI_EXP_DEVCAP_RBER 0x8000 /* Role-Based Error Reporting */
#define PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */
#define PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */
#define PCI_EXP_DEVCTL 8 /* Device Control */
--
next prev parent reply other threads:[~2008-10-18 19:16 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20081018183853.004667035@mini.kroah.org>
2008-10-18 18:47 ` [patch 00/26] 2.6.26-stable review Greg KH
2008-10-18 18:47 ` [patch 01/26] x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap Greg KH
2008-10-18 18:47 ` [patch 02/26] x86: improve UP kernel when CPU-hotplug and SMP is enabled Greg KH
2008-10-18 18:47 ` [patch 03/26] x86, early_ioremap: fix fencepost error Greg KH
2008-10-18 18:47 ` [patch 04/26] tty: Termios locking - sort out real_tty confusions and lock reads Greg KH
2008-10-18 18:47 ` [patch 05/26] sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq Greg KH
2008-10-18 18:47 ` [patch 06/26] CIFS: make sure we have the right resume info before calling CIFSFindNext Greg KH
2008-10-18 18:47 ` [patch 07/26] b43legacy: Fix failure in rate-adjustment mechanism Greg KH
2008-10-18 18:47 ` [patch 08/26] modules: fix module "notes" kobject leak Greg KH
2008-10-18 18:47 ` [patch 09/26] fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles Greg KH
2008-10-18 18:47 ` [patch 10/26] libata: always do follow-up SRST if hardreset returned -EAGAIN Greg KH
2008-10-18 18:47 ` [patch 11/26] libata: fix EH action overwriting in ata_eh_reset() Greg KH
2008-10-18 18:47 ` [patch 12/26] libata: LBA28/LBA48 off-by-one bug in ata.h Greg KH
2008-10-18 18:47 ` [patch 13/26] V4L: bttv: Prevent NULL pointer dereference in radio_open Greg KH
2008-10-18 18:47 ` [patch 14/26] V4L: zr36067: Fix RGBR pixel format Greg KH
2008-10-18 18:47 ` [patch 15/26] Dont allow splice() to files opened with O_APPEND Greg KH
2008-10-18 18:48 ` [patch 16/26] V4L/DVB (8498): uvcvideo: Return sensible min and max values when querying a boolean control Greg KH
2008-10-18 18:48 ` [patch 17/26] V4L/DVB (8617): uvcvideo: dont use stack-based buffers for USB transfers Greg KH
2008-10-18 18:48 ` [patch 19/26] PCI: disable ASPM per ACPI FADT setting Greg KH
2008-10-18 18:48 ` Greg KH [this message]
2008-10-18 18:48 ` [patch 18/26] V4L/DVB (9053): fix buffer overflow in uvc-video Greg KH
2008-10-18 18:48 ` [patch 21/26] x86: avoid dereferencing beyond stack + THREAD_SIZE Greg KH
2008-10-18 18:48 ` [patch 22/26] Check mapped ranges on sysfs resource files Greg KH
2008-10-18 18:48 ` [patch 23/26] hwmon: (it87) Prevent power-off on Shuttle SN68PT Greg KH
2008-10-18 18:48 ` [patch 24/26] ACPI: Ignore _BQC object when registering backlight device Greg KH
2008-10-18 18:48 ` [patch 25/26] drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831) Greg KH
2008-10-18 18:48 ` [patch 26/26] DVB: au0828: add support for another USB id for Hauppauge HVR950Q Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081018184809.GT301@suse.de \
--to=gregkh@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=cavokz@gmail.com \
--cc=cebbert@redhat.com \
--cc=chuckw@quantumlinux.com \
--cc=davej@redhat.com \
--cc=eteo@redhat.com \
--cc=jake@lwn.net \
--cc=jbarnes@virtuousgeek.org \
--cc=jmforbes@linuxtx.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mkrufky@linuxtv.org \
--cc=rbranco@la.checkpoint.com \
--cc=rdunlap@xenotime.net \
--cc=reviews@ml.cw.f00f.org \
--cc=shaohua.li@intel.com \
--cc=stable@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=tytso@mit.edu \
--cc=w@1wt.eu \
--cc=zwane@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.