From patchwork Tue Apr 8 06:52:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Zhu X-Patchwork-Id: 14042252 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5F903C3600C for ; Tue, 8 Apr 2025 06:57:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=LwBzwADTuI+Olw5Y2HdB2HKD14Pf3MTlzMEhGDwYaYQ=; b=g8+VMgpn3GcPxAEqv/HjmANnB5 Ye3wcqCEjUcyzCo/DnxhKFkwanuZlvxuAKX+QTYQQvjqAt/6Vif+ejG5rQNYw2E2bVUZ86mHgy/wp L43SYifYRgA8NtGTyfuFMObysoldukYKfjrFNtrvHbBQfFMf198sVAR3Qtb15LzabFgytowcsfv2h 5E0ZYKrxxWulppBccaHHxVDTTdH1B3pTISnHphRJv8ozaeXK08aKTylT5TI5+pDTiFlgUe7IoBNd6 xEJ77PLgFdZfZBfzgfbf+jURAyv1xrcQB766mJMeY6NFmfqmOqiHwEm/JXce/02t10AlmjEXs8hmG 4i8LmViA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u22tw-00000002yHY-49Nd; Tue, 08 Apr 2025 06:57:40 +0000 Received: from mail-db8eur05on2061a.outbound.protection.outlook.com ([2a01:111:f403:2614::61a] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u22qS-00000002xlQ-1uWk for linux-arm-kernel@lists.infradead.org; Tue, 08 Apr 2025 06:54:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jcvMmcYB4kpBXvx1VGtLdsNglsOSZePEaZsctFmZ/HiA6AcKLKdmNCgBSGHxcNwWyT1Lrjgke4bGkvAHCbFc7Kf8in0RI0pSLZ3ymuINGiP6CHxEMciXme91ehbYCLqmSW23CwUyhxT2V0ucqEe635YPaWLNIZMKFbN+lLT23ns4VOi37EJ+3irkXery8t0uVJOQaEEKzggnoeENdiTVUf+cj3EjqiDSLkZ2zTPlZPEdF2aUsGt0wRg38lWLWEV3dTnA578mq4/crXKdBX7iWfKi41TNXlU9ROsgsM33bl0k0LPg6juIP3ox4TvQah+p4zKJjyFTVXGsNguBhHAXPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LwBzwADTuI+Olw5Y2HdB2HKD14Pf3MTlzMEhGDwYaYQ=; b=lLTetPWrpY6hT85wkDuDdRkpzSfLjg9qYhNcqbCX7mSP9DwoD/45Pqh8Uod4qACZ9PZ7QecFn6hZ3N6zb8grcBV+FVedyxJea6e9uslDX6+/7qQROM7zA8fxf/XL3OWJJJ1nT2Og+LjvuEVgvRI/AVOMbxCA4WgSdBkhT4pHK4oIplzrcqDNlKe04KlOkaYTSb1yUOvYd6+0sgjv565+Q7Lm8Pg4WOfpu660P/Yk6zRC6I6VPDR26DT9J/wIMfSyeXRbluo0y4KvKs7pRVGmdHDgHTsmEXvwrL+Wt2pJpsHwj9umB5AL49XIKILeJAzKk+qCaCoPIbJTLMtM78iPnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LwBzwADTuI+Olw5Y2HdB2HKD14Pf3MTlzMEhGDwYaYQ=; b=TVT9JYoRkB+j4/x7ZwN61IspBlb5Grn73iRt2LSypJb3nhRe1eW9rC6wJ3S/OxwdW122sa0t4eBDMAS8o0YkifLmVG7Z3ca+xQi7+sFgz9LfSyrksiBYpkgF2AvOuaJdMVwt261qpLWouag/mlVgx/93kNUNvgROuZkR4IFh3jUriLiyjRlR3XyCwi780wR671BBkMqQeIi3PVihDuu8twdMF1nEmnCoPQtscZwCGydYvfcz0DpffH8o/lwhfOoQXSD1pcevarSnstfokbo0qnczYoplx98tRe9CZETlk6wljp6bRaP8PxIEzeNptkP8Ea8O9g52CBDZjp7oMH1SVg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by AS8PR04MB8309.eurprd04.prod.outlook.com (2603:10a6:20b:3fe::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.33; Tue, 8 Apr 2025 06:54:02 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::28b2:de72:ad25:5d93]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::28b2:de72:ad25:5d93%4]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 06:54:02 +0000 From: Richard Zhu To: jingoohan1@gmail.com, frank.li@nxp.com, l.stach@pengutronix.de, lpieralisi@kernel.org, kw@linux.com, manivannan.sadhasivam@linaro.org, robh@kernel.org, bhelgaas@google.com, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com Cc: linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org, Richard Zhu Subject: [PATCH v1 1/4] PCI: dwc: Add quirk to fix hang issue in L2 poll of suspend Date: Tue, 8 Apr 2025 14:52:18 +0800 Message-Id: <20250408065221.1941928-2-hongxing.zhu@nxp.com> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20250408065221.1941928-1-hongxing.zhu@nxp.com> References: <20250408065221.1941928-1-hongxing.zhu@nxp.com> X-ClientProxiedBy: SI2PR02CA0001.apcprd02.prod.outlook.com (2603:1096:4:194::10) To AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8676:EE_|AS8PR04MB8309:EE_ X-MS-Office365-Filtering-Correlation-Id: 977d658a-922c-4262-ea82-08dd766a2571 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|52116014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: 2Jks64jvv/vs5RWlb14ieHTVH7dXap4GfybKe2R7X1+LNU36GJpCN/RQ2XZCdpIi6joMxUFGUQYibhS4zdXGja371O1GJRaXY6PSMoofru3HPHFCwVHi6O0tQDyZj0aLaEd6u9tZsNhO4FaEQFGdFQgSam9ZwXRIY4Gd9btpkbdFoLibKXnRnsFAtiCghsxGPNwn+m5dwQJlPmckz7gk4Mi71qkmMgWeFhY5aIR1mLK6uEL6d46IeH+N+dYLlqHpni/hEpBVBN+jCmuen61wnpeTitsVwUQ4k/WlIvMRnVBq8DMz7Gnc26VUJYEQr0NkbDnp2YGsGvMrHX34zNThNAsPDtMGLbfz1jl2gsH0EUYDe1VFZzaizkPcnhR0ZceK1ERPadCRKuMb+ayhyho5P6ALad3UvBfIqpmE7yv/lxF2q/4LkP5zpAPQUDOGzAs8Td1cLvDn1Fbpqq1+8cIgKZqxcV+mFVqaDFSTmV6MzFkzz6AJQD46lbPu6gCQH1WDy8j4NsxlSLkL0bMzjJ+EZNzLfwH2B5J65j5N2crnPR/bO11kM862EQ8zpXqOCVweAkcNyaQ/wNKE0DuBbHzax/WKIsGuBvBTUd26gsh3LglFdz4N/2NiObdvuMh+Zw4TLointHQ7CWfQlJRGIw5G/jiZlpKRVS6M9KheT0iqoSoRZkkSQi/f9LTM7iSQbzlWtgIMEAZlHuXY4FXuOULm8E2mh9MbtY+YjG0BRJFgjAAsPd4+uFDK5Nn7C9q4YhpDerHjOmmYpRsiddfg8HaWKS2OjqeTamWXdGuURvTTFB6wCaBfZVJB/ttqLe/QYrTpHij6oMP6GIC9Vr+zzU4okE5KzlctO7tH6LwvKtCITzkyGOp7IMrhuQG72F35I+OgiPaPCDx+3S+hwheJGeiySyzn8ap46xPdPlkRw9VNoxvHehAtbnIwtx9fqiz5PlUWHbNlijMAymb242V12KKCmVTRwdV2zvOv76G7KVfqk30OPldlhO6dpUuwvG50XiC8WFdSKHXDJjxVqFO/ZO7q8y42/ssLwN20qjuSe6Hi1NumgvFadTQ/vW3qBuF3UjS0vBOKm76dk/5DINO0W+zUrurSHrrVuT0N0FgY8mF0MC3mOuythxLgDeUS8jjmVPrtYaVz28tgEFKBkHKuImE4Caelo/X7DTxDzHtetY3zNgbF3f7Q0q11orGjigz7kwORKDh393nrbvihbQV+G6mSyKSAgzjXJ6gi/9Z4PofHroBnmyOncndp1Y343XppwhJ2B2gDfDiejeN1H+oQs61Eevv9DjljXev/MB9wQAUSEopgiljnHAr9rDRLw2wY3TXDjN4rtlkDboH7mbgzoG9V3QnEGeTtyNkgJoJRXi8V+6FJyufOU8XOk+4GYVqgrWocGWJc30lZ2rgOnR4gm1+7LVKYzIrHkJa8Fo4oBUjBuLyR8PB7+WuusCrdakwUM5OAY+av2dDQcOtFLR2/if6A8Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB8676.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(52116014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: t+mqnFuRk9bUWTXPk4FlQThhZIqbisTeEz01HUWoUuHn2QR8PsgiIT9XowaBrlk4m1ErU7YlK9GQs7xQxVAfCKFQkjkhhRRWQAno6MqFTPD9jOFgL+PqcbkoCj4lnfDPHI6+yGkQeezY2af/GHjxuG6ziuZ0nFRfY4nKtY2U8njaM6Rqq3is9mnJgHwJEnxybpTh3M+jYqsAYs3JwxzG3clm7k0LzfpYgK4RZm3Ag/6VtnnfxlTTITR8uUxAqR2Tyv60uuZz+xSyEkZV2r6TaSUJjI+IppalL38yXt55tHNsDyKQqiriPh3lfRPlMUwCPznxWfJvp4mjvL7kQP72xyfx+GssjB7H4a7HJOiMpi3StmUxCp4tj4U1xWn/ybusTSZfQcNcPixxBUmooPY7n+Enpq/5nDCbMDz7cgAy1KXFkX3aP7CAR0H0TSCq7hOIe/B0L8okl6tK9y6jbkDH/cy9N76kbHsx7vNgnbBKHfefOqHcuLr8wcyvZPKa+UGh4LgX0g6RsXLB52E2Ty1NNqbCfApKTeZBiWiITZSo1nOmmYkb4G6UxXaUoEhaDagMFl+X3l0Bua3PBlgrl0yT4zJlbfqWHQGuyLz6/tmkn1VGaw2kSwcuN45LALsjeHfVjuiNMJArjJy3mQ/Q34C/k5i2PS+/IvgDpIJr/g7JbyJ5It6uIprDqSBnD39Ghqmg6tZbPvdgmi+lgBQ1rk+iAyHz9y8knvJx8TSQ8wBSSrabcGJ/d/ZrvbtRcAeNwZAU/BU0/3tsY5Cc0FgaLL19SK8eihlbrpYI9MdLu9xlcSwfqRs15Kq6eG2V64ZNC0f0MEZVG/EQiXvRHt12H/nIudqiNj/cJ5cNoqxE/q8v1ZjRZIqshzXJJTaEhr8bJU3kfDhmAuQ7luK9K7cKf9QxHZDDikM1FI2iCQytRcjXIOlpAtTBbd4h9B599vlpAzRuFi7Cqh5k7BsJvl8z2kRXcdPDZOCZ+6KVVTNjHn9D5Sx4rnhESRiVjeY3G1f8zoK2k8j88wPHKSRUuY3aGmcLu9HKqDFBdbrNG5c1R4sjJuuUP6Y6IqJ8fPFRWZAQqF3Ng5WmxcVayaof+1Nh+AxgYOds7uYbdfx7pAUCUCSxnb/BOLjVw2B5wrB+BsP8A9/TPMdRoTEszRgJfvXT8Rjd0IfbA061K55+jje3OZr2AxZS5eAf/REv+ntsjchXzojx3NPBSW51osdaqSo4HYz0g8+Ui9c9Jf2loxw0HXhf4lTYSbJv4tcJSuDAFQNIZN395Ztl+rNWdqiEA7+RU6LPxW147grukvb49avfISkRu+M1dnI1up6tQMidZZL08bBp+AHnnuFQEnhuSq8T6WgVIYLQR5TiCsO57IltCpBunTpELSyjM5HWPi5UK8k/wcZ3rwIh7nRiMwKRPTXvu/+iW6Fs2Vj8umuRJOzI55SmbmOGzS4tubQh1AY1RrA9f519mMmMH66UQiakJvKE71b+75fcDvCZQ9de0HmrncpBmMhhIQJtFGpbzqzrtijQWEAFUridheveI6Zs94EF5EwAHd27jKSIaetU1LHzdJA2kzHnupltUPsBUac8v18ZvMjA X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 977d658a-922c-4262-ea82-08dd766a2571 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 06:54:02.6116 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zzDsKHZDzPK3trymnieXkoeCmxxojwbYN+nLvsqZJbUvCYc6lKnd3p34ynfIUZwTXtt4LimqJ+3Jjlkp6dkwQQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8309 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250407_235404_495386_FE4AE3A2 X-CRM114-Status: GOOD ( 14.88 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org i.MX6QP PCIe is hang in L2 poll during suspend when one endpoint device is connected, for example the Intel e1000e network card. Refer to Figure5-1 Link Power Management State Flow Diagram of PCI Express Base Spec Rev6.0. L0 can be transferred to LDn directly. It's harmless to let dw_pcie_suspend_noirq() proceed suspend after the PME_Turn_Off is sent out, whatever the ltssm state is in L2 or L3 on some PME_Turn_Off handshake broken platforms. To fix this issue, add one quirk to remove the L2 entry poll and let dw_pcie_suspend_noirq() proceed directly after PME_Turn_Off is sent out. Signed-off-by: Richard Zhu --- .../pci/controller/dwc/pcie-designware-host.c | 22 ++++++++++--------- drivers/pci/controller/dwc/pcie-designware.h | 4 ++++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index ecc33f6789e3..0817df5b8a59 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -947,7 +947,7 @@ int dw_pcie_suspend_noirq(struct dw_pcie *pci) { u8 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); u32 val; - int ret; + int ret = 0; /* * If L1SS is supported, then do not put the link into L2 as some @@ -964,15 +964,17 @@ int dw_pcie_suspend_noirq(struct dw_pcie *pci) return ret; } - ret = read_poll_timeout(dw_pcie_get_ltssm, val, - val == DW_PCIE_LTSSM_L2_IDLE || - val <= DW_PCIE_LTSSM_DETECT_WAIT, - PCIE_PME_TO_L2_TIMEOUT_US/10, - PCIE_PME_TO_L2_TIMEOUT_US, false, pci); - if (ret) { - /* Only log message when LTSSM isn't in DETECT or POLL */ - dev_err(pci->dev, "Timeout waiting for L2 entry! LTSSM: 0x%x\n", val); - return ret; + if (!dwc_check_quirk(pci, QUIRK_NOL2POLL_IN_PM)) { + ret = read_poll_timeout(dw_pcie_get_ltssm, val, + val == DW_PCIE_LTSSM_L2_IDLE || + val <= DW_PCIE_LTSSM_DETECT_WAIT, + PCIE_PME_TO_L2_TIMEOUT_US/10, + PCIE_PME_TO_L2_TIMEOUT_US, false, pci); + if (ret) { + /* Only log message when LTSSM isn't in DETECT or POLL */ + dev_err(pci->dev, "Timeout waiting for L2 entry! LTSSM: 0x%x\n", val); + return ret; + } } /* diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index 56aafdbcdaca..05fe654d7761 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -282,6 +282,9 @@ /* Default eDMA LLP memory size */ #define DMA_LLP_MEM_SIZE PAGE_SIZE +#define QUIRK_NOL2POLL_IN_PM BIT(0) +#define dwc_check_quirk(pci, val) (pci->quirk_flag & val) + struct dw_pcie; struct dw_pcie_rp; struct dw_pcie_ep; @@ -491,6 +494,7 @@ struct dw_pcie { const struct dw_pcie_ops *ops; u32 version; u32 type; + u32 quirk_flag; unsigned long caps; int num_lanes; int max_link_speed;