2011-03-05 12:22:11

by Rafael J. Wysocki

[permalink] [raw]
Subject: [PATCH] PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

From: Rafael J. Wysocki <[email protected]>

We need to distinguish the situation in which ASPM support is
disabled from the command line or through .config from the situation
in which it is disabled, because the hardware or BIOS can't handle
it. In the former case we should not report ASPM support to the BIOS
through ACPI _OSC, but in the latter case we should do that.

Introduce pcie_aspm_support_enabled() that can be used by
acpi_pci_root_add() to determine whether or not it should report ASPM
support to the BIOS through _OSC.

References: https://bugzilla.kernel.org/show_bug.cgi?id=29722
References: https://bugzilla.kernel.org/show_bug.cgi?id=20232
Reported-and-tested-by: Ortwin Glück <[email protected]>
Signed-off-by: Rafael J. Wysocki <[email protected]>
---
drivers/acpi/pci_root.c | 2 +-
drivers/pci/pcie/aspm.c | 7 +++++++
include/linux/pci.h | 7 +++----
3 files changed, 11 insertions(+), 5 deletions(-)

Index: linux-2.6/drivers/pci/pcie/aspm.c
===================================================================
--- linux-2.6.orig/drivers/pci/pcie/aspm.c
+++ linux-2.6/drivers/pci/pcie/aspm.c
@@ -69,6 +69,7 @@ struct pcie_link_state {
};

static int aspm_disabled, aspm_force, aspm_clear_state;
+static bool aspm_support_enabled = true;
static DEFINE_MUTEX(aspm_lock);
static LIST_HEAD(link_list);

@@ -896,6 +897,7 @@ static int __init pcie_aspm_disable(char
{
if (!strcmp(str, "off")) {
aspm_disabled = 1;
+ aspm_support_enabled = false;
printk(KERN_INFO "PCIe ASPM is disabled\n");
} else if (!strcmp(str, "force")) {
aspm_force = 1;
@@ -930,3 +932,8 @@ int pcie_aspm_enabled(void)
}
EXPORT_SYMBOL(pcie_aspm_enabled);

+bool pcie_aspm_support_enabled(void)
+{
+ return aspm_support_enabled;
+}
+EXPORT_SYMBOL(pcie_aspm_support_enabled);
Index: linux-2.6/drivers/acpi/pci_root.c
===================================================================
--- linux-2.6.orig/drivers/acpi/pci_root.c
+++ linux-2.6/drivers/acpi/pci_root.c
@@ -564,7 +564,7 @@ static int __devinit acpi_pci_root_add(s
/* Indicate support for various _OSC capabilities. */
if (pci_ext_cfg_avail(root->bus->self))
flags |= OSC_EXT_PCI_CONFIG_SUPPORT;
- if (pcie_aspm_enabled())
+ if (pcie_aspm_support_enabled())
flags |= OSC_ACTIVE_STATE_PWR_SUPPORT |
OSC_CLOCK_PWR_CAPABILITY_SUPPORT;
if (pci_msi_enabled())
Index: linux-2.6/include/linux/pci.h
===================================================================
--- linux-2.6.orig/include/linux/pci.h
+++ linux-2.6/include/linux/pci.h
@@ -1002,12 +1002,11 @@ extern bool pcie_ports_auto;
#endif

#ifndef CONFIG_PCIEASPM
-static inline int pcie_aspm_enabled(void)
-{
- return 0;
-}
+static inline int pcie_aspm_enabled(void) { return 0; }
+static inline bool pcie_aspm_support_enabled(void) { return false; }
#else
extern int pcie_aspm_enabled(void);
+extern bool pcie_aspm_support_enabled(void);
#endif

#ifdef CONFIG_PCIEAER


2011-03-18 01:10:54

by Kenji Kaneshige

[permalink] [raw]
Subject: Re: [PATCH] PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

Jesse,

This patch fixes the problem that PCIe hotplug no longer work in 2.6.38
on my platform (ASPM is disabled through ACPI FADT in my platform).
I think this need to be applied soon.

Reviewed-by: Kenji Kaneshige <[email protected]>
Tested-by: Kenji Kaneshige <[email protected]>

Regards,
Kenji Kaneshige


(2011/03/05 21:21), Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki<[email protected]>
>
> We need to distinguish the situation in which ASPM support is
> disabled from the command line or through .config from the situation
> in which it is disabled, because the hardware or BIOS can't handle
> it. In the former case we should not report ASPM support to the BIOS
> through ACPI _OSC, but in the latter case we should do that.
>
> Introduce pcie_aspm_support_enabled() that can be used by
> acpi_pci_root_add() to determine whether or not it should report ASPM
> support to the BIOS through _OSC.
>
> References: https://bugzilla.kernel.org/show_bug.cgi?id=29722
> References: https://bugzilla.kernel.org/show_bug.cgi?id=20232
> Reported-and-tested-by: Ortwin Glück<[email protected]>
> Signed-off-by: Rafael J. Wysocki<[email protected]>
> ---
> drivers/acpi/pci_root.c | 2 +-
> drivers/pci/pcie/aspm.c | 7 +++++++
> include/linux/pci.h | 7 +++----
> 3 files changed, 11 insertions(+), 5 deletions(-)
>
> Index: linux-2.6/drivers/pci/pcie/aspm.c
> ===================================================================
> --- linux-2.6.orig/drivers/pci/pcie/aspm.c
> +++ linux-2.6/drivers/pci/pcie/aspm.c
> @@ -69,6 +69,7 @@ struct pcie_link_state {
> };
>
> static int aspm_disabled, aspm_force, aspm_clear_state;
> +static bool aspm_support_enabled = true;
> static DEFINE_MUTEX(aspm_lock);
> static LIST_HEAD(link_list);
>
> @@ -896,6 +897,7 @@ static int __init pcie_aspm_disable(char
> {
> if (!strcmp(str, "off")) {
> aspm_disabled = 1;
> + aspm_support_enabled = false;
> printk(KERN_INFO "PCIe ASPM is disabled\n");
> } else if (!strcmp(str, "force")) {
> aspm_force = 1;
> @@ -930,3 +932,8 @@ int pcie_aspm_enabled(void)
> }
> EXPORT_SYMBOL(pcie_aspm_enabled);
>
> +bool pcie_aspm_support_enabled(void)
> +{
> + return aspm_support_enabled;
> +}
> +EXPORT_SYMBOL(pcie_aspm_support_enabled);
> Index: linux-2.6/drivers/acpi/pci_root.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/pci_root.c
> +++ linux-2.6/drivers/acpi/pci_root.c
> @@ -564,7 +564,7 @@ static int __devinit acpi_pci_root_add(s
> /* Indicate support for various _OSC capabilities. */
> if (pci_ext_cfg_avail(root->bus->self))
> flags |= OSC_EXT_PCI_CONFIG_SUPPORT;
> - if (pcie_aspm_enabled())
> + if (pcie_aspm_support_enabled())
> flags |= OSC_ACTIVE_STATE_PWR_SUPPORT |
> OSC_CLOCK_PWR_CAPABILITY_SUPPORT;
> if (pci_msi_enabled())
> Index: linux-2.6/include/linux/pci.h
> ===================================================================
> --- linux-2.6.orig/include/linux/pci.h
> +++ linux-2.6/include/linux/pci.h
> @@ -1002,12 +1002,11 @@ extern bool pcie_ports_auto;
> #endif
>
> #ifndef CONFIG_PCIEASPM
> -static inline int pcie_aspm_enabled(void)
> -{
> - return 0;
> -}
> +static inline int pcie_aspm_enabled(void) { return 0; }
> +static inline bool pcie_aspm_support_enabled(void) { return false; }
> #else
> extern int pcie_aspm_enabled(void);
> +extern bool pcie_aspm_support_enabled(void);
> #endif
>
> #ifdef CONFIG_PCIEAER
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>

2011-03-18 01:26:11

by Matthew Garrett

[permalink] [raw]
Subject: Re: [PATCH] PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

On Fri, Mar 18, 2011 at 10:10:20AM +0900, Kenji Kaneshige wrote:
> Jesse,
>
> This patch fixes the problem that PCIe hotplug no longer work in 2.6.38
> on my platform (ASPM is disabled through ACPI FADT in my platform).
> I think this need to be applied soon.
>
> Reviewed-by: Kenji Kaneshige <[email protected]>
> Tested-by: Kenji Kaneshige <[email protected]>

Yes, I think we need to look at -stable for this one.

--
Matthew Garrett | [email protected]

2011-03-18 04:42:13

by Jesse Barnes

[permalink] [raw]
Subject: Re: [PATCH] PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

On Fri, 18 Mar 2011 01:25:56 +0000
Matthew Garrett <[email protected]> wrote:

> On Fri, Mar 18, 2011 at 10:10:20AM +0900, Kenji Kaneshige wrote:
> > Jesse,
> >
> > This patch fixes the problem that PCIe hotplug no longer work in
> > 2.6.38 on my platform (ASPM is disabled through ACPI FADT in my
> > platform). I think this need to be applied soon.
> >
> > Reviewed-by: Kenji Kaneshige <[email protected]>
> > Tested-by: Kenji Kaneshige <[email protected]>
>
> Yes, I think we need to look at -stable for this one.

Ok, thanks guys. I'll queue it up in -fixes and send it to Linus after
my 2.6.39 pull req with a cc for stable.

Jesse

2011-03-18 17:41:26

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

On Friday, March 18, 2011, Jesse Barnes wrote:
> On Fri, 18 Mar 2011 01:25:56 +0000
> Matthew Garrett <[email protected]> wrote:
>
> > On Fri, Mar 18, 2011 at 10:10:20AM +0900, Kenji Kaneshige wrote:
> > > Jesse,
> > >
> > > This patch fixes the problem that PCIe hotplug no longer work in
> > > 2.6.38 on my platform (ASPM is disabled through ACPI FADT in my
> > > platform). I think this need to be applied soon.
> > >
> > > Reviewed-by: Kenji Kaneshige <[email protected]>
> > > Tested-by: Kenji Kaneshige <[email protected]>
> >
> > Yes, I think we need to look at -stable for this one.
>
> Ok, thanks guys. I'll queue it up in -fixes and send it to Linus after
> my 2.6.39 pull req with a cc for stable.

Well, I thought you could simply include it into the pull request. :-)

Thanks,
Rafael

2011-03-18 17:53:05

by Jesse Barnes

[permalink] [raw]
Subject: Re: [PATCH] PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

On Fri, 18 Mar 2011 18:41:28 +0100
"Rafael J. Wysocki" <[email protected]> wrote:

> On Friday, March 18, 2011, Jesse Barnes wrote:
> > On Fri, 18 Mar 2011 01:25:56 +0000
> > Matthew Garrett <[email protected]> wrote:
> >
> > > On Fri, Mar 18, 2011 at 10:10:20AM +0900, Kenji Kaneshige wrote:
> > > > Jesse,
> > > >
> > > > This patch fixes the problem that PCIe hotplug no longer work in
> > > > 2.6.38 on my platform (ASPM is disabled through ACPI FADT in my
> > > > platform). I think this need to be applied soon.
> > > >
> > > > Reviewed-by: Kenji Kaneshige <[email protected]>
> > > > Tested-by: Kenji Kaneshige <[email protected]>
> > >
> > > Yes, I think we need to look at -stable for this one.
> >
> > Ok, thanks guys. I'll queue it up in -fixes and send it to Linus after
> > my 2.6.39 pull req with a cc for stable.
>
> Well, I thought you could simply include it into the pull request. :-)

I could have if I had applied it last week...

--
Jesse Barnes, Intel Open Source Technology Center

2011-03-21 16:38:06

by Jesse Barnes

[permalink] [raw]
Subject: Re: [PATCH] PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

On Fri, 18 Mar 2011 18:41:28 +0100
"Rafael J. Wysocki" <[email protected]> wrote:

> On Friday, March 18, 2011, Jesse Barnes wrote:
> > On Fri, 18 Mar 2011 01:25:56 +0000
> > Matthew Garrett <[email protected]> wrote:
> >
> > > On Fri, Mar 18, 2011 at 10:10:20AM +0900, Kenji Kaneshige wrote:
> > > > Jesse,
> > > >
> > > > This patch fixes the problem that PCIe hotplug no longer work in
> > > > 2.6.38 on my platform (ASPM is disabled through ACPI FADT in my
> > > > platform). I think this need to be applied soon.
> > > >
> > > > Reviewed-by: Kenji Kaneshige <[email protected]>
> > > > Tested-by: Kenji Kaneshige <[email protected]>
> > >
> > > Yes, I think we need to look at -stable for this one.
> >
> > Ok, thanks guys. I'll queue it up in -fixes and send it to Linus after
> > my 2.6.39 pull req with a cc for stable.
>
> Well, I thought you could simply include it into the pull request. :-)

Applied, I'll send it to Linus this week.

Thanks,
--
Jesse Barnes, Intel Open Source Technology Center