Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp10426121ybi; Wed, 24 Jul 2019 23:01:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqzkEQ+vxRXrBOV7SvSAUyi6VtW9ZucS8ceD93aF4ye2L485+8vqkxGmem7U90ecOMqwwBRq X-Received: by 2002:a17:90a:db42:: with SMTP id u2mr91545878pjx.48.1564034469045; Wed, 24 Jul 2019 23:01:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564034469; cv=none; d=google.com; s=arc-20160816; b=K1d+G7qEhOvIlRxKcjzewomO1kzFTl6CeSnInaZbs1J4S5nlXUlWncJd5swxObh7lI zNFke7Lfv4K6zhKEl0lGxprzXlgcDLuMqSBxFLf3VIGt8R0aM/KOPi7H9STzLt7zz331 7nOYM1k+GvT/u/ujReVY7pBiibtRi8tGzHO8xhEllRkc4cgvhzJnqSjAgJD70663m8/3 QO3DIXQOF3IaMed9SGY4iSgggOJNtoRUwGChVMea0zYmbktBM2lzSWXEC8zplknSH/NX 4aaS0+q2P83Ja60F63w4EIeWbrvHVsQidcJjOCwQooXv7JNMwtwl3vBM8gS9xCKjxlLo 6KLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=zqzXPg83LdoMpf5iuk867kfOlRYYIcvVgBHvDyny9bg=; b=jp8+mK6cxWezuviTZkRdyBuV+fBEfFNIPLcfZm3aca2bM7g1OWypZSwokgV6h4Klm5 dUl3SN2Eje9luN7a3DzgQ4aujLWpR3IdVK5lTWYU3SxR0vRYUDqD23GT6WgAwyJcnJSE S4oAWY4tlD7FbZZp8H93JR26ZiX2H2NDUUu4b0KW6QOym4pk4clEp6oU2ASokbhVSLxq VR6txSLPW+gqAhK5mYf0tWmydRCJxgPDGC5y03CwMFeYQ9h/Spa9lsA35cFUETm2M3ky ykxxTvHNKjbCxgqfRi+m7DoFCZP59fIzbpeDAbhByvKchROapXuuqXRFSElgjYfLTHyd 6Lkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=OXiYZAzG; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 85si20641545pgb.583.2019.07.24.23.00.54; Wed, 24 Jul 2019 23:01:09 -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; dkim=pass header.i=@kernel.org header.s=default header.b=OXiYZAzG; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405082AbfGYFpD (ORCPT + 99 others); Thu, 25 Jul 2019 01:45:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:60364 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405073AbfGYFpA (ORCPT ); Thu, 25 Jul 2019 01:45:00 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C4AC222BF3; Thu, 25 Jul 2019 05:44:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564033500; bh=rSQIDqx6bYk3cIJwTB9cVyystl35fMsUeCj5TL2P0Wc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OXiYZAzGMr51ygejusoRO6dS8QLj+TMacPks2auguC0g0+ohUI3GReuorvJNLfDhY qjwmb456WnDhD4bJRWPUpwQmoHX9+lZ3ZLPyko/ukiY35saJmAv09EC5IyhSw87RQi iDRSFc+vlbhcNnPX+U3Y9w8/+LuPh1DWXu7F/aqE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mika Westerberg , Lukas Wunner , "Rafael J. Wysocki" Subject: [PATCH 4.19 230/271] PCI: Do not poll for PME if the device is in D3cold Date: Wed, 24 Jul 2019 21:21:39 +0200 Message-Id: <20190724191714.869916035@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190724191655.268628197@linuxfoundation.org> References: <20190724191655.268628197@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mika Westerberg commit 000dd5316e1c756a1c028f22e01d06a38249dd4d upstream. PME polling does not take into account that a device that is directly connected to the host bridge may go into D3cold as well. This leads to a situation where the PME poll thread reads from a config space of a device that is in D3cold and gets incorrect information because the config space is not accessible. Here is an example from Intel Ice Lake system where two PCIe root ports are in D3cold (I've instrumented the kernel to log the PMCSR register contents): [ 62.971442] pcieport 0000:00:07.1: Check PME status, PMCSR=0xffff [ 62.971504] pcieport 0000:00:07.0: Check PME status, PMCSR=0xffff Since 0xffff is interpreted so that PME is pending, the root ports will be runtime resumed. This repeats over and over again essentially blocking all runtime power management. Prevent this from happening by checking whether the device is in D3cold before its PME status is read. Fixes: 71a83bd727cc ("PCI/PM: add runtime PM support to PCIe port") Signed-off-by: Mika Westerberg Reviewed-by: Lukas Wunner Cc: 3.6+ # v3.6+ Signed-off-by: Rafael J. Wysocki Signed-off-by: Greg Kroah-Hartman --- drivers/pci/pci.c | 7 +++++++ 1 file changed, 7 insertions(+) --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2004,6 +2004,13 @@ static void pci_pme_list_scan(struct wor */ if (bridge && bridge->current_state != PCI_D0) continue; + /* + * If the device is in D3cold it should not be + * polled either. + */ + if (pme_dev->dev->current_state == PCI_D3cold) + continue; + pci_pme_wakeup(pme_dev->dev, NULL); } else { list_del(&pme_dev->list);