From patchwork Wed Mar 20 22:28:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Furquan Shaikh X-Patchwork-Id: 10862673 X-Patchwork-Delegate: rjw@sisk.pl Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B56531575 for ; Wed, 20 Mar 2019 22:34:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8BEEE284C3 for ; Wed, 20 Mar 2019 22:34:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7FF5F28952; Wed, 20 Mar 2019 22:34:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2365328818 for ; Wed, 20 Mar 2019 22:34:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727479AbfCTWeI (ORCPT ); Wed, 20 Mar 2019 18:34:08 -0400 Received: from mail-qt1-f202.google.com ([209.85.160.202]:40489 "EHLO mail-qt1-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727476AbfCTWeH (ORCPT ); Wed, 20 Mar 2019 18:34:07 -0400 Received: by mail-qt1-f202.google.com with SMTP id i3so4121163qtc.7 for ; Wed, 20 Mar 2019 15:34:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=fwvS1CCeK/9mxSvkHjON/M6m7Jcgc0dvN8k4BI8hC0s=; b=WIUI0I3Oba+9hV5dGc2k6eBV6T/Zq/Bu1J0cYkyXUMDETJZcYihFO3+V9kOD5L49SV UE75YWqQmNnTXyGPjaDfFsJWtrYyIu2clVtfm5KR4/dUpCEwb6+gGJ1WKJFppk9htYYW PqcNvdzwOv9SNzW3s9Eu2q3yyGsZFtWEeU2/YhLRqzCZlLk46W2Bhc1Opindf4Yui1Vi BkObjVJUnL25X486Qk6UhZGN65FRzeOMt0pp6PPXEQFAu8HKAFzOTA8PeWyTiKkk7KxM I84EYmYLyswLTghPe5ri5DsljyX0ANDb68SFXonSgiT22LrJ/HNvW4VUpLNer6LdMoUz wT+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=fwvS1CCeK/9mxSvkHjON/M6m7Jcgc0dvN8k4BI8hC0s=; b=HK2enoSZgmvSMLSsSQZTVDrawO22qNWiHS+EABzEJziEVnZQtBxeesVezSzgsZJ6en 4m07W99HbOuaS2DczyI0DH2/QN5c7SH+PdHncSpV9Mm04kJ9wM5CMOzPWLJ7n74gAPaJ uaA3orcFcGLbE2L+B0QK97oPp5ewyYGVa+jPsO2jxewpP5lkMubCeiq9ep+mBmiwt5Pj t1YETeAoqhf58TuYGSpNerLx91PPw4PNs0V1oPZAT3aUegC6Xprn5dJ8Xx9qOAyn9Z6W 6E280iafTYQMxR7uQJrfp0fZq2Uim0R9Cvmu2l0hr5cM9L9S9wMciUy03MMVErPMPkUN kxCw== X-Gm-Message-State: APjAAAWUSITHa3RnJi5BWvBf7H5kDS/IDdAV1W5IRdpBWcXJPJIJ7WKo uhtvcP86kbn2zaSet2NM2y3qjSMM/7dh X-Google-Smtp-Source: APXvYqw9SkimWRID5FQXcj1l45ZV6jcaTiJPKFiWkGZ749B8KdpSNU0Ah5D32BeFFUpZuynM9OB9OISSi8Tw X-Received: by 2002:a0c:ea90:: with SMTP id d16mr120555qvp.27.1553121246494; Wed, 20 Mar 2019 15:34:06 -0700 (PDT) Date: Wed, 20 Mar 2019 15:28:44 -0700 Message-Id: <20190320222844.134765-1-furquan@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.21.0.225.g810b269d1ac-goog Subject: [PATCH] drivers/acpi: Clear status of an event before enabling it From: Furquan Shaikh To: robert.moore@intel.com, erik.schmauss@intel.com, rafael.j.wysocki@intel.com, lenb@kernel.org, linux-acpi@vger.kernel.org, devel@acpica.org, linux-kernel@vger.kernel.org Cc: rajatja@google.com, evgreen@google.com, dlaurie@google.com, furquan@google.com Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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. 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); + /* Enable the requested GPE */ status = acpi_hw_low_set_gpe(gpe_event_info, ACPI_GPE_ENABLE); return_ACPI_STATUS(status); }