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 <kaneshige.kenji@xxxxxxxxxxxxxx> Tested-by: Kenji Kaneshige <kaneshige.kenji@xxxxxxxxxxxxxx> Regards, Kenji Kaneshige (2011/03/05 21:21), Rafael J. Wysocki wrote: > From: Rafael J. Wysocki<rjw@xxxxxxx> > > 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<odi@xxxxxx> > Signed-off-by: Rafael J. Wysocki<rjw@xxxxxxx> > --- > 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 majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > > _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm