From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BB906CD98C1 for ; Tue, 10 Oct 2023 20:44:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343806AbjJJUou (ORCPT ); Tue, 10 Oct 2023 16:44:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234283AbjJJUor (ORCPT ); Tue, 10 Oct 2023 16:44:47 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF6A899; Tue, 10 Oct 2023 13:44:45 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 27487C433C7; Tue, 10 Oct 2023 20:44:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970685; bh=OwkCq7JGuXWQvF8wdGADxRmgdNMJpmy7jJU/pihVCC4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Cp30P3byp0tMkKOPkBvzwjcj+wYJp36Kc5wakpn74zGIafp7Jg5r56qYodIiBtBo4 vz56KnzJIOT2xbvZPONuDHCWe+baQn3VnT8628xlAP19ciWcwCtUfzOj2CvhkjusKy fLaBSZHWHTpRPZSZYYAaZ9qTNfsggVABIOVojQQBTBvD1QyAhR/4ACtnRlMELUTIEn cuj33Vc9KaFivmjhNFkg9yktfhtACkZAXpkcDn0eH0/56jq3+ezkNpWVPTdbLXDIex 59EE521RQTmOkxgAL+9tHN/dhsvaUUilUataiw1I5rh0RBw2q/oItyOz13aBbG/WCt FLQJTJq2hJe/Q== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 01/10] PCI: Use FIELD_GET() Date: Tue, 10 Oct 2023 15:44:27 -0500 Message-Id: <20231010204436.1000644-2-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Use FIELD_GET() to remove dependences on the field position, i.e., the shift value. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Jonathan Cameron Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/pci.c | 45 ++++++++++++++++++++++----------------------- drivers/pci/probe.c | 8 ++++---- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index a8adc34dc86f..848c9ee65d7f 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -1776,8 +1776,7 @@ static void pci_restore_rebar_state(struct pci_dev *p= dev) return; =20 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl); - nbars =3D (ctrl & PCI_REBAR_CTRL_NBAR_MASK) >> - PCI_REBAR_CTRL_NBAR_SHIFT; + nbars =3D FIELD_GET(PCI_REBAR_CTRL_NBAR_MASK, ctrl); =20 for (i =3D 0; i < nbars; i++, pos +=3D 8) { struct resource *res; @@ -1788,7 +1787,7 @@ static void pci_restore_rebar_state(struct pci_dev *p= dev) res =3D pdev->resource + bar_idx; size =3D pci_rebar_bytes_to_size(resource_size(res)); ctrl &=3D ~PCI_REBAR_CTRL_BAR_SIZE; - ctrl |=3D size << PCI_REBAR_CTRL_BAR_SHIFT; + ctrl |=3D FIELD_PREP(PCI_REBAR_CTRL_BAR_SIZE, size); pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl); } } @@ -3229,7 +3228,7 @@ void pci_pm_init(struct pci_dev *dev) (pmc & PCI_PM_CAP_PME_D2) ? " D2" : "", (pmc & PCI_PM_CAP_PME_D3hot) ? " D3hot" : "", (pmc & PCI_PM_CAP_PME_D3cold) ? " D3cold" : ""); - dev->pme_support =3D pmc >> PCI_PM_CAP_PME_SHIFT; + dev->pme_support =3D FIELD_GET(PCI_PM_CAP_PME_MASK, pmc); dev->pme_poll =3D true; /* * Make device's PM flags reflect the wake-up capability, but @@ -3300,20 +3299,20 @@ static int pci_ea_read(struct pci_dev *dev, int off= set) ent_offset +=3D 4; =20 /* Entry size field indicates DWORDs after 1st */ - ent_size =3D ((dw0 & PCI_EA_ES) + 1) << 2; + ent_size =3D (FIELD_GET(PCI_EA_ES, dw0) + 1) << 2; =20 if (!(dw0 & PCI_EA_ENABLE)) /* Entry not enabled */ goto out; =20 - bei =3D (dw0 & PCI_EA_BEI) >> 4; - prop =3D (dw0 & PCI_EA_PP) >> 8; + bei =3D FIELD_GET(PCI_EA_BEI, dw0); + prop =3D FIELD_GET(PCI_EA_PP, dw0); =20 /* * If the Property is in the reserved range, try the Secondary * Property instead. */ if (prop > PCI_EA_P_BRIDGE_IO && prop < PCI_EA_P_MEM_RESERVED) - prop =3D (dw0 & PCI_EA_SP) >> 16; + prop =3D FIELD_GET(PCI_EA_SP, dw0); if (prop > PCI_EA_P_BRIDGE_IO) goto out; =20 @@ -3720,14 +3719,13 @@ static int pci_rebar_find_pos(struct pci_dev *pdev,= int bar) return -ENOTSUPP; =20 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl); - nbars =3D (ctrl & PCI_REBAR_CTRL_NBAR_MASK) >> - PCI_REBAR_CTRL_NBAR_SHIFT; + nbars =3D FIELD_GET(PCI_REBAR_CTRL_NBAR_MASK, ctrl); =20 for (i =3D 0; i < nbars; i++, pos +=3D 8) { int bar_idx; =20 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl); - bar_idx =3D ctrl & PCI_REBAR_CTRL_BAR_IDX; + bar_idx =3D FIELD_GET(PCI_REBAR_CTRL_BAR_IDX, ctrl); if (bar_idx =3D=3D bar) return pos; } @@ -3782,7 +3780,7 @@ int pci_rebar_get_current_size(struct pci_dev *pdev, = int bar) return pos; =20 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl); - return (ctrl & PCI_REBAR_CTRL_BAR_SIZE) >> PCI_REBAR_CTRL_BAR_SHIFT; + return FIELD_GET(PCI_REBAR_CTRL_BAR_SIZE, ctrl); } =20 /** @@ -3805,7 +3803,7 @@ int pci_rebar_set_size(struct pci_dev *pdev, int bar,= int size) =20 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl); ctrl &=3D ~PCI_REBAR_CTRL_BAR_SIZE; - ctrl |=3D size << PCI_REBAR_CTRL_BAR_SHIFT; + ctrl |=3D FIELD_PREP(PCI_REBAR_CTRL_BAR_SIZE, size); pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl); return 0; } @@ -6043,7 +6041,7 @@ int pcix_get_max_mmrbc(struct pci_dev *dev) if (pci_read_config_dword(dev, cap + PCI_X_STATUS, &stat)) return -EINVAL; =20 - return 512 << ((stat & PCI_X_STATUS_MAX_READ) >> 21); + return 512 << FIELD_GET(PCI_X_STATUS_MAX_READ, stat); } EXPORT_SYMBOL(pcix_get_max_mmrbc); =20 @@ -6066,7 +6064,7 @@ int pcix_get_mmrbc(struct pci_dev *dev) if (pci_read_config_word(dev, cap + PCI_X_CMD, &cmd)) return -EINVAL; =20 - return 512 << ((cmd & PCI_X_CMD_MAX_READ) >> 2); + return 512 << FIELD_GET(PCI_X_CMD_MAX_READ, cmd); } EXPORT_SYMBOL(pcix_get_mmrbc); =20 @@ -6097,19 +6095,19 @@ int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc) if (pci_read_config_dword(dev, cap + PCI_X_STATUS, &stat)) return -EINVAL; =20 - if (v > (stat & PCI_X_STATUS_MAX_READ) >> 21) + if (v > FIELD_GET(PCI_X_STATUS_MAX_READ, stat)) return -E2BIG; =20 if (pci_read_config_word(dev, cap + PCI_X_CMD, &cmd)) return -EINVAL; =20 - o =3D (cmd & PCI_X_CMD_MAX_READ) >> 2; + o =3D FIELD_GET(PCI_X_CMD_MAX_READ, cmd); if (o !=3D v) { if (v > o && (dev->bus->bus_flags & PCI_BUS_FLAGS_NO_MMRBC)) return -EIO; =20 cmd &=3D ~PCI_X_CMD_MAX_READ; - cmd |=3D v << 2; + cmd |=3D FIELD_PREP(PCI_X_CMD_MAX_READ, v); if (pci_write_config_word(dev, cap + PCI_X_CMD, cmd)) return -EIO; } @@ -6129,7 +6127,7 @@ int pcie_get_readrq(struct pci_dev *dev) =20 pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &ctl); =20 - return 128 << ((ctl & PCI_EXP_DEVCTL_READRQ) >> 12); + return 128 << FIELD_GET(PCI_EXP_DEVCTL_READRQ, ctl); } EXPORT_SYMBOL(pcie_get_readrq); =20 @@ -6162,7 +6160,7 @@ int pcie_set_readrq(struct pci_dev *dev, int rq) rq =3D mps; } =20 - v =3D (ffs(rq) - 8) << 12; + v =3D FIELD_PREP(PCI_EXP_DEVCTL_READRQ, ffs(rq) - 8); =20 if (bridge->no_inc_mrrs) { int max_mrrs =3D pcie_get_readrq(dev); @@ -6192,7 +6190,7 @@ int pcie_get_mps(struct pci_dev *dev) =20 pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &ctl); =20 - return 128 << ((ctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5); + return 128 << FIELD_GET(PCI_EXP_DEVCTL_PAYLOAD, ctl); } EXPORT_SYMBOL(pcie_get_mps); =20 @@ -6215,7 +6213,7 @@ int pcie_set_mps(struct pci_dev *dev, int mps) v =3D ffs(mps) - 8; if (v > dev->pcie_mpss) return -EINVAL; - v <<=3D 5; + v =3D FIELD_PREP(PCI_EXP_DEVCTL_PAYLOAD, v); =20 ret =3D pcie_capability_clear_and_set_word(dev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_PAYLOAD, v); @@ -6257,7 +6255,8 @@ u32 pcie_bandwidth_available(struct pci_dev *dev, str= uct pci_dev **limiting_dev, while (dev) { pcie_capability_read_word(dev, PCI_EXP_LNKSTA, &lnksta); =20 - next_speed =3D pcie_link_speed[lnksta & PCI_EXP_LNKSTA_CLS]; + next_speed =3D pcie_link_speed[FIELD_GET(PCI_EXP_LNKSTA_CLS, + lnksta)]; next_width =3D FIELD_GET(PCI_EXP_LNKSTA_NLW, lnksta); =20 next_bw =3D next_width * PCIE_SPEED2MBS_ENC(next_speed); diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 795534589b98..2036c3a120ee 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -807,8 +807,8 @@ static void pci_set_bus_speed(struct pci_bus *bus) } =20 bus->max_bus_speed =3D max; - bus->cur_bus_speed =3D pcix_bus_speed[ - (status & PCI_X_SSTATUS_FREQ) >> 6]; + bus->cur_bus_speed =3D + pcix_bus_speed[FIELD_GET(PCI_X_SSTATUS_FREQ, status)]; =20 return; } @@ -1217,8 +1217,8 @@ static bool pci_ea_fixed_busnrs(struct pci_dev *dev, = u8 *sec, u8 *sub) =20 offset =3D ea + PCI_EA_FIRST_ENT; pci_read_config_dword(dev, offset, &dw); - ea_sec =3D dw & PCI_EA_SEC_BUS_MASK; - ea_sub =3D (dw & PCI_EA_SUB_BUS_MASK) >> PCI_EA_SUB_BUS_SHIFT; + ea_sec =3D FIELD_GET(PCI_EA_SEC_BUS_MASK, dw); + ea_sub =3D FIELD_GET(PCI_EA_SUB_BUS_MASK, dw); if (ea_sec =3D=3D 0 || ea_sub < ea_sec) return false; =20 --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3946CD98C1 for ; Tue, 10 Oct 2023 20:44:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343988AbjJJUox (ORCPT ); Tue, 10 Oct 2023 16:44:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343770AbjJJUos (ORCPT ); Tue, 10 Oct 2023 16:44:48 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CEFF294; Tue, 10 Oct 2023 13:44:47 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 49463C433C7; Tue, 10 Oct 2023 20:44:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970687; bh=oX9EO48DOGu50ALvL0FYfxc5TiflrGjNP6ANRfmI9nU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dcp3Ta1ofBM/0hVvBvQbyhk73p/llhkdXpQaTl1ZjbgsdgaaoEmhzgGWOnkhv6Qe5 Xer7iep60LI6bO6zzWTJ34UHf8Fk15BdG+WOEEO7IA13mVNGzSF8kUlhHh/agRKMuq NS26PXFgBE3R4TDGJ0qvUynINjbx3Zo/Va0BTbruZ7kCZ3vS5bVq7R5nBJA8dW//Wo Vnnu5lskieJpGXUYtWzQiejyyaUc37rHZ9AaD29ewJjV4QAfe0bAjlwLMe/BhCYpV5 V55Ks1gx7/eD/5s/KTOFbUsKnbzkPCHG78UlYNsDCDybtqO+/AyRaVf+67Kf/FQDEN TG3LDBJAHorAg== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas , Nirmoy Das Subject: [PATCH 02/10] PCI: Use FIELD_GET() in Sapphire RX 5600 XT Pulse quirk Date: Tue, 10 Oct 2023 15:44:28 -0500 Message-Id: <20231010204436.1000644-3-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Use FIELD_GET() to remove dependences on the field position, i.e., the shift value. No functional change intended. Separate because this isn't as trivial as the other FIELD_GET() changes. See 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse") Signed-off-by: Bjorn Helgaas Cc: Nirmoy Das Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Jonathan Cameron Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/pci.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 848c9ee65d7f..5dc6e7cdfb71 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3751,14 +3751,14 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pd= ev, int bar) return 0; =20 pci_read_config_dword(pdev, pos + PCI_REBAR_CAP, &cap); - cap &=3D PCI_REBAR_CAP_SIZES; + cap =3D FIELD_GET(PCI_REBAR_CAP_SIZES, cap); =20 /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */ if (pdev->vendor =3D=3D PCI_VENDOR_ID_ATI && pdev->device =3D=3D 0x731f && - bar =3D=3D 0 && cap =3D=3D 0x7000) - cap =3D 0x3f000; + bar =3D=3D 0 && cap =3D=3D 0x700) + return 0x3f00; =20 - return cap >> 4; + return cap; } EXPORT_SYMBOL(pci_rebar_get_possible_sizes); =20 --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 29B67CD98C1 for ; Tue, 10 Oct 2023 20:44:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231526AbjJJUo4 (ORCPT ); Tue, 10 Oct 2023 16:44:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343975AbjJJUov (ORCPT ); Tue, 10 Oct 2023 16:44:51 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1B075A7; Tue, 10 Oct 2023 13:44:50 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 78F7EC433CA; Tue, 10 Oct 2023 20:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970689; bh=NrMDXaeQR98E6Ubw4ieg4ii/aUeCyXW8gwNQ1Gvx2NQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ac/Bhj4h1bZ7zbplnlz/rL7kzcfZVGbjnhdZP0X/Ngws02Y5w2uY7VQTo316/susZ n16TuDvf5x7dj3kQ7Q41nbE6znR6eO9VYPslfaNfw8eX7AgYUbSS4CcAcgNRwWLmZM eduPBhP5vSWtvi9o5so9I8LHm+JBI2hD7giJL+vqgGQs6Bjd5igDjGpdrgZeYNR5kg 8zbVtcXCuw+k1rTPGLllo7zSRtjxJHIUEpMB2mbV176h/vuPLEQlR05irLvtO8R1rs bTz7KMr0/Nf66UjH3//HLUE4+aV6bVEuqwnk3rl/86Gl9j3cM+wZrOisgHPoaLlPNp PJ7b9U9uPOK6Q== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 03/10] PCI/ASPM: Use FIELD_GET() Date: Tue, 10 Oct 2023 15:44:29 -0500 Message-Id: <20231010204436.1000644-4-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Add #defines for T_POWER_ON in the L1 PM Substates Capability and use FIELD_PREP() and FIELD_GET() when possible. These remove the need for explicit shifts. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/pcie/aspm.c | 31 ++++++++++++++++++------------- include/uapi/linux/pci_regs.h | 2 ++ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 1bf630059264..06f175d8dee5 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -7,6 +7,7 @@ * Copyright (C) Shaohua Li (shaohua.li@intel.com) */ =20 +#include #include #include #include @@ -267,7 +268,7 @@ static void pcie_aspm_configure_common_clock(struct pci= e_link_state *link) /* Convert L0s latency encoding to ns */ static u32 calc_l0s_latency(u32 lnkcap) { - u32 encoding =3D (lnkcap & PCI_EXP_LNKCAP_L0SEL) >> 12; + u32 encoding =3D FIELD_GET(PCI_EXP_LNKCAP_L0SEL, lnkcap); =20 if (encoding =3D=3D 0x7) return (5 * 1000); /* > 4us */ @@ -285,7 +286,7 @@ static u32 calc_l0s_acceptable(u32 encoding) /* Convert L1 latency encoding to ns */ static u32 calc_l1_latency(u32 lnkcap) { - u32 encoding =3D (lnkcap & PCI_EXP_LNKCAP_L1EL) >> 15; + u32 encoding =3D FIELD_GET(PCI_EXP_LNKCAP_L1EL, lnkcap); =20 if (encoding =3D=3D 0x7) return (65 * 1000); /* > 64us */ @@ -371,11 +372,11 @@ static void pcie_aspm_check_latency(struct pci_dev *e= ndpoint) link =3D endpoint->bus->self->link_state; =20 /* Calculate endpoint L0s acceptable latency */ - encoding =3D (endpoint->devcap & PCI_EXP_DEVCAP_L0S) >> 6; + encoding =3D FIELD_GET(PCI_EXP_DEVCAP_L0S, endpoint->devcap); acceptable_l0s =3D calc_l0s_acceptable(encoding); =20 /* Calculate endpoint L1 acceptable latency */ - encoding =3D (endpoint->devcap & PCI_EXP_DEVCAP_L1) >> 9; + encoding =3D FIELD_GET(PCI_EXP_DEVCAP_L1, endpoint->devcap); acceptable_l1 =3D calc_l1_acceptable(encoding); =20 while (link) { @@ -446,22 +447,24 @@ static void aspm_calc_l12_info(struct pcie_link_state= *link, u32 pl1_2_enables, cl1_2_enables; =20 /* Choose the greater of the two Port Common_Mode_Restore_Times */ - val1 =3D (parent_l1ss_cap & PCI_L1SS_CAP_CM_RESTORE_TIME) >> 8; - val2 =3D (child_l1ss_cap & PCI_L1SS_CAP_CM_RESTORE_TIME) >> 8; + val1 =3D FIELD_GET(PCI_L1SS_CAP_CM_RESTORE_TIME, parent_l1ss_cap); + val2 =3D FIELD_GET(PCI_L1SS_CAP_CM_RESTORE_TIME, child_l1ss_cap); t_common_mode =3D max(val1, val2); =20 /* Choose the greater of the two Port T_POWER_ON times */ - val1 =3D (parent_l1ss_cap & PCI_L1SS_CAP_P_PWR_ON_VALUE) >> 19; - scale1 =3D (parent_l1ss_cap & PCI_L1SS_CAP_P_PWR_ON_SCALE) >> 16; - val2 =3D (child_l1ss_cap & PCI_L1SS_CAP_P_PWR_ON_VALUE) >> 19; - scale2 =3D (child_l1ss_cap & PCI_L1SS_CAP_P_PWR_ON_SCALE) >> 16; + val1 =3D FIELD_GET(PCI_L1SS_CAP_P_PWR_ON_VALUE, parent_l1ss_cap); + scale1 =3D FIELD_GET(PCI_L1SS_CAP_P_PWR_ON_SCALE, parent_l1ss_cap); + val2 =3D FIELD_GET(PCI_L1SS_CAP_P_PWR_ON_VALUE, child_l1ss_cap); + scale2 =3D FIELD_GET(PCI_L1SS_CAP_P_PWR_ON_SCALE, child_l1ss_cap); =20 if (calc_l12_pwron(parent, scale1, val1) > calc_l12_pwron(child, scale2, val2)) { - ctl2 |=3D scale1 | (val1 << 3); + ctl2 |=3D FIELD_PREP(PCI_L1SS_CTL2_T_PWR_ON_SCALE, scale1) | + FIELD_PREP(PCI_L1SS_CTL2_T_PWR_ON_VALUE, val1); t_power_on =3D calc_l12_pwron(parent, scale1, val1); } else { - ctl2 |=3D scale2 | (val2 << 3); + ctl2 |=3D FIELD_PREP(PCI_L1SS_CTL2_T_PWR_ON_SCALE, scale2) | + FIELD_PREP(PCI_L1SS_CTL2_T_PWR_ON_VALUE, val2); t_power_on =3D calc_l12_pwron(child, scale2, val2); } =20 @@ -477,7 +480,9 @@ static void aspm_calc_l12_info(struct pcie_link_state *= link, */ l1_2_threshold =3D 2 + 4 + t_common_mode + t_power_on; encode_l12_threshold(l1_2_threshold, &scale, &value); - ctl1 |=3D t_common_mode << 8 | scale << 29 | value << 16; + ctl1 |=3D FIELD_PREP(PCI_L1SS_CTL1_CM_RESTORE_TIME, t_common_mode) | + FIELD_PREP(PCI_L1SS_CTL1_LTR_L12_TH_VALUE, value) | + FIELD_PREP(PCI_L1SS_CTL1_LTR_L12_TH_SCALE, scale); =20 /* Some broken devices only support dword access to L1 SS */ pci_read_config_dword(parent, parent->l1ss + PCI_L1SS_CTL1, &pctl1); diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index e5f558d96493..34bf037993f3 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -1088,6 +1088,8 @@ #define PCI_L1SS_CTL1_LTR_L12_TH_VALUE 0x03ff0000 /* LTR_L1.2_THRESHOLD_= Value */ #define PCI_L1SS_CTL1_LTR_L12_TH_SCALE 0xe0000000 /* LTR_L1.2_THRESHOLD_= Scale */ #define PCI_L1SS_CTL2 0x0c /* Control 2 Register */ +#define PCI_L1SS_CTL2_T_PWR_ON_SCALE 0x00000003 /* T_POWER_ON Scale */ +#define PCI_L1SS_CTL2_T_PWR_ON_VALUE 0x000000f8 /* T_POWER_ON Value */ =20 /* Designated Vendor-Specific (DVSEC, PCI_EXT_CAP_ID_DVSEC) */ #define PCI_DVSEC_HEADER1 0x4 /* Designated Vendor-Specific Header1 */ --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AEEB7CD98C1 for ; Tue, 10 Oct 2023 20:45:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344023AbjJJUpF (ORCPT ); Tue, 10 Oct 2023 16:45:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343997AbjJJUoz (ORCPT ); Tue, 10 Oct 2023 16:44:55 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D0A8B9; Tue, 10 Oct 2023 13:44:52 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9C72BC43397; Tue, 10 Oct 2023 20:44:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970691; bh=WdPz6d8tv1u5/JHFuBigckTTNr5z1gq7AjsRKY5KDp0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uQ9Mws9B8+8AJ5quBuIe1U6uRRvbJPuvXTTez7/YqK5f9W0I6JttEkuukAKteW2zK Ob9J2/9KNJKm4XwNSxq1eOQD8AGZ1iuTQhX0xLRSGzqVDHMGgtrNnXL1EJPD5xt30G b2qN7NTWFno3uMTBta8k5GUNzRk8ITfQeLXGS43mqIBOrCfmfszK0MRUbBjFdDSYpj tvm/GUVN7kZNbrSJmujEeAsRgqFIPpKfuATI7lB9+OKc1WNgYDMSjVFqzD2xiT5zZ3 dJsKXg/jJbbbINxyBwd5zZ7WOhzjkF/0IJgEBiSCVunO/7KWKU6nzNOKR7hrkQxenP DnK4YT0uxwyyw== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 04/10] PCI/ATS: Show PASID Capability register width in bitmasks Date: Tue, 10 Oct 2023 15:44:30 -0500 Message-Id: <20231010204436.1000644-5-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas The PASID Capability and Control registers are both 16 bits wide. Use 16-bit wide constants in field names to match the register width. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Jonathan Cameron Reviewed-by: Kuppuswamy Sathyanarayanan --- include/uapi/linux/pci_regs.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index 34bf037993f3..6af1f8d53e97 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -930,12 +930,12 @@ =20 /* Process Address Space ID */ #define PCI_PASID_CAP 0x04 /* PASID feature register */ -#define PCI_PASID_CAP_EXEC 0x02 /* Exec permissions Supported */ -#define PCI_PASID_CAP_PRIV 0x04 /* Privilege Mode Supported */ +#define PCI_PASID_CAP_EXEC 0x0002 /* Exec permissions Supported */ +#define PCI_PASID_CAP_PRIV 0x0004 /* Privilege Mode Supported */ #define PCI_PASID_CTRL 0x06 /* PASID control register */ -#define PCI_PASID_CTRL_ENABLE 0x01 /* Enable bit */ -#define PCI_PASID_CTRL_EXEC 0x02 /* Exec permissions Enable */ -#define PCI_PASID_CTRL_PRIV 0x04 /* Privilege Mode Enable */ +#define PCI_PASID_CTRL_ENABLE 0x0001 /* Enable bit */ +#define PCI_PASID_CTRL_EXEC 0x0002 /* Exec permissions Enable */ +#define PCI_PASID_CTRL_PRIV 0x0004 /* Privilege Mode Enable */ #define PCI_EXT_CAP_PASID_SIZEOF 8 =20 /* Single Root I/O Virtualization */ --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9E20CD98C1 for ; Tue, 10 Oct 2023 20:45:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344031AbjJJUpJ (ORCPT ); Tue, 10 Oct 2023 16:45:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234652AbjJJUo5 (ORCPT ); Tue, 10 Oct 2023 16:44:57 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B06DAC; Tue, 10 Oct 2023 13:44:54 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9A395C433CA; Tue, 10 Oct 2023 20:44:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970693; bh=Y+Uf6ZavQYiu+Y65PyZJCsAfyLBeSZUYDgP/xIZnEz8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JJFFZBLXEtqanXcoXRedx8XQyWzZwWZvBN38J9SM3hzLTadcaeaQesL0gONlZaPLJ EjzAO/Q548Ap2wb2S7RJj5PIjJNHd+cjy8pv3OsxQhTNpLA+/YYezHKbreow3SD0/1 cgFj4IOn0bbupscVCBqHNoXIXi205X9tlchAXUXN2iJkvHzjvnKOqxG5TUoxcMkvs9 hpUHxuAvV7L3tySTbao+PtRmvtgzTakPA+38NLOXYpxXQd8EumvtjVwdWumSbT28vR ITuLaxkC6VJLkWAs3dyG0uckree5NxbyQ4aB4Blv5F05+kGYg+8AZfvPhjFrbYbM90 rwlguxnHdncpg== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 05/10] PCI/ATS: Use FIELD_GET() Date: Tue, 10 Oct 2023 15:44:31 -0500 Message-Id: <20231010204436.1000644-6-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Use FIELD_GET() to remove dependences on the field position, i.e., the shift value. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Jonathan Cameron Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/ats.c | 7 ++----- include/uapi/linux/pci_regs.h | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c index f9cc2e10b676..c570892b2090 100644 --- a/drivers/pci/ats.c +++ b/drivers/pci/ats.c @@ -9,6 +9,7 @@ * Copyright (C) 2011 Advanced Micro Devices, */ =20 +#include #include #include #include @@ -480,8 +481,6 @@ int pci_pasid_features(struct pci_dev *pdev) } EXPORT_SYMBOL_GPL(pci_pasid_features); =20 -#define PASID_NUMBER_SHIFT 8 -#define PASID_NUMBER_MASK (0x1f << PASID_NUMBER_SHIFT) /** * pci_max_pasids - Get maximum number of PASIDs supported by device * @pdev: PCI device structure @@ -503,9 +502,7 @@ int pci_max_pasids(struct pci_dev *pdev) =20 pci_read_config_word(pdev, pasid + PCI_PASID_CAP, &supported); =20 - supported =3D (supported & PASID_NUMBER_MASK) >> PASID_NUMBER_SHIFT; - - return (1 << supported); + return (1 << FIELD_GET(PCI_PASID_CAP_WIDTH, supported)); } EXPORT_SYMBOL_GPL(pci_max_pasids); #endif /* CONFIG_PCI_PASID */ diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index 6af1f8d53e97..833e5fb40ea5 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -932,6 +932,7 @@ #define PCI_PASID_CAP 0x04 /* PASID feature register */ #define PCI_PASID_CAP_EXEC 0x0002 /* Exec permissions Supported */ #define PCI_PASID_CAP_PRIV 0x0004 /* Privilege Mode Supported */ +#define PCI_PASID_CAP_WIDTH 0x1f00 #define PCI_PASID_CTRL 0x06 /* PASID control register */ #define PCI_PASID_CTRL_ENABLE 0x0001 /* Enable bit */ #define PCI_PASID_CTRL_EXEC 0x0002 /* Exec permissions Enable */ --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D795CD98C4 for ; Tue, 10 Oct 2023 20:45:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234717AbjJJUpN (ORCPT ); Tue, 10 Oct 2023 16:45:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49298 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234690AbjJJUo6 (ORCPT ); Tue, 10 Oct 2023 16:44:58 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B7E691; Tue, 10 Oct 2023 13:44:57 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82495C433C9; Tue, 10 Oct 2023 20:44:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970696; bh=BodAKgycQqatnIUaErDwVOgV6Git5gEM6dZfZCZVv2I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WI19XbgMGOQ+M22VcI+ceBZMTpByuDraBwQlqNEohS8JYb6ByTzkJu5h70vE1dnOq OphhMkGvgYUv/sfZQvywDWe0BH0sI8tHEkYzVH1pRcXDF5ox3kxOvw7CxgtAmgrPbB lpb5TgIReju6WnEwjORMUfknrZ7DyoyTMv6mUvohh/vPBVGPTzGRzsgiC75xOsX8O+ ZBqWBl+1W9/YEtgVjZND38ScjTl4cUgN9gN7GTFBaF4aRpG0/tfRq73Fvy5K+mmeLM tzgcSMlVKyjOStcMBi8rVEcOrTnZLyVkX5M5DZ+Rp9kqNPzEQH0G7jwS/b0kD6a7ee zuEX5q1dAr6eg== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 06/10] PCI/DPC: Use FIELD_GET() Date: Tue, 10 Oct 2023 15:44:32 -0500 Message-Id: <20231010204436.1000644-7-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Use FIELD_GET() to remove dependences on the field position, i.e., the shift value. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/pcie/dpc.c | 9 +++++---- drivers/pci/quirks.c | 2 +- include/uapi/linux/pci_regs.h | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index 3ceed8e3de41..6e551f34ec63 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -8,6 +8,7 @@ =20 #define dev_fmt(fmt) "DPC: " fmt =20 +#include #include #include #include @@ -202,7 +203,7 @@ static void dpc_process_rp_pio_error(struct pci_dev *pd= ev) =20 /* Get First Error Pointer */ pci_read_config_word(pdev, cap + PCI_EXP_DPC_STATUS, &dpc_status); - first_error =3D (dpc_status & 0x1f00) >> 8; + first_error =3D FIELD_GET(PCI_EXP_DPC_STATUS_FIRST_ERR, dpc_status); =20 for (i =3D 0; i < ARRAY_SIZE(rp_pio_error_string); i++) { if ((status & ~mask) & (1 << i)) @@ -270,8 +271,8 @@ void dpc_process_error(struct pci_dev *pdev) pci_info(pdev, "containment event, status:%#06x source:%#06x\n", status, source); =20 - reason =3D (status & PCI_EXP_DPC_STATUS_TRIGGER_RSN) >> 1; - ext_reason =3D (status & PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT) >> 5; + reason =3D FIELD_GET(PCI_EXP_DPC_STATUS_TRIGGER_RSN, status); + ext_reason =3D FIELD_GET(PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT, status); pci_warn(pdev, "%s detected\n", (reason =3D=3D 0) ? "unmasked uncorrectable error" : (reason =3D=3D 1) ? "ERR_NONFATAL" : @@ -338,7 +339,7 @@ void pci_dpc_init(struct pci_dev *pdev) /* Quirks may set dpc_rp_log_size if device or firmware is buggy */ if (!pdev->dpc_rp_log_size) { pdev->dpc_rp_log_size =3D - (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8; + FIELD_GET(PCI_EXP_DPC_RP_PIO_LOG_SIZE, cap); if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) { pci_err(pdev, "RP PIO log size %u is invalid\n", pdev->dpc_rp_log_size); diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index eeec1d6f9023..a9fdc2e3f110 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -6154,7 +6154,7 @@ static void dpc_log_size(struct pci_dev *dev) if (!(val & PCI_EXP_DPC_CAP_RP_EXT)) return; =20 - if (!((val & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8)) { + if (FIELD_GET(PCI_EXP_DPC_RP_PIO_LOG_SIZE, val) =3D=3D 0) { pci_info(dev, "Overriding RP PIO Log Size to 4\n"); dev->dpc_rp_log_size =3D 4; } diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index 833e5fb40ea5..e97a06b50f95 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -1046,6 +1046,7 @@ #define PCI_EXP_DPC_STATUS_INTERRUPT 0x0008 /* Interrupt Status */ #define PCI_EXP_DPC_RP_BUSY 0x0010 /* Root Port Busy */ #define PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT 0x0060 /* Trig Reason Extensio= n */ +#define PCI_EXP_DPC_STATUS_FIRST_ERR 0x1f00 /* RP PIO First Error Ptr= */ =20 #define PCI_EXP_DPC_SOURCE_ID 0x0A /* DPC Source Identifier */ =20 --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 77929CD98C1 for ; Tue, 10 Oct 2023 20:45:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229803AbjJJUpQ (ORCPT ); Tue, 10 Oct 2023 16:45:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60904 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234228AbjJJUpC (ORCPT ); Tue, 10 Oct 2023 16:45:02 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEF5999; Tue, 10 Oct 2023 13:45:00 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A1621C433C8; Tue, 10 Oct 2023 20:44:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970700; bh=SgJRtupS7nAWYb0BB4CUnQ7/s6tkDFcfcPN1MGYpdEo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DMAdtbkfo0lFfisjm0xLwJhX+R52fe8k7WECE9pmsA7xM3yYuTx6kE4Ox1n5qq2fF 0MoMu8wmTgTbx6b+gOg4DLQdAKadVkhaRvJ7T9H8XlMPcy3COgUh8X+4QQPKQoGZ5d cSwmx/IrvM3TfUMYX6ydn4VK53tuLGYsk70KpB42F9dXJJKmGL2G9EpUpHdz5ne2Rq 88MX9zIiAndMbxwm9RtoKbQlDKXxJtGR6HQ9Gq95ShgoxWL44sTHPK1kgUJD2ZW7Cq m+D/wkYmUbb2f972cZEIGm2JfWT5H9O/SCaGmrW0e6SiSVR3wO4HovWmFolu1bquNU 3oFM+qUicDxqA== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 07/10] PCI/PME: Use FIELD_GET() Date: Tue, 10 Oct 2023 15:44:33 -0500 Message-Id: <20231010204436.1000644-8-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Use FIELD_GET() to remove dependences on the field position, i.e., the shift value. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Jonathan Cameron Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/pcie/pme.c | 4 +++- include/uapi/linux/pci_regs.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c index ef8ce436ead9..a2daebd9806c 100644 --- a/drivers/pci/pcie/pme.c +++ b/drivers/pci/pcie/pme.c @@ -9,6 +9,7 @@ =20 #define dev_fmt(fmt) "PME: " fmt =20 +#include #include #include #include @@ -235,7 +236,8 @@ static void pcie_pme_work_fn(struct work_struct *work) pcie_clear_root_pme_status(port); =20 spin_unlock_irq(&data->lock); - pcie_pme_handle_request(port, rtsta & 0xffff); + pcie_pme_handle_request(port, + FIELD_GET(PCI_EXP_RTSTA_PME_RQ_ID, rtsta)); spin_lock_irq(&data->lock); =20 continue; diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index e97a06b50f95..9fb8a69241f4 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -637,6 +637,7 @@ #define PCI_EXP_RTCAP 0x1e /* Root Capabilities */ #define PCI_EXP_RTCAP_CRSVIS 0x0001 /* CRS Software Visibility capability= */ #define PCI_EXP_RTSTA 0x20 /* Root Status */ +#define PCI_EXP_RTSTA_PME_RQ_ID 0x0000ffff /* PME Requester ID */ #define PCI_EXP_RTSTA_PME 0x00010000 /* PME status */ #define PCI_EXP_RTSTA_PENDING 0x00020000 /* PME pending */ /* --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4BFB3CD98C1 for ; Tue, 10 Oct 2023 20:45:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344045AbjJJUpV (ORCPT ); Tue, 10 Oct 2023 16:45:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344024AbjJJUpF (ORCPT ); Tue, 10 Oct 2023 16:45:05 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 26799B9; Tue, 10 Oct 2023 13:45:04 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1FCABC43395; Tue, 10 Oct 2023 20:45:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970703; bh=TtBfspZRpLgYTkT4da6v7uokKzQgOLDSBI/yi1ypaEg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n2EmOMtlvdm8PYHlB7p4x4MLdN03vEw95+LLVFIIXE7PHxTfaYx53sFs5199tU6tI xasTG28bJFLsTuGpOw1EMuUdwfLwVlfZ0XQtZfaDVvaHSA89yhtYDWXE3yZaqfdyPN KsDtVyiqdUVW2XLd7l8dO4DxodsJCoYqAzZT1NgXGwxaLC/Wj5G5sAStzEvtiD+EJv mxoQK7Holzu2tjsTkOVq0ofqHpX3OpTkKBTnid8OuTwn1M2mgklDUEM53dyOsT718k OOekZvTUzS7pWXFDylWWyO87lkxfT+09AfHp0kh9XuTxBvgDD5sgKHQkpB+nuVVZgh Nab5lb2+Zi5iw== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 08/10] PCI/PTM: Use FIELD_GET() Date: Tue, 10 Oct 2023 15:44:34 -0500 Message-Id: <20231010204436.1000644-9-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Use FIELD_GET() to remove dependences on the field position, i.e., the shift value. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Jonathan Cameron Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/pcie/ptm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/pci/pcie/ptm.c b/drivers/pci/pcie/ptm.c index b4e5f553467c..7cfb6c0d5dcb 100644 --- a/drivers/pci/pcie/ptm.c +++ b/drivers/pci/pcie/ptm.c @@ -4,6 +4,7 @@ * Copyright (c) 2016, Intel Corporation. */ =20 +#include #include #include #include @@ -53,7 +54,7 @@ void pci_ptm_init(struct pci_dev *dev) pci_add_ext_cap_save_buffer(dev, PCI_EXT_CAP_ID_PTM, sizeof(u32)); =20 pci_read_config_dword(dev, ptm + PCI_PTM_CAP, &cap); - dev->ptm_granularity =3D (cap & PCI_PTM_GRANULARITY_MASK) >> 8; + dev->ptm_granularity =3D FIELD_GET(PCI_PTM_GRANULARITY_MASK, cap); =20 /* * Per the spec recommendation (PCIe r6.0, sec 7.9.15.3), select the @@ -146,7 +147,7 @@ static int __pci_enable_ptm(struct pci_dev *dev) =20 ctrl |=3D PCI_PTM_CTRL_ENABLE; ctrl &=3D ~PCI_PTM_GRANULARITY_MASK; - ctrl |=3D dev->ptm_granularity << 8; + ctrl |=3D FIELD_PREP(PCI_PTM_GRANULARITY_MASK, dev->ptm_granularity); if (dev->ptm_root) ctrl |=3D PCI_PTM_CTRL_ROOT; =20 --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B167FCD98C2 for ; Tue, 10 Oct 2023 20:45:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343978AbjJJUpT (ORCPT ); Tue, 10 Oct 2023 16:45:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49308 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344034AbjJJUpJ (ORCPT ); Tue, 10 Oct 2023 16:45:09 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 62485CA; Tue, 10 Oct 2023 13:45:06 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 68796C433CB; Tue, 10 Oct 2023 20:45:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970706; bh=OVB+pKuPDbde+zczlAAsnMMXpVXRTCdD+xIMqYLAWl8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XOdBLoBNWYWkZLs/1SLg1z2PdC1Yy6R7NbVsdHosYAzTgTDyhvltE78FBR7m3gKBh Qqh4g0vony4q5xLfvdSSzVmKd41HwAgOE3g+ydk+kon2DfdaJp8fob6CQACEp0JvHj kpnRMLDpwG0Omv+cLS/va3n3GOGRKdMRV0QvW/7eOI0/MWUho91H+2n7ktYcFvV6mZ lhuZkyH2sv7WztIevBMixnXqvIemp6BGuS++DgcRpnR9KoEuNcGEJeeE8s/BP5dyVi A+2moRZNzZreUI1zMaHdXHyP946R3GcLEYTRgeEjpZCami57eevd52LR5qORnOjp43 5bChSgbd50xSw== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 09/10] PCI/VC: Use FIELD_GET() Date: Tue, 10 Oct 2023 15:44:35 -0500 Message-Id: <20231010204436.1000644-10-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Use FIELD_GET() to remove dependences on the field position, i.e., the shift value. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Jonathan Cameron Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/vc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/pci/vc.c b/drivers/pci/vc.c index 5fc59ac31145..a4ff7f5f66dd 100644 --- a/drivers/pci/vc.c +++ b/drivers/pci/vc.c @@ -6,6 +6,7 @@ * Author: Alex Williamson */ =20 +#include #include #include #include @@ -201,9 +202,9 @@ static int pci_vc_do_save_buffer(struct pci_dev *dev, i= nt pos, /* Extended VC Count (not counting VC0) */ evcc =3D cap1 & PCI_VC_CAP1_EVCC; /* Low Priority Extended VC Count (not counting VC0) */ - lpevcc =3D (cap1 & PCI_VC_CAP1_LPEVCC) >> 4; + lpevcc =3D FIELD_GET(PCI_VC_CAP1_LPEVCC, cap1); /* Port Arbitration Table Entry Size (bits) */ - parb_size =3D 1 << ((cap1 & PCI_VC_CAP1_ARB_SIZE) >> 10); + parb_size =3D 1 << FIELD_GET(PCI_VC_CAP1_ARB_SIZE, cap1); =20 /* * Port VC Control Register contains VC Arbitration Select, which @@ -231,7 +232,7 @@ static int pci_vc_do_save_buffer(struct pci_dev *dev, i= nt pos, int vcarb_offset; =20 pci_read_config_dword(dev, pos + PCI_VC_PORT_CAP2, &cap2); - vcarb_offset =3D ((cap2 & PCI_VC_CAP2_ARB_OFF) >> 24) * 16; + vcarb_offset =3D FIELD_GET(PCI_VC_CAP2_ARB_OFF, cap2) * 16; =20 if (vcarb_offset) { int size, vcarb_phases =3D 0; @@ -277,7 +278,7 @@ static int pci_vc_do_save_buffer(struct pci_dev *dev, i= nt pos, =20 pci_read_config_dword(dev, pos + PCI_VC_RES_CAP + (i * PCI_CAP_VC_PER_VC_SIZEOF), &cap); - parb_offset =3D ((cap & PCI_VC_RES_CAP_ARB_OFF) >> 24) * 16; + parb_offset =3D FIELD_GET(PCI_VC_RES_CAP_ARB_OFF, cap) * 16; if (parb_offset) { int size, parb_phases =3D 0; =20 --=20 2.34.1 From nobody Fri Jan 2 13:56:10 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC6F0CD98C1 for ; Tue, 10 Oct 2023 20:45:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344067AbjJJUpY (ORCPT ); Tue, 10 Oct 2023 16:45:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234692AbjJJUpK (ORCPT ); Tue, 10 Oct 2023 16:45:10 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83C04D7; Tue, 10 Oct 2023 13:45:08 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CF8F8C433C8; Tue, 10 Oct 2023 20:45:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696970708; bh=uerkQZGYqipwqCuFQ61J4jZM2/uJMxrOLAz96N1VUHQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gwwlxWpwXBzLcKJSFiDey2J05lY58C0khp27EYzOR+7j/nZisNBdsu/8yZDLrqHUH mmFj7mKXeCEd2bfWfkcMpA+GE2WELa4gYHOMTvZ2MUpsNFC/ZALAPteDwaVCalWSNK BWFuU26FvLna1VCbW7jEZRpB15InsJA21QCBt3/nkWsgnYrW0Ug846lpUpGEqKcbOk I8lwolSziT1FQj3ldA593/ypfivoKgcsL9qp7pSRa/aK0DfwQDvhwdkgYF/JlDo2Zh v5w9Y2rO4xtMQxfosYkyexokg9+Ifzj/IDzP/uV1FHo5ytx3JbMn8pA7RtPFmuezAm cSn9UcdQu+UuA== From: Bjorn Helgaas To: linux-pci@vger.kernel.org Cc: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Jonathan Cameron , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH 10/10] PCI/portdrv: Use FIELD_GET() Date: Tue, 10 Oct 2023 15:44:36 -0500 Message-Id: <20231010204436.1000644-11-helgaas@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010204436.1000644-1-helgaas@kernel.org> References: <20231010204436.1000644-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bjorn Helgaas Use FIELD_GET() to remove dependences on the field position, i.e., the shift value. No functional change intended. Signed-off-by: Bjorn Helgaas Reviewed-by: Ilpo J=C3=A4rvinen Reviewed-by: Jonathan Cameron Reviewed-by: Kuppuswamy Sathyanarayanan --- drivers/pci/pcie/portdrv.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/pci/pcie/portdrv.c b/drivers/pci/pcie/portdrv.c index 46fad0d813b2..14a4b89a3b83 100644 --- a/drivers/pci/pcie/portdrv.c +++ b/drivers/pci/pcie/portdrv.c @@ -6,6 +6,7 @@ * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) */ =20 +#include #include #include #include @@ -69,7 +70,7 @@ static int pcie_message_numbers(struct pci_dev *dev, int = mask, if (mask & (PCIE_PORT_SERVICE_PME | PCIE_PORT_SERVICE_HP | PCIE_PORT_SERVICE_BWNOTIF)) { pcie_capability_read_word(dev, PCI_EXP_FLAGS, ®16); - *pme =3D (reg16 & PCI_EXP_FLAGS_IRQ) >> 9; + *pme =3D FIELD_GET(PCI_EXP_FLAGS_IRQ, reg16); nvec =3D *pme + 1; } =20 @@ -81,7 +82,7 @@ static int pcie_message_numbers(struct pci_dev *dev, int = mask, if (pos) { pci_read_config_dword(dev, pos + PCI_ERR_ROOT_STATUS, ®32); - *aer =3D (reg32 & PCI_ERR_ROOT_AER_IRQ) >> 27; + *aer =3D FIELD_GET(PCI_ERR_ROOT_AER_IRQ, reg32); nvec =3D max(nvec, *aer + 1); } } @@ -92,7 +93,7 @@ static int pcie_message_numbers(struct pci_dev *dev, int = mask, if (pos) { pci_read_config_word(dev, pos + PCI_EXP_DPC_CAP, ®16); - *dpc =3D reg16 & PCI_EXP_DPC_IRQ; + *dpc =3D FIELD_GET(PCI_EXP_DPC_IRQ, reg16); nvec =3D max(nvec, *dpc + 1); } } --=20 2.34.1