On Friday, October 11, 2013 01:09:33 AM Rafael J. Wysocki wrote: > On Thursday, October 10, 2013 02:37:15 PM Linus Torvalds wrote: > > On Thu, Oct 10, 2013 at 2:35 PM, Rafael J. Wysocki <rjw@xxxxxxxxxxxxx> wrote: > > > > > > Well, I must have overlooked the original report. Is it available anywhere > > > I can find it? > > > > I think Steven has some buggered email system, he has other emails > > being eaten by lkml too, and apparently other mail gateways (because > > you were direct-cc'd on the original). > > Mailer issues aside, I've just seen the original (Bjorn forwarded it to me, > thanks!) and I'm wondering if the message added by the debug patch below is > triggered along with the WARN_ON(). If it is, I think it's better to drop > the WARN_ON(), at least for now (until we sort out the acpiphp/pciehp > coexistence). > > --- > drivers/pci/hotplug/acpiphp_glue.c | 5 +++++ > 1 file changed, 5 insertions(+) > > Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c > =================================================================== > --- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c > +++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c > @@ -991,6 +991,11 @@ void acpiphp_enumerate_slots(struct pci_ > > if (!pci_is_root_bus(bridge->pci_bus)) { > struct acpiphp_context *context; > + struct pci_dev *parent = bridge->pci_bus->parent->self; > + > + if (parent && device_is_managed_by_native_pciehp(parent)) > + dev_warn(&bridge->pci_dev->dev, > + "Parent is managed by pciehp!\n"); > > /* > * This bridge should have been registered as a hotplug function > Steve told me over IRC that the message added by the above triggered along with the WARN_ON(), so this really was the issue I had in mind. So, I asked Steve to test the appended patch and it worked for him. Well, I admit this is a gray area, because we've never tried it, but I think we'll need to try it at one point anyway and see how it goes, so why don't we actually do that now? If it turns out to cause problems to happen for people, we can simply revert it and remove the WARN_ON() instead. And then we'll know that this is problematic. What do you think? Rafael --- From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> Subject: ACPI / hotplug / PCI: Accept coexistence with native PCIe hotplug Allow ACPIPHP (ACPI-based PCI hotplug) to handle event signaling for devices that have already been claimed by the native PCIe hotplug (pciehp). This change prevents the WARN_ON() in acpiphp_enumerate_slots() from triggering unnecessarily for bridges whose parents are managed by pciehp. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> --- drivers/pci/hotplug/acpiphp_glue.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c =================================================================== --- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c +++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c @@ -274,9 +274,6 @@ static acpi_status register_slot(acpi_ha struct pci_dev *pdev = bridge->pci_dev; u32 val; - if (pdev && device_is_managed_by_native_pciehp(pdev)) - return AE_OK; - status = acpi_evaluate_integer(handle, "_ADR", NULL, &adr); if (ACPI_FAILURE(status)) { acpi_handle_warn(handle, "can't evaluate _ADR (%#x)\n", status); @@ -326,7 +323,8 @@ static acpi_status register_slot(acpi_ha list_add_tail(&slot->node, &bridge->slots); /* Register slots for ejectable funtions only. */ - if (acpi_pci_check_ejectable(pbus, handle) || is_dock_device(handle)) { + if ((acpi_pci_check_ejectable(pbus, handle) || is_dock_device(handle)) + && !(pdev && device_is_managed_by_native_pciehp(pdev))) { unsigned long long sun; int retval; -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html