Message ID | 201209072328.30553.rjw@sisk.pl (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Fri, Sep 7, 2012 at 2:28 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote: > From: Oliver Neukum <oliver@neukum.org> > Subject: pciehp: always implement resume > > The driver by default ignores resume. On some laptops > that means that interrupts are not delivered after S3. > So card removals and insertions will not be handled. Requiring > a forced load isn't right. > > Signed-off-by: Oliver Neukum <oneukum@suse.de> > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> I applied this (with fixed From: email address and slightly modified changelog) to http://git.kernel.org/?p=linux/kernel/git/helgaas/pci.git;a=shortlog;h=refs/heads/pci/oliver-pciehp-resume and will merge it to "next" after Fengguang's build/smoke tests. Thanks! Bjorn > --- > drivers/pci/hotplug/pciehp_core.c | 28 ++++++++++++++-------------- > drivers/pci/hotplug/pciehp_core.c | 28 ++++++++++++++-------------- > 1 file changed, 14 insertions(+), 14 deletions(-) > > Index: linux/drivers/pci/hotplug/pciehp_core.c > =================================================================== > --- linux.orig/drivers/pci/hotplug/pciehp_core.c > +++ linux/drivers/pci/hotplug/pciehp_core.c > @@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_d > > static int pciehp_resume (struct pcie_device *dev) > { > + struct controller *ctrl; > + struct slot *slot; > + u8 status; > + > dev_info(&dev->device, "%s ENTRY\n", __func__); > - if (pciehp_force) { > - struct controller *ctrl = get_service_data(dev); > - struct slot *slot; > - u8 status; > + ctrl = get_service_data(dev); > > - /* reinitialize the chipset's event detection logic */ > - pcie_enable_notification(ctrl); > + /* reinitialize the chipset's event detection logic */ > + pcie_enable_notification(ctrl); > > - slot = ctrl->slot; > + slot = ctrl->slot; > > - /* Check if slot is occupied */ > - pciehp_get_adapter_status(slot, &status); > - if (status) > - pciehp_enable_slot(slot); > - else > - pciehp_disable_slot(slot); > - } > + /* Check if slot is occupied */ > + pciehp_get_adapter_status(slot, &status); > + if (status) > + pciehp_enable_slot(slot); > + else > + pciehp_disable_slot(slot); > return 0; > } > #endif /* PM */ -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
+cc Mark & Kristen Commit cd2fe83a815 by Mark added the code we're changing here, so this is your chance to speak up if we're not doing the right thing :) On Fri, Sep 7, 2012 at 4:28 PM, Bjorn Helgaas <bhelgaas@google.com> wrote: > On Fri, Sep 7, 2012 at 2:28 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote: >> From: Oliver Neukum <oliver@neukum.org> >> Subject: pciehp: always implement resume >> >> The driver by default ignores resume. On some laptops >> that means that interrupts are not delivered after S3. >> So card removals and insertions will not be handled. Requiring >> a forced load isn't right. >> >> Signed-off-by: Oliver Neukum <oneukum@suse.de> >> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> > > I applied this (with fixed From: email address and slightly modified > changelog) to http://git.kernel.org/?p=linux/kernel/git/helgaas/pci.git;a=shortlog;h=refs/heads/pci/oliver-pciehp-resume > and will merge it to "next" after Fengguang's build/smoke tests. > > Thanks! > > Bjorn > >> --- >> drivers/pci/hotplug/pciehp_core.c | 28 ++++++++++++++-------------- >> drivers/pci/hotplug/pciehp_core.c | 28 ++++++++++++++-------------- >> 1 file changed, 14 insertions(+), 14 deletions(-) >> >> Index: linux/drivers/pci/hotplug/pciehp_core.c >> =================================================================== >> --- linux.orig/drivers/pci/hotplug/pciehp_core.c >> +++ linux/drivers/pci/hotplug/pciehp_core.c >> @@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_d >> >> static int pciehp_resume (struct pcie_device *dev) >> { >> + struct controller *ctrl; >> + struct slot *slot; >> + u8 status; >> + >> dev_info(&dev->device, "%s ENTRY\n", __func__); >> - if (pciehp_force) { >> - struct controller *ctrl = get_service_data(dev); >> - struct slot *slot; >> - u8 status; >> + ctrl = get_service_data(dev); >> >> - /* reinitialize the chipset's event detection logic */ >> - pcie_enable_notification(ctrl); >> + /* reinitialize the chipset's event detection logic */ >> + pcie_enable_notification(ctrl); >> >> - slot = ctrl->slot; >> + slot = ctrl->slot; >> >> - /* Check if slot is occupied */ >> - pciehp_get_adapter_status(slot, &status); >> - if (status) >> - pciehp_enable_slot(slot); >> - else >> - pciehp_disable_slot(slot); >> - } >> + /* Check if slot is occupied */ >> + pciehp_get_adapter_status(slot, &status); >> + if (status) >> + pciehp_enable_slot(slot); >> + else >> + pciehp_disable_slot(slot); >> return 0; >> } >> #endif /* PM */ -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[fix Kristen's email addr] On Fri, Sep 7, 2012 at 5:33 PM, Bjorn Helgaas <bhelgaas@google.com> wrote: > +cc Mark & Kristen > > Commit cd2fe83a815 by Mark added the code we're changing here, so this > is your chance to speak up if we're not doing the right thing :) > > On Fri, Sep 7, 2012 at 4:28 PM, Bjorn Helgaas <bhelgaas@google.com> wrote: >> On Fri, Sep 7, 2012 at 2:28 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote: >>> From: Oliver Neukum <oliver@neukum.org> >>> Subject: pciehp: always implement resume >>> >>> The driver by default ignores resume. On some laptops >>> that means that interrupts are not delivered after S3. >>> So card removals and insertions will not be handled. Requiring >>> a forced load isn't right. >>> >>> Signed-off-by: Oliver Neukum <oneukum@suse.de> >>> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> >> >> I applied this (with fixed From: email address and slightly modified >> changelog) to http://git.kernel.org/?p=linux/kernel/git/helgaas/pci.git;a=shortlog;h=refs/heads/pci/oliver-pciehp-resume >> and will merge it to "next" after Fengguang's build/smoke tests. >> >> Thanks! >> >> Bjorn >> >>> --- >>> drivers/pci/hotplug/pciehp_core.c | 28 ++++++++++++++-------------- >>> drivers/pci/hotplug/pciehp_core.c | 28 ++++++++++++++-------------- >>> 1 file changed, 14 insertions(+), 14 deletions(-) >>> >>> Index: linux/drivers/pci/hotplug/pciehp_core.c >>> =================================================================== >>> --- linux.orig/drivers/pci/hotplug/pciehp_core.c >>> +++ linux/drivers/pci/hotplug/pciehp_core.c >>> @@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_d >>> >>> static int pciehp_resume (struct pcie_device *dev) >>> { >>> + struct controller *ctrl; >>> + struct slot *slot; >>> + u8 status; >>> + >>> dev_info(&dev->device, "%s ENTRY\n", __func__); >>> - if (pciehp_force) { >>> - struct controller *ctrl = get_service_data(dev); >>> - struct slot *slot; >>> - u8 status; >>> + ctrl = get_service_data(dev); >>> >>> - /* reinitialize the chipset's event detection logic */ >>> - pcie_enable_notification(ctrl); >>> + /* reinitialize the chipset's event detection logic */ >>> + pcie_enable_notification(ctrl); >>> >>> - slot = ctrl->slot; >>> + slot = ctrl->slot; >>> >>> - /* Check if slot is occupied */ >>> - pciehp_get_adapter_status(slot, &status); >>> - if (status) >>> - pciehp_enable_slot(slot); >>> - else >>> - pciehp_disable_slot(slot); >>> - } >>> + /* Check if slot is occupied */ >>> + pciehp_get_adapter_status(slot, &status); >>> + if (status) >>> + pciehp_enable_slot(slot); >>> + else >>> + pciehp_disable_slot(slot); >>> return 0; >>> } >>> #endif /* PM */ -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: linux/drivers/pci/hotplug/pciehp_core.c =================================================================== --- linux.orig/drivers/pci/hotplug/pciehp_core.c +++ linux/drivers/pci/hotplug/pciehp_core.c @@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_d static int pciehp_resume (struct pcie_device *dev) { + struct controller *ctrl; + struct slot *slot; + u8 status; + dev_info(&dev->device, "%s ENTRY\n", __func__); - if (pciehp_force) { - struct controller *ctrl = get_service_data(dev); - struct slot *slot; - u8 status; + ctrl = get_service_data(dev); - /* reinitialize the chipset's event detection logic */ - pcie_enable_notification(ctrl); + /* reinitialize the chipset's event detection logic */ + pcie_enable_notification(ctrl); - slot = ctrl->slot; + slot = ctrl->slot; - /* Check if slot is occupied */ - pciehp_get_adapter_status(slot, &status); - if (status) - pciehp_enable_slot(slot); - else - pciehp_disable_slot(slot); - } + /* Check if slot is occupied */ + pciehp_get_adapter_status(slot, &status); + if (status) + pciehp_enable_slot(slot); + else + pciehp_disable_slot(slot); return 0; } #endif /* PM */