Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp141125img; Wed, 20 Mar 2019 16:12:46 -0700 (PDT) X-Google-Smtp-Source: APXvYqyet0g2mxOOAsF/uEbX3YQRG52uD8drhOMV8sK526mc8ls3N+V6JbifiDdcPyxzqEcjSiDA X-Received: by 2002:a63:ff0c:: with SMTP id k12mr491283pgi.358.1553123566091; Wed, 20 Mar 2019 16:12:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553123566; cv=none; d=google.com; s=arc-20160816; b=iCIc7ux/asDhb9GaCRlFX0lbk/ZtAO5ocQiWfUtPVAXsX0/+I3wOLlU/smmM5Fphk0 XvCXLaXlHiZv6kHhTQSk9OTuaIrFt6aI2s1av4O6Q5gMl0dTF5GMQUvvEPnE5lAzxdPZ qxpdqet7GfZFGp3GYKU+C0wsZy8kNZmWcrsM0WbRbvuGKtdHSWeJ6XE+ZqdWy/tUF6oz XQvYw7j957uh73SFB0EJ78FiOKJ/UsqgTHtpA79xpDw6ssts8PgPe0yx47kCo/Q9f+e7 u1JYwXSVJp+nPQzD84o0fYPcGhV0fZuiw2t457mgDj/lhzMhsQpuVD565DgzAu33v0db dalw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version; bh=LxuFz/8hZxDZcy/HDHdo+KdLu6FiusBXJmBPXmDCquo=; b=V/xjQHDNqWdX2Yhw4Uy2X3hFL+6K2Z1M1ZjkcOkmLIlm21B6OgU34WfxnrXaEmCW0z q5dcNKV6sYNF9MwBJaZrB08HH+4DgN1+6nAZOlAgGiHbHJ0fhaK00bnqRhvAc2mh5pt3 PpLBUKJaB5sc4I0lhbj3GrdZJRUXb3L1YENxaBxQY6FFQWCVP7Zpt5+hcsdKvqDu2PSe vLBMSq+91KUz02xZ3P9X4kGwdkrM5GAj/8LA/uPrQwV6bDZ0dKgnMxYU1uT5s0cRM2Ju yQzafgx1bwKnUXryHDgSJBqWeWw1trkDJ8KMwPErpBnc88lHBDMWQDcPpf/isZut+iAQ pyKA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u7si2769955pfm.159.2019.03.20.16.12.30; Wed, 20 Mar 2019 16:12:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727633AbfCTXLk (ORCPT + 99 others); Wed, 20 Mar 2019 19:11:40 -0400 Received: from mail-oi1-f196.google.com ([209.85.167.196]:37254 "EHLO mail-oi1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726115AbfCTXLk (ORCPT ); Wed, 20 Mar 2019 19:11:40 -0400 Received: by mail-oi1-f196.google.com with SMTP id v84so3267899oif.4; Wed, 20 Mar 2019 16:11:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LxuFz/8hZxDZcy/HDHdo+KdLu6FiusBXJmBPXmDCquo=; b=Z7N/Ta+qmPQe0pFmgBwSKF8T2zInsuk0isqDRPaD9gZiqkm4rg1n2ztT1jcoxxqU39 Sk29FvMEzp2jrRwM8VQyi01oXCsCzQ0jKu4OLb3DokX5n8yefb8icLIS/VPSwPoUv6qt gFcQpXx+gftC6GcYHZPgzj4Ok8F3g5TDPCYKNqSwxcJYDRIWWuEu+FVIU0uCs3+3iXwy flj3gIg1SdkDOUZcdkR4onzA2I6Hen/2K4EKlJ6Bq1hcXAueLcRrW8JPmQ7TpGXhSNzk ogPN4C3w5BTuq6t0K5GKv/oKs846XZumCg3U9ecvAujP5qWpZXC8ZzvWkcdrCdT3PnRY IieQ== X-Gm-Message-State: APjAAAU68m8X1fCrCCJkO9lA9qyAVdTpFvpLB4PLeGIoBBXq5AmWmUQf lbGMmCuekbn8YDj0YpH9ufc0fK+j4M6v7ckJX60= X-Received: by 2002:aca:eb93:: with SMTP id j141mr346148oih.178.1553123499152; Wed, 20 Mar 2019 16:11:39 -0700 (PDT) MIME-Version: 1.0 References: <20190320222844.134765-1-furquan@google.com> In-Reply-To: <20190320222844.134765-1-furquan@google.com> From: "Rafael J. Wysocki" Date: Thu, 21 Mar 2019 00:11:28 +0100 Message-ID: Subject: Re: [PATCH] drivers/acpi: Clear status of an event before enabling it To: Furquan Shaikh Cc: Robert Moore , "Schmauss, Erik" , Rafael Wysocki , Len Brown , ACPI Devel Maling List , devel@acpica.org, Linux Kernel Mailing List , Rajat Jain , evgreen@google.com, dlaurie@google.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 20, 2019 at 11:34 PM Furquan Shaikh wrote: > > Commit 18996f2db918 ("ACPICA: Events: Stop unconditionally > clearing ACPI IRQs during suspend/resume") was added to stop clearing > of event status bits unconditionally on suspend and resume paths. This > was done because of an issue > reported (https://bugzilla.kernel.org/show_bug.cgi?id=196249) where > lid status stays closed even on resume (which happens because event > status bits are cleared unconditionally on resume). Though this change > fixed the issue on suspend path, it introduced regressions on several > resume paths. > > First regression was reported and fixed on S5 path by the following > change: commit fa85015c0d95 ("ACPICA: Clear status of all events when > entering S5"). Next regression was reported and fixed on all legacy > sleep paths by the commit f317c7dc12b7 ("ACPICA: Clear status of all > events when entering sleep states"). However, regression still exists > on S0ix sleep path since it does not follow the legacy sleep path. What exactly is failing? > In case of S0ix, events are enabled as part of device suspend path. If > status bits for the events are set when they are enabled, it could > result in premature wake from S0ix. This change ensures that status is > cleared for any event that is being enabled so that any stale events > are cleared out. > > Signed-off-by: Furquan Shaikh > --- > drivers/acpi/acpica/evgpe.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/acpi/acpica/evgpe.c b/drivers/acpi/acpica/evgpe.c > index 62d3aa74277b4..61455ab42fc87 100644 > --- a/drivers/acpi/acpica/evgpe.c > +++ b/drivers/acpi/acpica/evgpe.c > @@ -81,8 +81,12 @@ acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info) > > ACPI_FUNCTION_TRACE(ev_enable_gpe); > > - /* Enable the requested GPE */ > + /* Clear the GPE (of stale events) */ > + status = acpi_hw_clear_gpe(gpe_event_info); > + if (ACPI_FAILURE(status)) > + return_ACPI_STATUS(status); Well, this may cause events to be missed. > > + /* Enable the requested GPE */ > status = acpi_hw_low_set_gpe(gpe_event_info, ACPI_GPE_ENABLE); > return_ACPI_STATUS(status); > } > -- > 2.21.0.225.g810b269d1ac-goog >