Re: [CentOS] Anyone already tried to backport the latest ASPM kernel patch to 6.2?
Michael Lampe wrote: In other words: my BIOS is broken. But it's broken for all Lenovo Notebooks. So ... It seems mine is particularly broken: The BIOS isn't even lying, it realy disables ASPM! That at least is my conclusion after looking at this https://wiki.edubuntu.org/Kernel/PowerManagementASPM and a closer inspection of 'lspci -vvv'. The backported patch may be correct after all. It may be a candiate for centosplus kernel. If someone else wants to test: I can upload a kernel with this patch applied. -Michael ___ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos
[CentOS] Anyone already tried to backport the latest ASPM kernel patch to 6.2?
After going from CentOS 5.7 to 6.2, a lot of things turned out to be much better, but there are also quite some regressions. The most obvious one is power consumption on my notebook. It was notably lower before. The ASPM issue introduced in 2.6.38 was widely reported and discussed, and the 6.2 kernel has exacatly this code as a backport. http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=2f671e2dbff6eb5ef4e2600adbec550c13b8fe72 So I started to experiment with the upstream patch: http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commitdiff;h=3c076351c4027a56d5005a39a0b518a4ba393ce2;hp=69166fbf02c7a21745013f2de037bf7af26e4279 To make it apply, one needs to change 'pci_is_pcie(pdev)' into 'pdev-is_pcie'. One also needs to fiddle a little with the first chunk. I came up with the patch attached, but unfortunately the new kernel showed no improvement. Most probably I got something wrong. Anyone else here who tried this or is interested in sorting this out? Thanks, Michael diff -ur a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c --- a/drivers/acpi/pci_root.c 2012-01-19 19:45:17.0 +0100 +++ b/drivers/acpi/pci_root.c 2012-02-12 03:20:19.104634583 +0100 @@ -33,6 +33,7 @@ #include linux/pci.h #include linux/pci-acpi.h #include linux/acpi.h +#include linux/pci-aspm.h #include acpi/acpi_bus.h #include acpi/acpi_drivers.h #include acpi/apei.h @@ -583,12 +584,21 @@ status = acpi_pci_osc_control_set(device-handle, flags, OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL); - if (ACPI_SUCCESS(status)) + if (ACPI_SUCCESS(status)) { dev_info(root-bus-bridge, ACPI _OSC control (0x%02x) granted\n, flags); - else + if (acpi_gbl_FADT.boot_flags ACPI_FADT_NO_ASPM) { + /* +* We have ASPM control, but the FADT indicates +* that it's unsupported. Clear it. +*/ + pcie_clear_aspm(root-bus); + } + } else { dev_dbg(root-bus-bridge, ACPI _OSC request failed (code %d)\n, status); + pcie_no_aspm(); + } } return 0; diff -ur a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c --- a/drivers/pci/pci-acpi.c2012-01-19 19:44:15.0 +0100 +++ b/drivers/pci/pci-acpi.c2012-02-12 01:39:31.441635301 +0100 @@ -195,7 +195,6 @@ if (acpi_gbl_FADT.boot_flags ACPI_FADT_NO_ASPM) { printk(KERN_INFOACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n); - pcie_clear_aspm(); pcie_no_aspm(); } diff -ur a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c --- a/drivers/pci/pcie/aspm.c 2012-01-19 19:45:17.0 +0100 +++ b/drivers/pci/pcie/aspm.c 2012-02-12 01:39:31.449635162 +0100 @@ -68,7 +68,7 @@ struct aspm_latency acceptable[8]; }; -static int aspm_disabled, aspm_force, aspm_clear_state; +static int aspm_disabled, aspm_force; static bool aspm_support_enabled = true; static DEFINE_MUTEX(aspm_lock); static LIST_HEAD(link_list); @@ -500,9 +500,6 @@ int pos; u32 reg32; - if (aspm_clear_state) - return -EINVAL; - /* * Some functions in a slot might not all be PCIe functions, * very strange. Disable ASPM for the whole slot @@ -574,9 +571,6 @@ pdev-pcie_type != PCI_EXP_TYPE_DOWNSTREAM) return; - if (aspm_disabled !aspm_clear_state) - return; - /* VIA has a strange chipset, root port is under a bridge */ if (pdev-pcie_type == PCI_EXP_TYPE_ROOT_PORT pdev-bus-self) @@ -608,7 +602,7 @@ * the BIOS's expectation, we'll do so once pci_enable_device() is * called. */ - if (aspm_policy != POLICY_POWERSAVE || aspm_clear_state) { + if (aspm_policy != POLICY_POWERSAVE) { pcie_config_aspm_path(link); pcie_set_clkpm(link, policy_to_clkpm_state(link)); } @@ -649,8 +643,7 @@ struct pci_dev *parent = pdev-bus-self; struct pcie_link_state *link, *root, *parent_link; - if ((aspm_disabled !aspm_clear_state) || !pdev-is_pcie || - !parent || !parent-link_state) + if (!pdev-is_pcie || !parent || !parent-link_state) return; if ((parent-pcie_type != PCI_EXP_TYPE_ROOT_PORT) (parent-pcie_type != PCI_EXP_TYPE_DOWNSTREAM)) @@ -712,13 +705,18 @@ * pci_disable_link_state - disable pci device's link state, so the link will * never enter specific states */ -static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool
Re: [CentOS] Anyone already tried to backport the latest ASPM kernel patch to 6.2?
On 12-02-12 23:57, Michael Lampe wrote: After going from CentOS 5.7 to 6.2, a lot of things turned out to be much better, but there are also quite some regressions. The most obvious one is power consumption on my notebook. It was notably lower before. The ASPM issue introduced in 2.6.38 was widely reported and discussed, and the 6.2 kernel has exacatly this code as a backport. http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=2f671e2dbff6eb5ef4e2600adbec550c13b8fe72 So I started to experiment with the upstream patch: http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commitdiff;h=3c076351c4027a56d5005a39a0b518a4ba393ce2;hp=69166fbf02c7a21745013f2de037bf7af26e4279 To make it apply, one needs to change 'pci_is_pcie(pdev)' into 'pdev-is_pcie'. One also needs to fiddle a little with the first chunk. I came up with the patch attached, but unfortunately the new kernel showed no improvement. Most probably I got something wrong. Anyone else here who tried this or is interested in sorting this out? Iirc to enable ASPM on Fedora the kernel must be booted with pcie_aspm=force. Maybe you need to use that option too? For more info see: http://www.phoronix.com/scan.php?page=articleitem=linux_aspm_solutionnum=1 Regards, Patrick ___ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos
Re: [CentOS] Anyone already tried to backport the latest ASPM kernel patch to 6.2?
Patrick Lists wrote: Iirc to enable ASPM on Fedora the kernel must be booted with pcie_aspm=force. Maybe you need to use that option too? For more info see: http://www.phoronix.com/scan.php?page=articleitem=linux_aspm_solutionnum=1 That's no general solution. It may work, but (e.g.) it doesn't work for me on my Thinkpad X301. There are side-effects. The idea of the upstream patch is to mimic Windows: With 3.2.5 ASPM disabled means: When the ACPI says ASPM is disabled Linux will leave it alone, which is what Windows is doing. The assumption is that explicitly disabling ASPM is more problematic than doing nothing. (Copied somewhere from LKML.) In other words: my BIOS is broken. But it's broken for all Lenovo Notebooks. So ... ___ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos
Re: [CentOS] Anyone already tried to backport the latest ASPM kernel patch to 6.2?
On 02/13/2012 12:39 PM, Michael Lampe wrote: Patrick Lists wrote: Iirc to enable ASPM on Fedora the kernel must be booted with pcie_aspm=force. Maybe you need to use that option too? For more info see: http://www.phoronix.com/scan.php?page=articleitem=linux_aspm_solutionnum=1 That's no general solution. It may work, but (e.g.) it doesn't work for me on my Thinkpad X301. There are side-effects. The idea of the upstream patch is to mimic Windows: With 3.2.5 ASPM disabled means: When the ACPI says ASPM is disabled Linux will leave it alone, which is what Windows is doing. The assumption is that explicitly disabling ASPM is more problematic than doing nothing. (Copied somewhere from LKML.) In other words: my BIOS is broken. But it's broken for all Lenovo Notebooks. So ... So for those of us that do not understand the intricacies of ASPM / BIOS / ACPI, how do we ensure we are getting the best (least) power consumption? I have a new ASUS G73S with i7 8 core processor - running CentOS 6.2 and loving it - no idea if this has or does not have ASPM support. What do I need to do to test / check? ___ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos ___ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos
Re: [CentOS] Anyone already tried to backport the latest ASPM kernel patch to 6.2?
Rob Kampen wrote: So for those of us that do not understand the intricacies of ASPM / BIOS / ACPI, how do we ensure we are getting the best (least) power consumption? Hey! I was asking for people who can help me backport the upstream fix! I have a new ASUS G73S with i7 8 core processor - running CentOS 6.2 and loving it - no idea if this has or does not have ASPM support. What do I need to do to test / check? (Nothing. You have a fine battery!) - dmesg | grep -i aspm - lspci -vvv | grep -i aspm - ... - google, phoronix, etc. - ... ___ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos
Re: [CentOS] Anyone already tried to backport the latest ASPM kernel patch to 6.2?
Michael Lampe wrote: Iirc to enable ASPM on Fedora the kernel must be booted with pcie_aspm=force. Maybe you need to use that option too? For more info see: http://www.phoronix.com/scan.php?page=articleitem=linux_aspm_solutionnum=1 That's no general solution. It may work, but (e.g.) it doesn't work for me on my Thinkpad X301. There are side-effects. The idea of the upstream patch is to mimic Windows: With 3.2.5 ASPM disabled means: When the ACPI says ASPM is disabled Linux will leave it alone, which is what Windows is doing. The assumption is that explicitly disabling ASPM is more problematic than doing nothing. (Copied somewhere from LKML.) [addendum] The point is: we are in a grey zone here. pcie_aspm=force is one extreme, the current default behaviour being the other one (explicit disabling!). The BIOS sets up something in-between and then says on inquiry: Never did I do anything! I'm not responsible!. https://lkml.org/lkml/2012/2/7/273 ___ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos