lkml.org 
[lkml]   [2012]   [Sep]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [Resend][PATCH] pciehp: always implement resume
[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 */


\
 
 \ /
  Last update: 2012-09-08 05:41    [W:0.070 / U:0.164 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site