lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <35cfd1f2-43eb-fc49-4777-a21413bb2d41@redhat.com>
Date:   Fri, 1 Feb 2019 23:52:14 +0100
From:   Hans de Goede <hdegoede@...hat.com>
To:     Maxim Mikityanskiy <maxtram95@...il.com>,
        Andy Shevchenko <andy@...radead.org>
Cc:     Darren Hart <dvhart@...radead.org>,
        platform-driver-x86@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] platform/x86: intel_int0002_vgpio: Implement irq_set_wake

Hi,

On 1/31/19 8:47 PM, Maxim Mikityanskiy wrote:
> Hi,
> 
> On Mon, Sep 24, 2018 at 5:37 PM Hans de Goede <hdegoede@...hat.com> wrote:
>>
>> We were relying on the interrupt being shared with the ACPI SCI and the
>> ACPI core calling irq_set_wake. But that does not always happen on
>> Bay Trail devices, so we should do it ourselves.
>>
>> This fixes wake from USB not working on various Bay Trail devices.
> 
> This patch breaks suspend on ASUS E202SA (bisecting pointed me to this
> patch, and if I revert it and build 4.20.5 without this patch,
> everything works flawlessly).

Thank you for the bug report, can you please test 4.20.5 with the attached
patch on top? That should fix it. Once I've confirmation that this fixes
things I will submit the patch upstream.

Regards,

Hans


> 
> This command fails with the following message:
> 
> # echo mem > /sys/power/state
> Error while writing to stdout
> write_loop: Device or resource busy
> 
> And here is dmesg output:
> 
> [  224.077275] PM: suspend entry (deep)
> [  224.077286] PM: Syncing filesystems ... done.
> [  225.495014] Freezing user space processes ... (elapsed 0.003 seconds) done.
> [  225.498540] OOM killer disabled.
> [  225.498543] Freezing remaining freezable tasks ... (elapsed 0.002
> seconds) done.
> [  225.500693] printk: Suspending console(s) (use no_console_suspend to debug)
> [  225.502793] wlp1s0: deauthenticating from 00:03:7f:12:34:56 by
> local choice (Reason: 3=DEAUTH_LEAVING)
> [  225.535333] sd 0:0:0:0: [sda] Synchronizing SCSI cache
> [  225.535882] sd 0:0:0:0: [sda] Stopping disk
> [  226.969070] ACPI: EC: interrupt blocked
> [  227.002156] ACPI: Preparing to enter system sleep state S3
> [  227.007890] ACPI: EC: event blocked
> [  227.007895] ACPI: EC: EC stopped
> [  227.007900] PM: Saving platform NVS memory
> [  227.008264] Disabling non-boot CPUs ...
> [  227.034114] smpboot: CPU 1 is now offline
> [  227.088320] smpboot: CPU 2 is now offline
> [  227.141513] smpboot: CPU 3 is now offline
> [  227.147086] Enabling non-boot CPUs ...
> [  227.147187] x86: Booting SMP configuration:
> [  227.147190] smpboot: Booting Node 0 Processor 1 APIC 0x2
> [  227.147916]  cache: parent cpu1 should not be sleeping
> [  227.148354] CPU1 is up
> [  227.148424] smpboot: Booting Node 0 Processor 2 APIC 0x4
> [  227.149800]  cache: parent cpu2 should not be sleeping
> [  227.151143] CPU2 is up
> [  227.151187] smpboot: Booting Node 0 Processor 3 APIC 0x6
> [  227.152399]  cache: parent cpu3 should not be sleeping
> [  227.153883] CPU3 is up
> [  227.154876] ACPI: EC: EC started
> [  227.155282] ACPI: Waking up from system sleep state S3
> [  227.159874] ACPI: button: The lid device is not compliant to SW_LID.
> [  227.169441] ACPI: EC: interrupt unblocked
> [  228.236790] ACPI: EC: event unblocked
> [  228.241950] rtlwifi: rtlwifi: wireless switch is on
> [  228.251865] sd 0:0:0:0: [sda] Starting disk
> [  228.476637] usb 1-4: reset full-speed USB device number 2 using xhci_hcd
> [  228.562879] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
> [  228.563924] ata2: SATA link down (SStatus 4 SControl 300)
> [  228.564979] ata1.00: supports DRM functions and may not be fully accessible
> [  228.565493] ata1.00: NCQ Send/Recv Log not supported
> [  228.567649] ata1.00: supports DRM functions and may not be fully accessible
> [  228.568252] ata1.00: NCQ Send/Recv Log not supported
> [  228.570075] ata1.00: configured for UDMA/133
> [  228.580412] ahci 0000:00:13.0: port does not support device sleep
> [  228.639349] Bluetooth: hci0: RTL: rtl: examining hci_ver=06
> hci_rev=0e2f lmp_ver=06 lmp_subver=a041
> 
> [  228.639368] Bluetooth: hci0: RTL: rtl: unknown IC info, lmp subver
> a041, hci rev 0e2f, hci ver 0006
> [  228.639742] acpi LNXPOWER:01: Turning OFF
> [  228.640033] OOM killer enabled.
> [  228.640040] Restarting tasks ... done.
> [  228.795406] PM: suspend exit
> [  228.800399] audit: type=1130 audit(1548962671.104:94): pid=1 uid=0
> auid=4294967295 ses=4294967295 msg='unit=systemd-rfkill comm="systemd"
> exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=?
> res=success'
> [  229.067206] wlp1s0: authenticate with 12:34:56:78:90:12
> [  229.067823] wlp1s0: send auth to 12:34:56:78:90:12 (try 1/3)
> [  229.070955] wlp1s0: authenticated
> [  229.072395] wlp1s0: associate with 12:34:56:78:90:12 (try 1/3)
> [  229.074505] wlp1s0: RX AssocResp from 12:34:56:78:90:12 (capab=0x11
> status=0 aid=2)
> [  229.074819] wlp1s0: associated
> [  233.809200] audit: type=1131 audit(1548962676.106:95): pid=1 uid=0
> auid=4294967295 ses=4294967295 msg='unit=systemd-rfkill comm="systemd"
> exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=?
> res=success'
> 
> The laptop doesn't go to sleep, the screen turns off, and in a couple
> of seconds it turns on.
> 
> Please take a look at this regression. Feel free to ask me for any
> additional information you need.
> 
> Thanks,
> Max
> 
>> Signed-off-by: Hans de Goede <hdegoede@...hat.com>
>> ---
>>   drivers/platform/x86/intel_int0002_vgpio.c | 16 ++++++++++++++++
>>   1 file changed, 16 insertions(+)
>>
>> diff --git a/drivers/platform/x86/intel_int0002_vgpio.c b/drivers/platform/x86/intel_int0002_vgpio.c
>> index 987a3b03f225..33c3489f5bc1 100644
>> --- a/drivers/platform/x86/intel_int0002_vgpio.c
>> +++ b/drivers/platform/x86/intel_int0002_vgpio.c
>> @@ -106,6 +106,21 @@ static void int0002_irq_mask(struct irq_data *data)
>>          outl(gpe_en_reg, GPE0A_EN_PORT);
>>   }
>>
>> +static int int0002_irq_set_wake(struct irq_data *data, unsigned int on)
>> +{
>> +       struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
>> +       struct platform_device *pdev = to_platform_device(chip->parent);
>> +       int irq = platform_get_irq(pdev, 0);
>> +
>> +       /* Propagate to parent irq */
>> +       if (on)
>> +               enable_irq_wake(irq);
>> +       else
>> +               disable_irq_wake(irq);
>> +
>> +       return 0;
>> +}
>> +
>>   static irqreturn_t int0002_irq(int irq, void *data)
>>   {
>>          struct gpio_chip *chip = data;
>> @@ -128,6 +143,7 @@ static struct irq_chip int0002_irqchip = {
>>          .irq_ack                = int0002_irq_ack,
>>          .irq_mask               = int0002_irq_mask,
>>          .irq_unmask             = int0002_irq_unmask,
>> +       .irq_set_wake           = int0002_irq_set_wake,
>>   };
>>
>>   static int int0002_probe(struct platform_device *pdev)

View attachment "0001-platform-x86-intel_int0002_vgpio-Only-implement-irq_.patch" of type "text/x-patch" (3381 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ