Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5459252rwl; Tue, 11 Apr 2023 05:57:25 -0700 (PDT) X-Google-Smtp-Source: AKy350bmthGG14CYu6fZUiUE5B5B7LZQCSBKUxlf5fH7BKfbPdRCaFZJM9TZAH+jPRLO2QghGjEQ X-Received: by 2002:aa7:d5cb:0:b0:4fb:9fd4:6ac5 with SMTP id d11-20020aa7d5cb000000b004fb9fd46ac5mr12544589eds.14.1681217845385; Tue, 11 Apr 2023 05:57:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681217845; cv=none; d=google.com; s=arc-20160816; b=ptQQkeTzJwKMVIhaMp5+UinefV6r0b57wZ6YhOr5alh5yEbCS5plYTUKDqnJ4+uRBD WL/EbBEv6tKwZgbh50H/ZopfPLjZZbGpc08jnDuYWNJ3xyrFf3DQoevC/2u+K3AEMx/W rqSrKESmrhSY3ie6hMsDmghYIgWtWukkMVLk13T5eDBDPbVAV9Vzs6+DWt6gkkw9xZnH k3OjFj8/AXScJl2zNM8Uj369Qh2pZzWz9tEjZEpzwdYJFiNtOuR4IoHGTkA4IaRQyoXr nHROBisOyjo5I5T36SpPbUBGaCP6DT6lvuidglaD2lZLNXE/LkrS40tD8KoMfGsla42z ymRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:reply-to :from:references:cc:to:content-language:subject:user-agent :mime-version:date:message-id; bh=d5hXc/Ix5ZDC3T3elruzWhDmaxFC1rDD4lgxnMzhdxE=; b=v1zyarUFJYSgGVrYEGxV1DJ5U0Lp3g6j4qj9SZ74w6ZqJg+BpFT6q5YRq/Y0bcv8xj J8hZzJzSX3/Iz+bOp6YwTdQE+Aa/sGIfbMlEPqj/djDveWYx45iaeuJk2ck9oTsig7Rf lPzhom1JVOH+6z18eqopVHZKZm4laEgWld1U7qdqaYv3eeu7VNYx9JyvXjzo1cDWDAmP OR5oQyvbp62Mo2VVWCC2VtuEP+PH2botP3/J51Ot/0gmBAak/EKCbL0WxFt2Cg1zm/zZ HYKqYiD3rJGMTEUEbvAgrMaNjeZYN8z0vegDQNxTdP81pnI8f/o/nWWobxD5zPl4cTsQ kpSQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b25-20020aa7dc19000000b00504832f2f8fsi5303434edu.307.2023.04.11.05.56.59; Tue, 11 Apr 2023 05:57:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230052AbjDKMuq (ORCPT + 99 others); Tue, 11 Apr 2023 08:50:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43366 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229555AbjDKMuo (ORCPT ); Tue, 11 Apr 2023 08:50:44 -0400 Received: from wp530.webpack.hosteurope.de (wp530.webpack.hosteurope.de [80.237.130.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C2B03598; Tue, 11 Apr 2023 05:50:43 -0700 (PDT) Received: from [2a02:8108:8980:2478:8cde:aa2c:f324:937e]; authenticated by wp530.webpack.hosteurope.de running ExIM with esmtpsa (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) id 1pmDSK-0004WC-Pv; Tue, 11 Apr 2023 14:50:40 +0200 Message-ID: <37178398-497c-900b-361a-34b1b77517aa@leemhuis.info> Date: Tue, 11 Apr 2023 14:50:40 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [PATCH] pinctrl: amd: Disable and mask interrupts on resume Content-Language: en-US, de-DE To: gregkh@linuxfoundation.org Cc: Basavaraj Natikar , Shyam Sundar S K , Linus Walleij , upstream@semihalf.com, rad@semihalf.com, mattedavis@google.com, stable@vger.kernel.org, Sasha Levin , "Gong, Richard" , Mario Limonciello , =?UTF-8?Q?Kornel_Dul=c4=99ba?= , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org References: <20230320093259.845178-1-korneld@chromium.org> From: "Linux regression tracking (Thorsten Leemhuis)" Reply-To: Linux regressions mailing list In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-bounce-key: webpack.hosteurope.de;regressions@leemhuis.info;1681217443;dc4aeff8; X-HE-SMSGID: 1pmDSK-0004WC-Pv X-Spam-Status: No, score=-2.2 required=5.0 tests=NICE_REPLY_A, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10.04.23 17:29, Gong, Richard wrote: > On 4/10/2023 12:03 AM, Mario Limonciello wrote: >> On 3/20/23 04:32, Kornel Dulęba wrote: >> >>> This fixes a similar problem to the one observed in: >>> commit 4e5a04be88fe ("pinctrl: amd: disable and mask interrupts on >>> probe"). >>> >>> On some systems, during suspend/resume cycle firmware leaves >>> an interrupt enabled on a pin that is not used by the kernel. >>> This confuses the AMD pinctrl driver and causes spurious interrupts. >>> >>> The driver already has logic to detect if a pin is used by the kernel. >>> Leverage it to re-initialize interrupt fields of a pin only if it's not >>> used by us. >>> >>> Signed-off-by: Kornel Dulęba >>> --- >>>   drivers/pinctrl/pinctrl-amd.c | 36 +++++++++++++++++++---------------- >>>   1 file changed, 20 insertions(+), 16 deletions(-) >>> >>> diff --git a/drivers/pinctrl/pinctrl-amd.c >>> b/drivers/pinctrl/pinctrl-amd.c >>> index 9236a132c7ba..609821b756c2 100644 >>> --- a/drivers/pinctrl/pinctrl-amd.c >>> +++ b/drivers/pinctrl/pinctrl-amd.c >>> @@ -872,32 +872,34 @@ static const struct pinconf_ops amd_pinconf_ops >>> = { >>>       .pin_config_group_set = amd_pinconf_group_set, >>>   }; >>>   -static void amd_gpio_irq_init(struct amd_gpio *gpio_dev) >>> +static void amd_gpio_irq_init_pin(struct amd_gpio *gpio_dev, int pin) >>>   { >>> -    struct pinctrl_desc *desc = gpio_dev->pctrl->desc; >>> +    const struct pin_desc *pd; >>>       unsigned long flags; >>>       u32 pin_reg, mask; >>> -    int i; >>>         mask = BIT(WAKE_CNTRL_OFF_S0I3) | BIT(WAKE_CNTRL_OFF_S3) | >>>           BIT(INTERRUPT_MASK_OFF) | BIT(INTERRUPT_ENABLE_OFF) | >>>           BIT(WAKE_CNTRL_OFF_S4); >>>   -    for (i = 0; i < desc->npins; i++) { >>> -        int pin = desc->pins[i].number; >>> -        const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin); >>> - >>> -        if (!pd) >>> -            continue; >>> +    pd = pin_desc_get(gpio_dev->pctrl, pin); >>> +    if (!pd) >>> +        return; >>>   -        raw_spin_lock_irqsave(&gpio_dev->lock, flags); >>> +    raw_spin_lock_irqsave(&gpio_dev->lock, flags); >>> +    pin_reg = readl(gpio_dev->base + pin * 4); >>> +    pin_reg &= ~mask; >>> +    writel(pin_reg, gpio_dev->base + pin * 4); >>> +    raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); >>> +} >>>   -        pin_reg = readl(gpio_dev->base + i * 4); >>> -        pin_reg &= ~mask; >>> -        writel(pin_reg, gpio_dev->base + i * 4); >>> +static void amd_gpio_irq_init(struct amd_gpio *gpio_dev) >>> +{ >>> +    struct pinctrl_desc *desc = gpio_dev->pctrl->desc; >>> +    int i; >>>   -        raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); >>> -    } >>> +    for (i = 0; i < desc->npins; i++) >>> +        amd_gpio_irq_init_pin(gpio_dev, i); >>>   } >>>     #ifdef CONFIG_PM_SLEEP >>> @@ -950,8 +952,10 @@ static int amd_gpio_resume(struct device *dev) >>>       for (i = 0; i < desc->npins; i++) { >>>           int pin = desc->pins[i].number; >>>   -        if (!amd_gpio_should_save(gpio_dev, pin)) >>> +        if (!amd_gpio_should_save(gpio_dev, pin)) { >>> +            amd_gpio_irq_init_pin(gpio_dev, pin); >>>               continue; >>> +        } >>>             raw_spin_lock_irqsave(&gpio_dev->lock, flags); >>>           gpio_dev->saved_regs[i] |= readl(gpio_dev->base + pin * 4) >>> & PIN_IRQ_PENDING; >> >> Hello Kornel, >> >> I've found that this commit which was included in 6.3-rc5 is causing a >> regression waking up from lid on a Lenovo Z13. > observed "unable to wake from power button" on AMD based Dell platform. This sounds like something that we want to fix quickly. > Reverting "pinctrl: amd: Disable and mask interrupts on resume" on the > top of 6.3-rc6 does fix the issue. >> >> Reverting it on top of 6.3-rc6 resolves the problem. >> >> I've collected what I can into this bug report: >> >> https://bugzilla.kernel.org/show_bug.cgi?id=217315 >> >> Linus Walleij, >> >> It looks like this was CC to stable.  If we can't get a quick solution >> we might want to pull this from stable. > > this commit landed into 6.1.23 as well > >         d9c63daa576b2 pinctrl: amd: Disable and mask interrupts on resume It made it back up to 5.10.y afaics. The culprit has no fixes tag, which makes me wonder: should we quickly (e.g. today) revert this in mainline to get back to the previous state, so that Greg can pick up the revert for the next stable releases he apparently currently prepares? Greg, is there another way to make you quickly fix this in the stable trees? One option obviously would be "revert this now in stable, reapply it later together with a fix ". But I'm under the impression that this is too much of a hassle and thus something you only do in dire situations? I'm asking because I over time noticed that quite a few regressions are in a similar situation -- and quite a few of them take quite some time to get fixed even when a developer provided a fix, because reviewing and mainlining the fix takes a week or two (sometimes more). And that is a situation that is more and more hitting a nerve here. :-/ Ciao, Thorsten