Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp6157323pxv; Thu, 29 Jul 2021 07:50:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzExe343nhvgf7j8FomGIti6md1XJ1uUpqhbeL9ICrQMezDmuuBHPXZALJ/obzImdbCk63t X-Received: by 2002:a92:b110:: with SMTP id t16mr4039708ilh.203.1627570243982; Thu, 29 Jul 2021 07:50:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627570243; cv=none; d=google.com; s=arc-20160816; b=Fvk/ETjNgj82iU1XXyKReC72M3YHxB76VtEZ0BF1MrOLgLKFyhLkXNM8mkmA4AzIzN wlOfmil2bAPGBCKTcUfZtSHIB9yN+QbFilCDeLd5AUJW6AjCUI+KHMXI/CkY84KRmoBo BIcfr2gDTHVCaysDHfAuu4vI0LZuTP9qTp2qfBIwHEsbhwycAe5HOYh4txXRP/geQnTl 7rmmDx215wkWwhcEiLtndKMTe8FCDD2Ty4nxlnVUVG3OYhCmsh5WUQ+RSSIKdJGu+3ma S+uDZeiURFEUcJ5pFeGQxkQhINEsUxjAOfrUap3SGGc+whCkBno4jDblSLOh2p2UmFSD BzhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=h1qWmYFhovR058fCVGgPWaHUPbyfVKpPJ7ql4HHMczo=; b=YOTAP9SFDuOJc55EGGOcHKiaYnWi6UAvsEHZQ7saCZ8vVYzoZlFIW3E41D0WjPIo74 pe245kQllFPdBM+CRrAX5CP07OiV/L5a72hFyeaIRLYxIP2t5ODzUihbUXIyRAWg3MsT x/lJbcbrOgnvynfFMU98i7Z5bM1RUBIrR//mArNrRW665s6bjx4ucqgq4sniKpJxf6Pv XK9W/BOaoTWkW6YL+Bwt+Q48fAwMXXgCkS+2cB8YSZWCStxp/jNvtxAw+LaN/Nq8kDF3 9gJk/c4knHS5QdrmStzURxsaHousRynSkgetqVyRggiK4+/av2mEuLC7YeFhp6OzPf+U sPMA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x7si4376555ilu.63.2021.07.29.07.50.31; Thu, 29 Jul 2021 07:50:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236878AbhG2Otr (ORCPT + 99 others); Thu, 29 Jul 2021 10:49:47 -0400 Received: from cloudserver094114.home.pl ([79.96.170.134]:55988 "EHLO cloudserver094114.home.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229864AbhG2Otq (ORCPT ); Thu, 29 Jul 2021 10:49:46 -0400 Received: from localhost (127.0.0.1) (HELO v370.home.net.pl) by /usr/run/smtp (/usr/run/postfix/private/idea_relay_lmtp) via UNIX with SMTP (IdeaSmtpServer 3.0.0) id 10ccb49542306252; Thu, 29 Jul 2021 16:49:41 +0200 Received: from kreacher.localnet (89-64-80-223.dynamic.chello.pl [89.64.80.223]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by v370.home.net.pl (Postfix) with ESMTPSA id 868CF669F44; Thu, 29 Jul 2021 16:49:40 +0200 (CEST) From: "Rafael J. Wysocki" To: Linux PCI , Mika Westerberg Cc: Linux ACPI , Linux PM , LKML , Bjorn Helgaas , Kai-Heng Feng , Utkarsh H Patel , Koba Ko Subject: [PATCH v1 2/2] PCI: PM: Enable PME if it can be signaled from D3cold Date: Thu, 29 Jul 2021 16:49:10 +0200 Message-ID: <1791325.tdWV9SEqCh@kreacher> In-Reply-To: <4668274.31r3eYUQgx@kreacher> References: <4668274.31r3eYUQgx@kreacher> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="UTF-8" X-CLIENT-IP: 89.64.80.223 X-CLIENT-HOSTNAME: 89-64-80-223.dynamic.chello.pl X-VADE-SPAMSTATE: clean X-VADE-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedvtddrheefgdeflecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfjqffogffrnfdpggftiffpkfenuceurghilhhouhhtmecuudehtdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkfgjfhgggfgtsehtufertddttdejnecuhfhrohhmpedftfgrfhgrvghlucflrdcuhgihshhotghkihdfuceorhhjfiesrhhjfiihshhotghkihdrnhgvtheqnecuggftrfgrthhtvghrnhepteeggfelteegudehueegieekveduleeuledvueefjeefffegfeejudfgteefhefhnecuffhomhgrihhnpehkvghrnhgvlhdrohhrghenucfkphepkeelrdeigedrkedtrddvvdefnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepkeelrdeigedrkedtrddvvdefpdhhvghlohepkhhrvggrtghhvghrrdhlohgtrghlnhgvthdpmhgrihhlfhhrohhmpedftfgrfhgrvghlucflrdcuhgihshhotghkihdfuceorhhjfiesrhhjfiihshhotghkihdrnhgvtheqpdhrtghpthhtoheplhhinhhugidqphgtihesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehmihhkrgdrfigvshhtvghrsggvrhhgsehlihhnuhigrdhinhhtvghlrdgtohhmpdhrtghpthhtoheplhhinhhugidqrggtphhisehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtoheplhhinhhugidqphhmsehvghgvrhdrkhgvrhhnvghlrdho rhhgpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohephhgvlhhgrggrsheskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepkhgrihdrhhgvnhhgrdhfvghnghestggrnhhonhhitggrlhdrtghomhdprhgtphhtthhopehuthhkrghrshhhrdhhrdhprghtvghlsehinhhtvghlrdgtohhmpdhrtghpthhtohepkhhosggrrdhkohestggrnhhonhhitggrlhdrtghomh X-DCC--Metrics: v370.home.net.pl 1024; Body=9 Fuz1=9 Fuz2=9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rafael J. Wysocki PME signaling is only enabled by __pci_enable_wake() if the target device can signal PME from the given target power state (to avoid pointless reconfiguration of the device), but if the hierarchy above the device goes into D3cold, the device itself will end up in D3cold too, so if it can signal PME from D3cold, it should be enabled to do so in __pci_enable_wake(). [Note that if the device does not end up in D3cold and it cannot signal PME from the original target power state, it will not signal PME, so in that case the behavior does not change.] Link: https://lore.kernel.org/linux-pm/3149540.aeNJFYEL58@kreacher/ Fixes: 5bcc2fb4e815 ("PCI PM: Simplify PCI wake-up code") Reported-by: Mika Westerberg Reported-by: Utkarsh H Patel Reported-by: Koba Ko Signed-off-by: Rafael J. Wysocki --- drivers/pci/pci.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) Index: linux-pm/drivers/pci/pci.c =================================================================== --- linux-pm.orig/drivers/pci/pci.c +++ linux-pm/drivers/pci/pci.c @@ -2491,7 +2491,14 @@ static int __pci_enable_wake(struct pci_ if (enable) { int error; - if (pci_pme_capable(dev, state)) + /* + * Enable PME signaling if the device can signal PME from + * D3cold regardless of whether or not it can signal PME from + * the current target state, because that will allow it to + * signal PME when the hierarchy above it goes into D3cold and + * the device itself ends up in D3cold as a result of that. + */ + if (pci_pme_capable(dev, state) || pci_pme_capable(dev, PCI_D3cold)) pci_pme_active(dev, true); else ret = 1;