From nobody Sun Jun 14 20:22:00 2026 Received: from m16.mail.163.com (m16.mail.163.com [220.197.31.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 118362E974D; Mon, 6 Apr 2026 10:56:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.31.2 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775473010; cv=none; b=JtcrKf/x7+90zRRayHSYC4xVDMSZNMqYHF4hK//Th0E3CkO9IAMCVLeY2SpU+/30a7gWW6l8bxFDCjkmqxtyTaPmvu4+4HrKzubyxoYzYo8ULt2IrG1KLBnwTZamoV81dbi3McYhDKW2k/RgzymMPWlC8M2ZTpUiMpPqCHDlMYo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775473010; c=relaxed/simple; bh=K5Y0PBLnucTW3zOL2uWce0Kl7pET+ylirq39OJDQdRY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mVHCcehVzuZpH43S348hSvrUz9Gq/af36rECgei/9YgCQKr/k7JzKn4zgGx15+/+Pl4vQodi4HilkkzR+6pSRVXXryi9WQDXBSrT+wgAjy/lyBgLoQZngH4oX7sCV5A0pQ1018Ec5aPvcfEIT9XVxjF8oZ3cKJQi2imG2j2HDq0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=lAlTSU0o; arc=none smtp.client-ip=220.197.31.2 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="lAlTSU0o" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=2A iyRk9VuZ8SjJ/3y8MHKB5yKl6vNqKwzPKLEYzjPaw=; b=lAlTSU0oY48WQfjvnR KNUrvTwlCJdBeAXlvigF8K1Qv/712YBfT3CyQH4J4mcsVyk/4pCj3h+QD4SpnYs2 nL0OlB8J3sCEegDHmlke7tBaTOVE34tTO8ifLUdeGRGMwNPbxnERIkOxSv8cOzSP EkWpsNDqKLbSgKEsVYEPNHovQ= Received: from Precision-7960.. (unknown []) by gzga-smtp-mtada-g1-4 (Coremail) with SMTP id _____wC37wJQkdNpmdyZDg--.25057S3; Mon, 06 Apr 2026 18:56:18 +0800 (CST) From: Hans Zhang <18255117159@163.com> To: bhelgaas@google.com, lpieralisi@kernel.org, kw@linux.com, kwilczynski@kernel.org, mani@kernel.org, ilpo.jarvinen@linux.intel.com, jingoohan1@gmail.com Cc: robh@kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Hans Zhang <18255117159@163.com> Subject: [PATCH v6 1/3] PCI: Add public pcie_valid_speed() for shared validation Date: Mon, 6 Apr 2026 18:56:11 +0800 Message-Id: <20260406105613.1228673-2-18255117159@163.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260406105613.1228673-1-18255117159@163.com> References: <20260406105613.1228673-1-18255117159@163.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wC37wJQkdNpmdyZDg--.25057S3 X-Coremail-Antispam: 1Uf129KBjvJXoW7urW5CF43uw45Xw15KF43trb_yoW8WrWxpa yDAFyYyF18Aa15XF4Dta18ZFy5uFZayrW0krW3u39xZF13A3s3Ja45tay8tryaqrWIvF1U Ja1YyF18Ca1jyF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pRVpB-UUUUU= X-CM-SenderInfo: rpryjkyvrrlimvzbiqqrwthudrp/xtbCxBLHa2nTkVIHjAAA3I Content-Type: text/plain; charset="utf-8" Extract the PCIe speed validation logic from bwctrl.c's static pcie_valid_speed() into a public static inline function in pci.h. This allows consistent speed range checks (2.5GT/s to 64.0GT/s) across multiple drivers and functions, avoiding duplicate code and ensuring validation consistency as per PCIe specifications. Signed-off-by: Hans Zhang <18255117159@163.com> Reviewed-by: Shawn Lin --- drivers/pci/pci.h | 5 +++++ drivers/pci/pcie/bwctrl.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 4a14f88e543a..f0a082bfd6f1 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -606,6 +606,11 @@ void pci_bus_put(struct pci_bus *bus); (speed) =3D=3D PCIE_SPEED_2_5GT ? 2500*8/10 : \ 0) =20 +static inline bool pcie_valid_speed(enum pci_bus_speed speed) +{ + return (speed >=3D PCIE_SPEED_2_5GT) && (speed <=3D PCIE_SPEED_64_0GT); +} + static inline int pcie_dev_speed_mbps(enum pci_bus_speed speed) { switch (speed) { diff --git a/drivers/pci/pcie/bwctrl.c b/drivers/pci/pcie/bwctrl.c index c4c8d260bf96..ea82e326f164 100644 --- a/drivers/pci/pcie/bwctrl.c +++ b/drivers/pci/pcie/bwctrl.c @@ -48,11 +48,6 @@ struct pcie_bwctrl_data { /* Prevent port removal during Link Speed changes. */ static DECLARE_RWSEM(pcie_bwctrl_setspeed_rwsem); =20 -static bool pcie_valid_speed(enum pci_bus_speed speed) -{ - return (speed >=3D PCIE_SPEED_2_5GT) && (speed <=3D PCIE_SPEED_64_0GT); -} - static u16 pci_bus_speed2lnkctl2(enum pci_bus_speed speed) { static const u8 speed_conv[] =3D { --=20 2.34.1 From nobody Sun Jun 14 20:22:00 2026 Received: from m16.mail.163.com (m16.mail.163.com [220.197.31.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7D012E974D; Mon, 6 Apr 2026 10:56:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.31.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775473017; cv=none; b=a5dVepEOic09nX3hCfDGLQwJ4WDeXdybyW2DAhIe+yl6tQPuJahgx9d0ck0xTLrQxayrQYvFk2NpYxsZq1kILgvF4sfjjKoml6UzRAs4kvFAhXfe7lxF7mYdnR1icdAZP3wJLQQMRke0bt7H8p1PEmphTKpUqBzDxJMxLka5k2c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775473017; c=relaxed/simple; bh=CZU1bAFSf9JlR9KB4yeMbb8I48frV5NXpXIIz97ppHU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=K1BRxKwFGnSAMq2K2ZdQcjgrWFw0Fc5pJUQuNjwES+b0h9HcBb83vmZSvATlOrkmC/llBGOAXaVREskFgzmOALgAlgCoPHO+cpmMMcrDQ2nqQJwUyyCITIpYvbNWAaPlz10hYHRf9P1/CMGbmLb+1kfobEpqdQp/eahZlcJreJg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=YcEX5Miq; arc=none smtp.client-ip=220.197.31.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="YcEX5Miq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=6m MCrDR47EQMAbgME22s7g/ZL+FO83j+pRNlGGThkDM=; b=YcEX5MiqnPIz7H36Fw /y4x0B8dOahSm6dUYuIiaNDmsevjh5tZe/ejtq5h3goeCUZJTpM4llfDZK61GVUQ SUAFFVlga8Khj3+VW4TwspBd+QKiqhowTvvd39RUHVl2fQmnX/ARtRResaKxvsVF EvvoLiIfg6yZNwvDyzcI6BYEA= Received: from Precision-7960.. (unknown []) by gzga-smtp-mtada-g1-4 (Coremail) with SMTP id _____wC37wJQkdNpmdyZDg--.25057S4; Mon, 06 Apr 2026 18:56:18 +0800 (CST) From: Hans Zhang <18255117159@163.com> To: bhelgaas@google.com, lpieralisi@kernel.org, kw@linux.com, kwilczynski@kernel.org, mani@kernel.org, ilpo.jarvinen@linux.intel.com, jingoohan1@gmail.com Cc: robh@kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Hans Zhang <18255117159@163.com> Subject: [PATCH v6 2/3] PCI: Move pci_bus_speed2lnkctl2() to public header Date: Mon, 6 Apr 2026 18:56:12 +0800 Message-Id: <20260406105613.1228673-3-18255117159@163.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260406105613.1228673-1-18255117159@163.com> References: <20260406105613.1228673-1-18255117159@163.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wC37wJQkdNpmdyZDg--.25057S4 X-Coremail-Antispam: 1Uf129KBjvJXoW7Ww4UCw4ktF48ury7Kw1kAFb_yoW5JFy7pa 9xCFy5AF18A3W3AFZ0g3WkXa45XFn3GFWUCr43W393XFy3A395Ga4ayFWFvryaqrW0kryr J3WUJF48C3WUKF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0piiF4iUUUUU= X-CM-SenderInfo: rpryjkyvrrlimvzbiqqrwthudrp/xtbCxBPHa2nTkVMHoQAA3l Content-Type: text/plain; charset="utf-8" Move the static array-based pci_bus_speed2lnkctl2() function from bwctrl.c to pci.h as a public inline function. This provides efficient O(1) speed-to-LNKCTL2 value conversion using static array lookup, maintaining optimal performance while enabling code reuse by other PCIe drivers. Signed-off-by: Hans Zhang <18255117159@163.com> Reviewed-by: Shawn Lin --- drivers/pci/pci.h | 17 +++++++++++++++++ drivers/pci/pcie/bwctrl.c | 17 ----------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index f0a082bfd6f1..db91878a86ac 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -611,6 +611,23 @@ static inline bool pcie_valid_speed(enum pci_bus_speed= speed) return (speed >=3D PCIE_SPEED_2_5GT) && (speed <=3D PCIE_SPEED_64_0GT); } =20 +static inline u16 pci_bus_speed2lnkctl2(enum pci_bus_speed speed) +{ + static const u8 speed_conv[] =3D { + [PCIE_SPEED_2_5GT] =3D PCI_EXP_LNKCTL2_TLS_2_5GT, + [PCIE_SPEED_5_0GT] =3D PCI_EXP_LNKCTL2_TLS_5_0GT, + [PCIE_SPEED_8_0GT] =3D PCI_EXP_LNKCTL2_TLS_8_0GT, + [PCIE_SPEED_16_0GT] =3D PCI_EXP_LNKCTL2_TLS_16_0GT, + [PCIE_SPEED_32_0GT] =3D PCI_EXP_LNKCTL2_TLS_32_0GT, + [PCIE_SPEED_64_0GT] =3D PCI_EXP_LNKCTL2_TLS_64_0GT, + }; + + if (WARN_ON_ONCE(!pcie_valid_speed(speed))) + return 0; + + return speed_conv[speed]; +} + static inline int pcie_dev_speed_mbps(enum pci_bus_speed speed) { switch (speed) { diff --git a/drivers/pci/pcie/bwctrl.c b/drivers/pci/pcie/bwctrl.c index ea82e326f164..d48021bfd844 100644 --- a/drivers/pci/pcie/bwctrl.c +++ b/drivers/pci/pcie/bwctrl.c @@ -48,23 +48,6 @@ struct pcie_bwctrl_data { /* Prevent port removal during Link Speed changes. */ static DECLARE_RWSEM(pcie_bwctrl_setspeed_rwsem); =20 -static u16 pci_bus_speed2lnkctl2(enum pci_bus_speed speed) -{ - static const u8 speed_conv[] =3D { - [PCIE_SPEED_2_5GT] =3D PCI_EXP_LNKCTL2_TLS_2_5GT, - [PCIE_SPEED_5_0GT] =3D PCI_EXP_LNKCTL2_TLS_5_0GT, - [PCIE_SPEED_8_0GT] =3D PCI_EXP_LNKCTL2_TLS_8_0GT, - [PCIE_SPEED_16_0GT] =3D PCI_EXP_LNKCTL2_TLS_16_0GT, - [PCIE_SPEED_32_0GT] =3D PCI_EXP_LNKCTL2_TLS_32_0GT, - [PCIE_SPEED_64_0GT] =3D PCI_EXP_LNKCTL2_TLS_64_0GT, - }; - - if (WARN_ON_ONCE(!pcie_valid_speed(speed))) - return 0; - - return speed_conv[speed]; -} - static inline u16 pcie_supported_speeds2target_speed(u8 supported_speeds) { return __fls(supported_speeds); --=20 2.34.1 From nobody Sun Jun 14 20:22:00 2026 Received: from m16.mail.163.com (m16.mail.163.com [220.197.31.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A834208D0; Mon, 6 Apr 2026 10:56:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.31.3 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775473017; cv=none; b=m2bpLBW3+AS7U0jFdvUOmNRMpHUpgcjC9CT1cHpiYH83BFzDEChnEPYR3KiuEGTmdWggmZ1x4HuADpGqDtrptzaTMtelY9qcYqQll7USMufKBAS/559jHCKnrT6ywPkXPj96VvPbHTNUBsc7+FcTXO9lO/E6bWrs8ESllPKJ9j0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775473017; c=relaxed/simple; bh=Z8kylnjFJ+aJpwBQxW1tMwh37HUGbkbLY43b/JiLq7s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=auei8xkuVqofxm34xfYy6w7fbjyPITjgpCHLgEkJFU/0cpZ6EkQs3Vlh57xO9qt/Vw8J6/nJSXh9v3SCcZQH90h1mNZ1jM3mUpXIXcmun0y2EbYvxRWebO0xhIah4tP9FY60PP2zTVbOLjYlGwxtUTr1Nlo3T3fNrqgXzLqSZzw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=Jwd5zyCW; arc=none smtp.client-ip=220.197.31.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="Jwd5zyCW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=Xy Q+1ZInts2Kj8sOfqMzvAw8MSBQMrsqKvKzGRjW+Vs=; b=Jwd5zyCWHJPEY8akZ/ NIbuNUeBSN1J6JX6oL5K7tBTLbAJXm1da5nEaMWh6pLoyBNsccjG/mZQB5OELknJ JicSvoarXdBY2Bur5PSCeHxtFfd/QaM5FXJvdwP0igY3mkDGK74U7rmZfz9aBA+u EUFTYukHPScItdAi6q7y6ZfQk= Received: from Precision-7960.. (unknown []) by gzga-smtp-mtada-g1-4 (Coremail) with SMTP id _____wC37wJQkdNpmdyZDg--.25057S5; Mon, 06 Apr 2026 18:56:19 +0800 (CST) From: Hans Zhang <18255117159@163.com> To: bhelgaas@google.com, lpieralisi@kernel.org, kw@linux.com, kwilczynski@kernel.org, mani@kernel.org, ilpo.jarvinen@linux.intel.com, jingoohan1@gmail.com Cc: robh@kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Hans Zhang <18255117159@163.com> Subject: [PATCH v6 3/3] PCI: dwc: Use common speed conversion function Date: Mon, 6 Apr 2026 18:56:13 +0800 Message-Id: <20260406105613.1228673-4-18255117159@163.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260406105613.1228673-1-18255117159@163.com> References: <20260406105613.1228673-1-18255117159@163.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wC37wJQkdNpmdyZDg--.25057S5 X-Coremail-Antispam: 1Uf129KBjvJXoW7uFWDZFy3tr4UWF4DXw1kKrg_yoW8AFW3pa y3AF4xZF18JF43uFs0ga4kXFyUXFnxGrWDCFZ8WasaqFy2yFZxWF10y34ft34akrZ2yr1a 9w13JrWUG3W7tF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zRnYFtUUUUU= X-CM-SenderInfo: rpryjkyvrrlimvzbiqqrwthudrp/xtbCwxPHa2nTkVPzeQAA3O Content-Type: text/plain; charset="utf-8" Replace the private switch-based speed conversion in dw_pcie_link_set_max_speed() with the public pci_bus_speed2lnkctl2() function. This eliminates duplicate conversion logic and ensures consistency with other PCIe drivers, while handling invalid speeds by falling back to hardware capabilities. Signed-off-by: Hans Zhang <18255117159@163.com> Acked-by: Manivannan Sadhasivam Reviewed-by: Shawn Lin --- drivers/pci/controller/dwc/pcie-designware.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index 06792ba92aa7..ab8dee5d6c7a 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -861,24 +861,12 @@ static void dw_pcie_link_set_max_speed(struct dw_pcie= *pci) ctrl2 =3D dw_pcie_readl_dbi(pci, offset + PCI_EXP_LNKCTL2); ctrl2 &=3D ~PCI_EXP_LNKCTL2_TLS; =20 - switch (pcie_get_link_speed(pci->max_link_speed)) { - case PCIE_SPEED_2_5GT: - link_speed =3D PCI_EXP_LNKCTL2_TLS_2_5GT; - break; - case PCIE_SPEED_5_0GT: - link_speed =3D PCI_EXP_LNKCTL2_TLS_5_0GT; - break; - case PCIE_SPEED_8_0GT: - link_speed =3D PCI_EXP_LNKCTL2_TLS_8_0GT; - break; - case PCIE_SPEED_16_0GT: - link_speed =3D PCI_EXP_LNKCTL2_TLS_16_0GT; - break; - default: + link_speed =3D pcie_get_link_speed(pci->max_link_speed); + link_speed =3D pci_bus_speed2lnkctl2(link_speed); + if (link_speed =3D=3D 0) { /* Use hardware capability */ link_speed =3D FIELD_GET(PCI_EXP_LNKCAP_SLS, cap); ctrl2 &=3D ~PCI_EXP_LNKCTL2_HASD; - break; } =20 dw_pcie_writel_dbi(pci, offset + PCI_EXP_LNKCTL2, ctrl2 | link_speed); --=20 2.34.1