From patchwork Fri May 12 00:00:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 92896 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4752410vqo; Thu, 11 May 2023 17:15:47 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7pBuxPe8WLau7KT7vyrINGsSxkryKnkoWRTjjvnIHkeGVKKPdeL2pHTN6CtpHo0qUiVKKT X-Received: by 2002:a05:6a00:23d1:b0:646:ec88:9979 with SMTP id g17-20020a056a0023d100b00646ec889979mr15820179pfc.23.1683850547330; Thu, 11 May 2023 17:15:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683850547; cv=none; d=google.com; s=arc-20160816; b=W/gi4099hRSSt6UA2FFpNE/C0XNphrL+5R8a74QKXwmbUPL4/HUYRGwCbc8OOea9Gq uATmeLyMfl5KQJDjOFBth6/Zkg0MkwPRwkJPncsWsdyV/vlMZ0LgW7JU/3vz2YxpmrNz js8xybJmg+uUXu+W5HZsNpVM2/HClVC7P2PNSz/bMzRulF/llys3fxRGNnJ5eWHNey1i ko3oSqXsziq9DuOHO/txJt1Ao/KnXgUBPup5e5HheP+rVhuVji2+ex06NkpAW5WWa7t2 DZPn8ETpliGrvfWmMYOHfJOdUBTnbWN/8ixgp4UVhOGwxSH5Zr3ZbUCrKGEgqHNzophi 1y0Q== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=7Yy+TTJYxzOVEE7Li/9nXT/goYCMvcjZLz3BYtWDTGA=; b=kbz9kndQEX94Qkpj9fn3eDcsJA/jgpbxE3xuaNQa67j3zIz3xR89nyY3LSjIBlxE/m q0zRWMDV1/ncQ7tDz+PD3z37r+BEYvOEJHJEOdlfVuQ2zxXWh13Hdi//Wb978Ko3W8mL SpB045wCPwe3wIwfYZ4psEKTWvwt0cte4hJjlUADn8AJ/w4Htcc71rkGbyZ8n1svzeuu 4exzS218zV64rqCVz3Ao2ccBakfLma43iUxmTjRg1WvOmApDCv0LcS9+9Wmjjgtqe9cl l3EQJplCppuHyrMJxCut0o9mqDhW50AHEDCN6NyVn5nZm8hR5mZVVY6ax+LCv5B+FBaW 9tIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=Z48p6PFL; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m67-20020a633f46000000b0052f9d99941fsi7521345pga.400.2023.05.11.17.15.32; Thu, 11 May 2023 17:15:47 -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; dkim=pass header.i=@canonical.com header.s=20210705 header.b=Z48p6PFL; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239608AbjELAPJ (ORCPT + 99 others); Thu, 11 May 2023 20:15:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35176 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231446AbjELAPG (ORCPT ); Thu, 11 May 2023 20:15:06 -0400 Received: from smtp-relay-canonical-1.canonical.com (smtp-relay-canonical-1.canonical.com [185.125.188.121]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 27582E4A; Thu, 11 May 2023 17:15:05 -0700 (PDT) Received: from localhost.localdomain (unknown [10.101.196.174]) (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 smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 5B7C7412D7; Fri, 12 May 2023 00:00:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1683849664; bh=7Yy+TTJYxzOVEE7Li/9nXT/goYCMvcjZLz3BYtWDTGA=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=Z48p6PFLknBe5LY92s5PDYjK5gm0ulwEihq2WGg5Vq5JOeRICHYwfUBH26cXolCsc v87rcLnKBkZ//zWG4cGyJXinGqvITyUNkQQk+cV/xgINL7+mjOLD+10fY7NWChTCxd hwQeYE2nrirb/ZFKz6PuLaGigp3LWWcrHhEvVpHsbg8PeozKpE5sTPftPFnpsBgnNF aL0IGgS2FmLkxI6YKnMVJmbat5bm1Z3taFIOOwT0TEyWmN68yE3nHBtxfLwptTw+sy tkLCMfMJhQ415skVqKXk6IOuJiDU5LJ9DLtwAMwVm86GKJXXw+yvJYxF++H8ckaZ79 DeCdekzdLP82A== From: Kai-Heng Feng To: bhelgaas@google.com Cc: mika.westerberg@linux.intel.com, koba.ko@canonical.com, sathyanarayanan.kuppuswamy@linux.intel.com, Kai-Heng Feng , Jonathan Cameron , Mahesh J Salgaonkar , "Oliver O'Halloran" , linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 1/3] PCI/AER: Factor out interrupt toggling into helpers Date: Fri, 12 May 2023 08:00:12 +0800 Message-Id: <20230512000014.118942-1-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764036537930310198?= X-GMAIL-MSGID: =?utf-8?q?1765645271622007233?= There are many places that enable and disable AER interrupt, so move them into helpers. Reviewed-by: Mika Westerberg Reviewed-by: Kuppuswamy Sathyanarayanan Reviewed-by: Jonathan Cameron Signed-off-by: Kai-Heng Feng --- v6: - No change. v5: - Fix misspelling. v4: - No change. v3: - Correct subject. v2: - New patch. drivers/pci/pcie/aer.c | 45 +++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index f6c24ded134c..1420e1f27105 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -1227,6 +1227,28 @@ static irqreturn_t aer_irq(int irq, void *context) return IRQ_WAKE_THREAD; } +static void aer_enable_irq(struct pci_dev *pdev) +{ + int aer = pdev->aer_cap; + u32 reg32; + + /* Enable Root Port's interrupt in response to error messages */ + pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, ®32); + reg32 |= ROOT_PORT_INTR_ON_MESG_MASK; + pci_write_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, reg32); +} + +static void aer_disable_irq(struct pci_dev *pdev) +{ + int aer = pdev->aer_cap; + u32 reg32; + + /* Disable Root's interrupt in response to error messages */ + pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, ®32); + reg32 &= ~ROOT_PORT_INTR_ON_MESG_MASK; + pci_write_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, reg32); +} + /** * aer_enable_rootport - enable Root Port's interrupts when receiving messages * @rpc: pointer to a Root Port data structure @@ -1256,10 +1278,7 @@ static void aer_enable_rootport(struct aer_rpc *rpc) pci_read_config_dword(pdev, aer + PCI_ERR_UNCOR_STATUS, ®32); pci_write_config_dword(pdev, aer + PCI_ERR_UNCOR_STATUS, reg32); - /* Enable Root Port's interrupt in response to error messages */ - pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, ®32); - reg32 |= ROOT_PORT_INTR_ON_MESG_MASK; - pci_write_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, reg32); + aer_enable_irq(pdev); } /** @@ -1274,10 +1293,7 @@ static void aer_disable_rootport(struct aer_rpc *rpc) int aer = pdev->aer_cap; u32 reg32; - /* Disable Root's interrupt in response to error messages */ - pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, ®32); - reg32 &= ~ROOT_PORT_INTR_ON_MESG_MASK; - pci_write_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, reg32); + aer_disable_irq(pdev); /* Clear Root's error status reg */ pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_STATUS, ®32); @@ -1372,12 +1388,8 @@ static pci_ers_result_t aer_root_reset(struct pci_dev *dev) */ aer = root ? root->aer_cap : 0; - if ((host->native_aer || pcie_ports_native) && aer) { - /* Disable Root's interrupt in response to error messages */ - pci_read_config_dword(root, aer + PCI_ERR_ROOT_COMMAND, ®32); - reg32 &= ~ROOT_PORT_INTR_ON_MESG_MASK; - pci_write_config_dword(root, aer + PCI_ERR_ROOT_COMMAND, reg32); - } + if ((host->native_aer || pcie_ports_native) && aer) + aer_disable_irq(root); if (type == PCI_EXP_TYPE_RC_EC || type == PCI_EXP_TYPE_RC_END) { rc = pcie_reset_flr(dev, PCI_RESET_DO_RESET); @@ -1396,10 +1408,7 @@ static pci_ers_result_t aer_root_reset(struct pci_dev *dev) pci_read_config_dword(root, aer + PCI_ERR_ROOT_STATUS, ®32); pci_write_config_dword(root, aer + PCI_ERR_ROOT_STATUS, reg32); - /* Enable Root Port's interrupt in response to error messages */ - pci_read_config_dword(root, aer + PCI_ERR_ROOT_COMMAND, ®32); - reg32 |= ROOT_PORT_INTR_ON_MESG_MASK; - pci_write_config_dword(root, aer + PCI_ERR_ROOT_COMMAND, reg32); + aer_enable_irq(root); } return rc ? PCI_ERS_RESULT_DISCONNECT : PCI_ERS_RESULT_RECOVERED; From patchwork Fri May 12 00:00:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 92895 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4751863vqo; Thu, 11 May 2023 17:14:38 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6sCg3zCW3GX6/0mwNASIYE8WVkIBAR+SeyAAi0DMdzMHmtBabzc0wKmo4wpjRDyXGL7NVO X-Received: by 2002:a17:902:9a04:b0:1ad:bccc:af78 with SMTP id v4-20020a1709029a0400b001adbcccaf78mr5314778plp.58.1683850477681; Thu, 11 May 2023 17:14:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683850477; cv=none; d=google.com; s=arc-20160816; b=WQgISZ268jFh93uaLx4GcQcNnuDF3Wxfu3p29y/SWeFNZvIC1G3J3tL6lAeIDay779 8EKDvufUuWkz2eeupGVpG8prV0J94eVl2rL7wnfNxXIItFadFhyGhnODJfOWF2a+M2tJ By/gKn9lKrqAct13LW9z/uYvv9oKK8okfldUM+kGPIWZlfFHhU1lctBteNiDboaH3BIn 3JAAi8wE5C5LeppUNb3knyZX1Dh4Z7HdNPotGg8ajzApip1+/PjjlTJAt9x5w6Qpo4GX whnBtIQ8/V8HMOjao7hUmUoZUSf5wmb3YZWMSWZebSMa2MZuk8BWBaoEs8CnXKY9AVxZ 3Nvg== 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 :dkim-signature; bh=uxqAWKUPbR7c0aBs6GBOKeMBFdLKmA+MukXx6becr3E=; b=hjI73u7iErj+ZHmszGcOpV4SJhzmDLi1SqmlkQu5tuM1sRW8JMSxkT+3LPcmdApvwd ULr4uxpo1SEmlXIeZWINjrumpSDjxhbA2VqPCoP6oUde2q6SvvcZjWvicdmrkuD796eo MwWNhv9Wr8XetVMLqsOMruYzddX/0douiF95noeLRsy/UX/KZAVnlSN8lw+NO2COCLNj r+GmlAs6YwNKv0Sg/vmVPYRg27aRLPbU+fZfsZXwJZ/Ek2tu0+mfeIrt1TBmmXDh9eH5 9zOAp9jqJxG8Nfb7tpIsNuWMg3Rg5Lhwz2icfZhLhUEWRqMRyyEI4/s7Hw/HUDdAO3IC /lYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=vixwvTjV; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i2-20020a17090332c200b001ac62935789si8817561plr.468.2023.05.11.17.14.23; Thu, 11 May 2023 17:14:37 -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; dkim=pass header.i=@canonical.com header.s=20210705 header.b=vixwvTjV; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231446AbjELAKI (ORCPT + 99 others); Thu, 11 May 2023 20:10:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32796 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230257AbjELAKH (ORCPT ); Thu, 11 May 2023 20:10:07 -0400 Received: from smtp-relay-canonical-1.canonical.com (smtp-relay-canonical-1.canonical.com [185.125.188.121]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 93F1E1FEB; Thu, 11 May 2023 17:10:05 -0700 (PDT) Received: from localhost.localdomain (unknown [10.101.196.174]) (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 smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 4871641796; Fri, 12 May 2023 00:01:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1683849669; bh=uxqAWKUPbR7c0aBs6GBOKeMBFdLKmA+MukXx6becr3E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=vixwvTjVrg/YI6q79kJpJo0G2YUjVu1J+Mj24FVYhAmYIyrB5OiTV1ScrgxpaR/m9 cxSuRtQwxdF0E/vpU7RsVGzQEzizK3CHpWKZoxD53DeSKdsRenRym4HbsLztgRyVnM M4v3iCl+zWfu9m8bve1J4Y82wd3frjvEszMbVdT3YjZf489WdkAIw/i7foiP4bbdQT dwHVtHDpsRjzxGSXjTezOwv3FjKmsC2s4aeiVU9UBYfSXDzP3fR5Xudl2r+Qoe8dvy 5oVmh/iJKpZ8DuV7BFDnMisQ9Z5BXD8qujKGrIZ3evHlF/EqDQVm3KayMotiDrB0OB yu31Qm2ZO76lA== From: Kai-Heng Feng To: bhelgaas@google.com Cc: mika.westerberg@linux.intel.com, koba.ko@canonical.com, sathyanarayanan.kuppuswamy@linux.intel.com, Kai-Heng Feng , Mahesh J Salgaonkar , "Oliver O'Halloran" , linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 2/3] PCI/AER: Disable AER interrupt on suspend Date: Fri, 12 May 2023 08:00:13 +0800 Message-Id: <20230512000014.118942-2-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230512000014.118942-1-kai.heng.feng@canonical.com> References: <20230512000014.118942-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765645198397853062?= X-GMAIL-MSGID: =?utf-8?q?1765645198397853062?= PCIe services that share an IRQ with PME, such as AER or DPC, may cause a spurious wakeup on system suspend. To prevent this, disable the AER interrupt notification during the system suspend process. As Per PCIe Base Spec 5.0, section 5.2, titled "Link State Power Management", TLP and DLLP transmission are disabled for a Link in L2/L3 Ready (D3hot), L2 (D3cold with aux power) and L3 (D3cold) states. So disabling the AER notification during suspend and re-enabling them during the resume process should not affect the basic functionality. Link: https://bugzilla.kernel.org/show_bug.cgi?id=216295 Reviewed-by: Mika Westerberg Signed-off-by: Kai-Heng Feng --- v6: v5: - Wording. v4: v3: - No change. v2: - Only disable AER IRQ. - No more check on PME IRQ#. - Use helper. drivers/pci/pcie/aer.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 1420e1f27105..9c07fdbeb52d 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -1356,6 +1356,26 @@ static int aer_probe(struct pcie_device *dev) return 0; } +static int aer_suspend(struct pcie_device *dev) +{ + struct aer_rpc *rpc = get_service_data(dev); + struct pci_dev *pdev = rpc->rpd; + + aer_disable_irq(pdev); + + return 0; +} + +static int aer_resume(struct pcie_device *dev) +{ + struct aer_rpc *rpc = get_service_data(dev); + struct pci_dev *pdev = rpc->rpd; + + aer_enable_irq(pdev); + + return 0; +} + /** * aer_root_reset - reset Root Port hierarchy, RCEC, or RCiEP * @dev: pointer to Root Port, RCEC, or RCiEP @@ -1420,6 +1440,8 @@ static struct pcie_port_service_driver aerdriver = { .service = PCIE_PORT_SERVICE_AER, .probe = aer_probe, + .suspend = aer_suspend, + .resume = aer_resume, .remove = aer_remove, }; From patchwork Fri May 12 00:00:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 92897 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4753673vqo; Thu, 11 May 2023 17:18:49 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4zO9GHSPCPfTlWZjAF7/wmsDhrqlwwkzohyfHMGUlXP8uQW68lkVv/EaPt7BJfXac3LnWO X-Received: by 2002:a05:6a20:914d:b0:ff:5c6f:9228 with SMTP id x13-20020a056a20914d00b000ff5c6f9228mr28688331pzc.60.1683850729440; Thu, 11 May 2023 17:18:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683850729; cv=none; d=google.com; s=arc-20160816; b=RNzqOdlx8k0XYSVg5K7XEFH4Esj9/cNHKMuQuqnRNFjEV2i9VdytEJj+j8bATepsVV Ka+3Gg+FvUGl1X4NEHeISBPlTyLMmX6rYraxqRIHvYLlRwtBR0DO7WxTiWmHLvLaGxYB s7vEz76hbLkVzB8U/8f750oJIkWC9W81JoFh+IwR3wv3o1/q9G2eWrpjvA1uvAJmCmIu aFf8/xDzARm4p0DE98AKSfa9XVKWJA22puYpMIbpKbXTy7Ig8zZDGssqmOWmubLgW3vo 3mtTR5ETZuNqSrQshEMh3d04KsjE7WWzwVsmUGZ04dt6PosLHM8KXARVjWKNSG93bqHl aN5w== 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 :dkim-signature; bh=3BPzMXXBFs6fLOYxOkArjjMcNB35OJnLugmMxdqyF3I=; b=V4lMp7wTIFt6IatYbM4cLIHrLu47Dkp7ZpSUPFRURS2zyJGJ76J2EYDwYbO5Gz3UB5 lqMlbIzDr+GcoU2dCaJLIg30k+ZZ7Z2ln5NU178/es7w+8714842T976n8EXi3bR2FuQ 4Q6JpJ20JgGZG/QctVZDhSFv2D7AKDbKwJfYq6ykYKbvPPjizFoiWuhorETiooR2kyNw dRktuV9nTDpSGRE+IwH6fE8glCae0hOklVJFeg3bamDcbmXIGPKnrV+LWyzuWnigY5Hr 6IsiTAfULX3R2i6WX8WcnVCrinQA2S7Qpx9HEGpKcelFG/RXGo4XYJGdm8LlytON16TE 0fuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=krTNOjEN; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d19-20020a637353000000b00528e0b1dd0asi8278455pgn.735.2023.05.11.17.18.34; Thu, 11 May 2023 17:18:49 -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; dkim=pass header.i=@canonical.com header.s=20210705 header.b=krTNOjEN; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239544AbjELAPI (ORCPT + 99 others); Thu, 11 May 2023 20:15:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231174AbjELAPG (ORCPT ); Thu, 11 May 2023 20:15:06 -0400 Received: from smtp-relay-canonical-1.canonical.com (smtp-relay-canonical-1.canonical.com [185.125.188.121]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 26696199; Thu, 11 May 2023 17:15:05 -0700 (PDT) Received: from localhost.localdomain (unknown [10.101.196.174]) (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 smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 980A64179B; Fri, 12 May 2023 00:01:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1683849674; bh=3BPzMXXBFs6fLOYxOkArjjMcNB35OJnLugmMxdqyF3I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=krTNOjENq0W8Mw1vYRI/+NhDl9OOYXbclhVOJ0xUJxxO7XWx5PtLW+wE2CemlXfK8 +Bt1RCru26m761ZzEWag8gwEaJlkhxF5GNRtrlUzXUArp0di4sd6jzW04vVD4zbJEf +lhhtMYeU2QPmVuUTKzLIxsHn/hwAh+ZP88eLnyDwiFgK+W26Jt7U8AS9Dog+R+4cV O72BrVUnPJ/Gq/QfDDxWoySb2ttdgJ308XQPWO6hWYIA0j4YZkPvyuBaDVaO6Cn7qt eEWPKpAWMGsdgR1ntIyVUTNEz0Oq+Te332xF1S7885V4zhUGdUV7QM6oQve6KbfXl8 41cEiRj7I29NA== From: Kai-Heng Feng To: bhelgaas@google.com Cc: mika.westerberg@linux.intel.com, koba.ko@canonical.com, sathyanarayanan.kuppuswamy@linux.intel.com, Kai-Heng Feng , Mahesh J Salgaonkar , "Oliver O'Halloran" , linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 3/3] PCI/DPC: Disable DPC interrupt during suspend Date: Fri, 12 May 2023 08:00:14 +0800 Message-Id: <20230512000014.118942-3-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230512000014.118942-1-kai.heng.feng@canonical.com> References: <20230512000014.118942-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765645462438862595?= X-GMAIL-MSGID: =?utf-8?q?1765645462438862595?= PCIe services that share an IRQ with PME, such as AER or DPC, may cause a spurious wakeup on system suspend. Since DPC depends on AER to work, disable DPC interrupt notification during the system suspend process as AER interrupt notification is already disabled by previous patch. As Per PCIe Base Spec 5.0, section 5.2, titled "Link State Power Management", TLP and DLLP transmission are disabled for a Link in L2/L3 Ready (D3hot), L2 (D3cold with aux power) and L3 (D3cold) states. So disabling the DPC notification during suspend and re-enabling them during the resume process should not affect the basic functionality. Link: https://bugzilla.kernel.org/show_bug.cgi?id=216295 Reviewed-by: Mika Westerberg Signed-off-by: Kai-Heng Feng --- v6: v5: - Wording. v4: v3: - No change. v2: - Only disable DPC IRQ. - No more check on PME IRQ#. drivers/pci/pcie/dpc.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index 3ceed8e3de41..d2d845c20438 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -384,6 +384,30 @@ static int dpc_probe(struct pcie_device *dev) return status; } +static int dpc_suspend(struct pcie_device *dev) +{ + struct pci_dev *pdev = dev->port; + u16 ctl; + + pci_read_config_word(pdev, pdev->dpc_cap + PCI_EXP_DPC_CTL, &ctl); + ctl &= ~PCI_EXP_DPC_CTL_INT_EN; + pci_write_config_word(pdev, pdev->dpc_cap + PCI_EXP_DPC_CTL, ctl); + + return 0; +} + +static int dpc_resume(struct pcie_device *dev) +{ + struct pci_dev *pdev = dev->port; + u16 ctl; + + pci_read_config_word(pdev, pdev->dpc_cap + PCI_EXP_DPC_CTL, &ctl); + ctl |= PCI_EXP_DPC_CTL_INT_EN; + pci_write_config_word(pdev, pdev->dpc_cap + PCI_EXP_DPC_CTL, ctl); + + return 0; +} + static void dpc_remove(struct pcie_device *dev) { struct pci_dev *pdev = dev->port; @@ -399,6 +423,8 @@ static struct pcie_port_service_driver dpcdriver = { .port_type = PCIE_ANY_PORT, .service = PCIE_PORT_SERVICE_DPC, .probe = dpc_probe, + .suspend = dpc_suspend, + .resume = dpc_resume, .remove = dpc_remove, };