* [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations
@ 2026-04-30 16:24 Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 01/16] PCI: Use FIELD_MODIFY() Hans Zhang
` (17 more replies)
0 siblings, 18 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Replace open-coded bitmask clear + FIELD_PREP() sequences with the
dedicated FIELD_MODIFY() macro. FIELD_MODIFY() performs the same
operation but is shorter, less error-prone, and includes compile-time
checks to prevent field overflow.
This series touches the PCI core, PCIe extended capabilities (PTM, IDE,
TPH, MSI, REBAR, IOV, CardBus), and several DesignWare-based and
other PCI host controllers. No functional change is intended.
The patches are split per subsystem or per driver to ease review:
---
Hi, If the Maintainers think it's not necessary, please ignore it.
---
Hans Zhang (16):
PCI: Use FIELD_MODIFY()
PCI/PTM: Use FIELD_MODIFY()
PCI/IDE: Use FIELD_MODIFY()
PCI/IOV: Use FIELD_MODIFY()
PCI/TPH: Use FIELD_MODIFY()
PCI/MSI: Use FIELD_MODIFY()
PCI/REBAR: Use FIELD_MODIFY()
PCI/CARDBUS: Use FIELD_MODIFY()
PCI: al: Use FIELD_MODIFY()
PCI: eswin: Use FIELD_MODIFY()
PCI: s32g: Use FIELD_MODIFY()
PCI: tegra194: Use FIELD_MODIFY()
PCI: qcom: Use FIELD_MODIFY()
PCI: dwc: Use FIELD_MODIFY()
PCI: mvebu: Use FIELD_MODIFY()
PCI: mediatek-gen3: Use FIELD_MODIFY()
drivers/pci/controller/dwc/pcie-al.c | 12 ++----
.../controller/dwc/pcie-designware-debugfs.c | 23 ++++-------
.../pci/controller/dwc/pcie-designware-ep.c | 3 +-
drivers/pci/controller/dwc/pcie-designware.c | 3 +-
drivers/pci/controller/dwc/pcie-eswin.c | 3 +-
drivers/pci/controller/dwc/pcie-nxp-s32g.c | 3 +-
drivers/pci/controller/dwc/pcie-qcom-common.c | 40 +++++++------------
drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +--
drivers/pci/controller/dwc/pcie-tegra194.c | 8 ++--
drivers/pci/controller/pci-mvebu.c | 3 +-
drivers/pci/controller/pcie-mediatek-gen3.c | 3 +-
drivers/pci/ide.c | 6 +--
drivers/pci/iov.c | 3 +-
drivers/pci/msi/msi.c | 11 ++---
drivers/pci/pci.c | 3 +-
drivers/pci/pcie/ptm.c | 3 +-
drivers/pci/rebar.c | 6 +--
drivers/pci/setup-cardbus.c | 3 +-
drivers/pci/tph.c | 10 ++---
19 files changed, 51 insertions(+), 101 deletions(-)
base-commit: 3b3bea6d4b9c162f9e555905d96b8c1da67ecd5b
--
2.34.1
^ permalink raw reply [flat|nested] 21+ messages in thread
* [RESEND PATCH 01/16] PCI: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 02/16] PCI/PTM: " Hans Zhang
` (16 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/pci.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 8f7cfcc00090..942f70f6a441 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -5771,8 +5771,7 @@ int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc)
if (v > o && (dev->bus->bus_flags & PCI_BUS_FLAGS_NO_MMRBC))
return -EIO;
- cmd &= ~PCI_X_CMD_MAX_READ;
- cmd |= FIELD_PREP(PCI_X_CMD_MAX_READ, v);
+ FIELD_MODIFY(PCI_X_CMD_MAX_READ, &cmd, v);
if (pci_write_config_word(dev, cap + PCI_X_CMD, cmd))
return -EIO;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 02/16] PCI/PTM: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 01/16] PCI: Use FIELD_MODIFY() Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 03/16] PCI/IDE: " Hans Zhang
` (15 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/pcie/ptm.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pci/pcie/ptm.c b/drivers/pci/pcie/ptm.c
index a41ffd1914de..bd3bd39f6372 100644
--- a/drivers/pci/pcie/ptm.c
+++ b/drivers/pci/pcie/ptm.c
@@ -152,8 +152,7 @@ static int __pci_enable_ptm(struct pci_dev *dev)
pci_read_config_dword(dev, ptm + PCI_PTM_CTRL, &ctrl);
ctrl |= PCI_PTM_CTRL_ENABLE;
- ctrl &= ~PCI_PTM_GRANULARITY_MASK;
- ctrl |= FIELD_PREP(PCI_PTM_GRANULARITY_MASK, dev->ptm_granularity);
+ FIELD_MODIFY(PCI_PTM_GRANULARITY_MASK, &ctrl, dev->ptm_granularity);
if (dev->ptm_root)
ctrl |= PCI_PTM_CTRL_ROOT;
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 03/16] PCI/IDE: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 01/16] PCI: Use FIELD_MODIFY() Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 02/16] PCI/PTM: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 04/16] PCI/IOV: " Hans Zhang
` (14 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/ide.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/pci/ide.c b/drivers/pci/ide.c
index be74e8f0ae21..beb67b8fb5c5 100644
--- a/drivers/pci/ide.c
+++ b/drivers/pci/ide.c
@@ -170,8 +170,7 @@ void pci_ide_init(struct pci_dev *pdev)
pci_read_config_dword(pdev, pos + PCI_IDE_SEL_CTL, &val);
if (val & PCI_IDE_SEL_CTL_EN)
continue;
- val &= ~PCI_IDE_SEL_CTL_ID;
- val |= FIELD_PREP(PCI_IDE_SEL_CTL_ID, PCI_IDE_RESERVED_STREAM_ID);
+ FIELD_MODIFY(PCI_IDE_SEL_CTL_ID, &val, PCI_IDE_RESERVED_STREAM_ID);
pci_write_config_dword(pdev, pos + PCI_IDE_SEL_CTL, val);
}
@@ -182,8 +181,7 @@ void pci_ide_init(struct pci_dev *pdev)
pci_read_config_dword(pdev, pos, &val);
if (val & PCI_IDE_LINK_CTL_EN)
continue;
- val &= ~PCI_IDE_LINK_CTL_ID;
- val |= FIELD_PREP(PCI_IDE_LINK_CTL_ID, PCI_IDE_RESERVED_STREAM_ID);
+ FIELD_MODIFY(PCI_IDE_LINK_CTL_ID, &val, PCI_IDE_RESERVED_STREAM_ID);
pci_write_config_dword(pdev, pos, val);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 04/16] PCI/IOV: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (2 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 03/16] PCI/IDE: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 05/16] PCI/TPH: " Hans Zhang
` (13 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/iov.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index 91ac4e37ecb9..fdae70abe804 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -946,8 +946,7 @@ static void sriov_restore_vf_rebar_state(struct pci_dev *dev)
pci_read_config_dword(dev, pos + PCI_VF_REBAR_CTRL, &ctrl);
bar_idx = FIELD_GET(PCI_VF_REBAR_CTRL_BAR_IDX, ctrl);
size = pci_rebar_bytes_to_size(dev->sriov->barsz[bar_idx]);
- ctrl &= ~PCI_VF_REBAR_CTRL_BAR_SIZE;
- ctrl |= FIELD_PREP(PCI_VF_REBAR_CTRL_BAR_SIZE, size);
+ FIELD_MODIFY(PCI_VF_REBAR_CTRL_BAR_SIZE, &ctrl, size);
pci_write_config_dword(dev, pos + PCI_VF_REBAR_CTRL, ctrl);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 05/16] PCI/TPH: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (3 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 04/16] PCI/IOV: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 06/16] PCI/MSI: " Hans Zhang
` (12 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/tph.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/pci/tph.c b/drivers/pci/tph.c
index 91145e8d9d95..655ffd60e62f 100644
--- a/drivers/pci/tph.c
+++ b/drivers/pci/tph.c
@@ -139,8 +139,7 @@ static void set_ctrl_reg_req_en(struct pci_dev *pdev, u8 req_type)
pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, ®);
- reg &= ~PCI_TPH_CTRL_REQ_EN_MASK;
- reg |= FIELD_PREP(PCI_TPH_CTRL_REQ_EN_MASK, req_type);
+ FIELD_MODIFY(PCI_TPH_CTRL_REQ_EN_MASK, ®, req_type);
pci_write_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, reg);
}
@@ -427,11 +426,8 @@ int pcie_enable_tph(struct pci_dev *pdev, int mode)
/* Write them into TPH control register */
pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, ®);
- reg &= ~PCI_TPH_CTRL_MODE_SEL_MASK;
- reg |= FIELD_PREP(PCI_TPH_CTRL_MODE_SEL_MASK, pdev->tph_mode);
-
- reg &= ~PCI_TPH_CTRL_REQ_EN_MASK;
- reg |= FIELD_PREP(PCI_TPH_CTRL_REQ_EN_MASK, pdev->tph_req_type);
+ FIELD_MODIFY(PCI_TPH_CTRL_MODE_SEL_MASK, ®, pdev->tph_mode);
+ FIELD_MODIFY(PCI_TPH_CTRL_REQ_EN_MASK, ®, pdev->tph_req_type);
pci_write_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, reg);
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 06/16] PCI/MSI: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (4 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 05/16] PCI/TPH: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 07/16] PCI/REBAR: " Hans Zhang
` (11 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/msi/msi.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c
index 81d24a270a79..33c8b5b98684 100644
--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -201,8 +201,7 @@ static inline void pci_write_msg_msi(struct pci_dev *dev, struct msi_desc *desc,
u16 msgctl;
pci_read_config_word(dev, pos + PCI_MSI_FLAGS, &msgctl);
- msgctl &= ~PCI_MSI_FLAGS_QSIZE;
- msgctl |= FIELD_PREP(PCI_MSI_FLAGS_QSIZE, desc->pci.msi_attrib.multiple);
+ FIELD_MODIFY(PCI_MSI_FLAGS_QSIZE, &msgctl, desc->pci.msi_attrib.multiple);
pci_write_config_word(dev, pos + PCI_MSI_FLAGS, msgctl);
pci_write_config_dword(dev, pos + PCI_MSI_ADDRESS_LO, msg->address_lo);
@@ -532,9 +531,8 @@ void __pci_restore_msi_state(struct pci_dev *dev)
pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
pci_msi_update_mask(entry, 0, 0);
- control &= ~PCI_MSI_FLAGS_QSIZE;
- control |= PCI_MSI_FLAGS_ENABLE |
- FIELD_PREP(PCI_MSI_FLAGS_QSIZE, entry->pci.msi_attrib.multiple);
+ FIELD_MODIFY(PCI_MSI_FLAGS_QSIZE, &control, entry->pci.msi_attrib.multiple);
+ control |= PCI_MSI_FLAGS_ENABLE;
pci_write_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, control);
}
@@ -970,8 +968,7 @@ int pci_msix_write_tph_tag(struct pci_dev *pdev, unsigned int index, u16 tag)
if (!msi_desc || msi_desc->pci.msi_attrib.is_virtual)
return -ENXIO;
- msi_desc->pci.msix_ctrl &= ~PCI_MSIX_ENTRY_CTRL_ST;
- msi_desc->pci.msix_ctrl |= FIELD_PREP(PCI_MSIX_ENTRY_CTRL_ST, tag);
+ FIELD_MODIFY(PCI_MSIX_ENTRY_CTRL_ST, &msi_desc->pci.msix_ctrl, tag);
pci_msix_write_vector_ctrl(msi_desc, msi_desc->pci.msix_ctrl);
/* Flush the write */
readl(pci_msix_desc_addr(msi_desc));
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 07/16] PCI/REBAR: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (5 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 06/16] PCI/MSI: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 08/16] PCI/CARDBUS: " Hans Zhang
` (10 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/rebar.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/pci/rebar.c b/drivers/pci/rebar.c
index 39f8cf3b70d5..e3e0415fc29a 100644
--- a/drivers/pci/rebar.c
+++ b/drivers/pci/rebar.c
@@ -211,8 +211,7 @@ int pci_rebar_set_size(struct pci_dev *pdev, int bar, int size)
return pos;
pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
- ctrl &= ~PCI_REBAR_CTRL_BAR_SIZE;
- ctrl |= FIELD_PREP(PCI_REBAR_CTRL_BAR_SIZE, size);
+ FIELD_MODIFY(PCI_REBAR_CTRL_BAR_SIZE, &ctrl, size);
pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl);
if (pci_resource_is_iov(bar))
@@ -241,8 +240,7 @@ void pci_restore_rebar_state(struct pci_dev *pdev)
bar_idx = ctrl & PCI_REBAR_CTRL_BAR_IDX;
res = pci_resource_n(pdev, bar_idx);
size = pci_rebar_bytes_to_size(resource_size(res));
- ctrl &= ~PCI_REBAR_CTRL_BAR_SIZE;
- ctrl |= FIELD_PREP(PCI_REBAR_CTRL_BAR_SIZE, size);
+ FIELD_MODIFY(PCI_REBAR_CTRL_BAR_SIZE, &ctrl, size);
pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 08/16] PCI/CARDBUS: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (6 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 07/16] PCI/REBAR: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 09/16] PCI: al: " Hans Zhang
` (9 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/setup-cardbus.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pci/setup-cardbus.c b/drivers/pci/setup-cardbus.c
index 1ebd13a1f730..f7c62054f227 100644
--- a/drivers/pci/setup-cardbus.c
+++ b/drivers/pci/setup-cardbus.c
@@ -253,8 +253,7 @@ int pci_cardbus_scan_bridge_extend(struct pci_bus *bus, struct pci_dev *dev,
* yenta.c forces a secondary latency timer of 176.
* Copy that behaviour here.
*/
- buses &= ~PCI_SEC_LATENCY_TIMER_MASK;
- buses |= FIELD_PREP(PCI_SEC_LATENCY_TIMER_MASK, CARDBUS_LATENCY_TIMER);
+ FIELD_MODIFY(PCI_SEC_LATENCY_TIMER_MASK, &buses, CARDBUS_LATENCY_TIMER);
/* We need to blast all three values with a single write */
pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 09/16] PCI: al: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (7 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 08/16] PCI/CARDBUS: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 10/16] PCI: eswin: " Hans Zhang
` (8 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/controller/dwc/pcie-al.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-al.c b/drivers/pci/controller/dwc/pcie-al.c
index 345c281c74fe..ef8c8ce7c78c 100644
--- a/drivers/pci/controller/dwc/pcie-al.c
+++ b/drivers/pci/controller/dwc/pcie-al.c
@@ -253,7 +253,6 @@ static int al_pcie_config_prepare(struct al_pcie *pcie)
u8 subordinate_bus;
u8 secondary_bus;
u32 cfg_control;
- u32 reg;
ft = resource_list_first_type(&pp->bridge->windows, IORESOURCE_BUS);
if (!ft)
@@ -285,14 +284,9 @@ static int al_pcie_config_prepare(struct al_pcie *pcie)
CFG_CONTROL;
cfg_control = al_pcie_controller_readl(pcie, cfg_control_offset);
-
- reg = cfg_control &
- ~(CFG_CONTROL_SEC_BUS_MASK | CFG_CONTROL_SUBBUS_MASK);
-
- reg |= FIELD_PREP(CFG_CONTROL_SUBBUS_MASK, subordinate_bus) |
- FIELD_PREP(CFG_CONTROL_SEC_BUS_MASK, secondary_bus);
-
- al_pcie_controller_writel(pcie, cfg_control_offset, reg);
+ FIELD_MODIFY(CFG_CONTROL_SUBBUS_MASK, &cfg_control, subordinate_bus);
+ FIELD_MODIFY(CFG_CONTROL_SEC_BUS_MASK, &cfg_control, secondary_bus);
+ al_pcie_controller_writel(pcie, cfg_control_offset, cfg_control);
return 0;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 10/16] PCI: eswin: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (8 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 09/16] PCI: al: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 11/16] PCI: s32g: " Hans Zhang
` (7 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/controller/dwc/pcie-eswin.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-eswin.c b/drivers/pci/controller/dwc/pcie-eswin.c
index 2845832b3824..ce8d64f8a395 100644
--- a/drivers/pci/controller/dwc/pcie-eswin.c
+++ b/drivers/pci/controller/dwc/pcie-eswin.c
@@ -211,8 +211,7 @@ static int eswin_pcie_host_init(struct dw_pcie_rp *pp)
/* Configure Root Port type */
val = readl_relaxed(pci->elbi_base + PCIEELBI_CTRL0_OFFSET);
- val &= ~PCIEELBI_CTRL0_DEV_TYPE;
- val |= FIELD_PREP(PCIEELBI_CTRL0_DEV_TYPE, PCI_EXP_TYPE_ROOT_PORT);
+ FIELD_MODIFY(PCIEELBI_CTRL0_DEV_TYPE, &val, PCI_EXP_TYPE_ROOT_PORT);
writel_relaxed(val, pci->elbi_base + PCIEELBI_CTRL0_OFFSET);
list_for_each_entry(port, &pcie->ports, list) {
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 11/16] PCI: s32g: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (9 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 10/16] PCI: eswin: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-05-04 19:12 ` Frank Li
2026-04-30 16:24 ` [RESEND PATCH 12/16] PCI: tegra194: " Hans Zhang
` (6 subsequent siblings)
17 siblings, 1 reply; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/controller/dwc/pcie-nxp-s32g.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-nxp-s32g.c b/drivers/pci/controller/dwc/pcie-nxp-s32g.c
index b3ec38099fa3..31e1169b8ab6 100644
--- a/drivers/pci/controller/dwc/pcie-nxp-s32g.c
+++ b/drivers/pci/controller/dwc/pcie-nxp-s32g.c
@@ -139,8 +139,7 @@ static int s32g_init_pcie_controller(struct dw_pcie_rp *pp)
/* Set RP mode */
val = s32g_pcie_readl_ctrl(s32g_pp, PCIE_S32G_PE0_GEN_CTRL_1);
- val &= ~DEVICE_TYPE_MASK;
- val |= FIELD_PREP(DEVICE_TYPE_MASK, PCI_EXP_TYPE_ROOT_PORT);
+ FIELD_MODIFY(DEVICE_TYPE_MASK, &val, PCI_EXP_TYPE_ROOT_PORT);
/* Use default CRNS */
val &= ~SRIS_MODE;
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 12/16] PCI: tegra194: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (10 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 11/16] PCI: s32g: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 13/16] PCI: qcom: " Hans Zhang
` (5 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/controller/dwc/pcie-tegra194.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c
index 9dcfa194050e..3c831331338e 100644
--- a/drivers/pci/controller/dwc/pcie-tegra194.c
+++ b/drivers/pci/controller/dwc/pcie-tegra194.c
@@ -872,8 +872,7 @@ static void config_gen3_gen4_eq_presets(struct tegra_pcie_dw *pcie)
dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, val);
val = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF);
- val &= ~GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC;
- val |= FIELD_PREP(GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC, 0x3ff);
+ FIELD_MODIFY(GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC, &val, 0x3ff);
val &= ~GEN3_EQ_CONTROL_OFF_FB_MODE;
dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, val);
@@ -883,9 +882,8 @@ static void config_gen3_gen4_eq_presets(struct tegra_pcie_dw *pcie)
dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, val);
val = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF);
- val &= ~GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC;
- val |= FIELD_PREP(GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC,
- pcie->of_data->gen4_preset_vec);
+ FIELD_MODIFY(GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC, &val,
+ pcie->of_data->gen4_preset_vec);
val &= ~GEN3_EQ_CONTROL_OFF_FB_MODE;
dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, val);
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 13/16] PCI: qcom: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (11 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 12/16] PCI: tegra194: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 14/16] PCI: dwc: " Hans Zhang
` (4 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/controller/dwc/pcie-qcom-common.c | 40 +++++++------------
drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +--
2 files changed, 16 insertions(+), 30 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.c b/drivers/pci/controller/dwc/pcie-qcom-common.c
index 5aa73c628737..0da73caf2011 100644
--- a/drivers/pci/controller/dwc/pcie-qcom-common.c
+++ b/drivers/pci/controller/dwc/pcie-qcom-common.c
@@ -30,20 +30,15 @@ void qcom_pcie_common_set_equalization(struct dw_pcie *pci)
reg = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF);
reg &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL;
- reg &= ~GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK;
- reg |= FIELD_PREP(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK,
- speed - PCIE_SPEED_8_0GT);
+ FIELD_MODIFY(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK, ®,
+ speed - PCIE_SPEED_8_0GT);
dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, reg);
reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF);
- reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 |
- GEN3_EQ_FMDC_N_EVALS |
- GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA |
- GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA);
- reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) |
- FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) |
- FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA, 0x5) |
- FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA, 0x5);
+ FIELD_MODIFY(GEN3_EQ_FMDC_T_MIN_PHASE23, ®, 0x1);
+ FIELD_MODIFY(GEN3_EQ_FMDC_N_EVALS, ®, 0xd);
+ FIELD_MODIFY(GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA, ®, 0x5);
+ FIELD_MODIFY(GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA, ®, 0x5);
dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg);
reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF);
@@ -61,14 +56,10 @@ void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci)
u32 reg;
reg = dw_pcie_readl_dbi(pci, GEN4_LANE_MARGINING_1_OFF);
- reg &= ~(MARGINING_MAX_VOLTAGE_OFFSET |
- MARGINING_NUM_VOLTAGE_STEPS |
- MARGINING_MAX_TIMING_OFFSET |
- MARGINING_NUM_TIMING_STEPS);
- reg |= FIELD_PREP(MARGINING_MAX_VOLTAGE_OFFSET, 0x24) |
- FIELD_PREP(MARGINING_NUM_VOLTAGE_STEPS, 0x78) |
- FIELD_PREP(MARGINING_MAX_TIMING_OFFSET, 0x32) |
- FIELD_PREP(MARGINING_NUM_TIMING_STEPS, 0x10);
+ FIELD_MODIFY(MARGINING_MAX_VOLTAGE_OFFSET, ®, 0x24);
+ FIELD_MODIFY(MARGINING_NUM_VOLTAGE_STEPS, ®, 0x78);
+ FIELD_MODIFY(MARGINING_MAX_TIMING_OFFSET, ®, 0x32);
+ FIELD_MODIFY(MARGINING_NUM_TIMING_STEPS, ®, 0x10);
dw_pcie_writel_dbi(pci, GEN4_LANE_MARGINING_1_OFF, reg);
reg = dw_pcie_readl_dbi(pci, GEN4_LANE_MARGINING_2_OFF);
@@ -76,13 +67,10 @@ void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci)
MARGINING_SAMPLE_REPORTING_METHOD |
MARGINING_IND_LEFT_RIGHT_TIMING |
MARGINING_VOLTAGE_SUPPORTED;
- reg &= ~(MARGINING_IND_UP_DOWN_VOLTAGE |
- MARGINING_MAXLANES |
- MARGINING_SAMPLE_RATE_TIMING |
- MARGINING_SAMPLE_RATE_VOLTAGE);
- reg |= FIELD_PREP(MARGINING_MAXLANES, pci->num_lanes) |
- FIELD_PREP(MARGINING_SAMPLE_RATE_TIMING, 0x3f) |
- FIELD_PREP(MARGINING_SAMPLE_RATE_VOLTAGE, 0x3f);
+ reg &= ~MARGINING_IND_UP_DOWN_VOLTAGE;
+ FIELD_MODIFY(MARGINING_MAXLANES, ®, pci->num_lanes);
+ FIELD_MODIFY(MARGINING_SAMPLE_RATE_TIMING, ®, 0x3f);
+ FIELD_MODIFY(MARGINING_SAMPLE_RATE_VOLTAGE, ®, 0x3f);
dw_pcie_writel_dbi(pci, GEN4_LANE_MARGINING_2_OFF, reg);
}
EXPORT_SYMBOL_GPL(qcom_pcie_common_set_16gt_lane_margining);
diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c
index 257c2bcb5f76..56184e6ca6e6 100644
--- a/drivers/pci/controller/dwc/pcie-qcom-ep.c
+++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c
@@ -494,15 +494,13 @@ static int qcom_pcie_perst_deassert(struct dw_pcie *pci)
/* Set the L0s Exit Latency to 2us-4us = 0x6 */
offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
val = dw_pcie_readl_dbi(pci, offset + PCI_EXP_LNKCAP);
- val &= ~PCI_EXP_LNKCAP_L0SEL;
- val |= FIELD_PREP(PCI_EXP_LNKCAP_L0SEL, 0x6);
+ FIELD_MODIFY(PCI_EXP_LNKCAP_L0SEL, &val, 0x6);
dw_pcie_writel_dbi(pci, offset + PCI_EXP_LNKCAP, val);
/* Set the L1 Exit Latency to be 32us-64 us = 0x6 */
offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
val = dw_pcie_readl_dbi(pci, offset + PCI_EXP_LNKCAP);
- val &= ~PCI_EXP_LNKCAP_L1EL;
- val |= FIELD_PREP(PCI_EXP_LNKCAP_L1EL, 0x6);
+ FIELD_MODIFY(PCI_EXP_LNKCAP_L1EL, &val, 0x6);
dw_pcie_writel_dbi(pci, offset + PCI_EXP_LNKCAP, val);
dw_pcie_dbi_ro_wr_dis(pci);
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 14/16] PCI: dwc: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (12 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 13/16] PCI: qcom: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 15/16] PCI: mvebu: " Hans Zhang
` (3 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
.../controller/dwc/pcie-designware-debugfs.c | 23 +++++++------------
.../pci/controller/dwc/pcie-designware-ep.c | 3 +--
drivers/pci/controller/dwc/pcie-designware.c | 3 +--
3 files changed, 10 insertions(+), 19 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-designware-debugfs.c b/drivers/pci/controller/dwc/pcie-designware-debugfs.c
index d0884253be97..945f8f9b6d0e 100644
--- a/drivers/pci/controller/dwc/pcie-designware-debugfs.c
+++ b/drivers/pci/controller/dwc/pcie-designware-debugfs.c
@@ -265,8 +265,7 @@ static ssize_t lane_detect_write(struct file *file, const char __user *buf,
return ret;
val = dw_pcie_readl_dbi(pci, rinfo->ras_cap_offset + SD_STATUS_L1LANE_REG);
- val &= ~(LANE_SELECT);
- val |= FIELD_PREP(LANE_SELECT, lane);
+ FIELD_MODIFY(LANE_SELECT, &val, lane);
dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + SD_STATUS_L1LANE_REG, val);
return count;
@@ -339,14 +338,10 @@ static ssize_t err_inj_write(struct file *file, const char __user *buf,
val |= ((err_inj_list[pdata->idx].err_inj_type << EINJ_TYPE_SHIFT) & type_mask);
val |= FIELD_PREP(EINJ_COUNT, counter);
- if (err_group == 1 || err_group == 4) {
- val &= ~(EINJ_VAL_DIFF);
- val |= FIELD_PREP(EINJ_VAL_DIFF, val_diff);
- }
- if (err_group == 4) {
- val &= ~(EINJ_VC_NUM);
- val |= FIELD_PREP(EINJ_VC_NUM, vc_num);
- }
+ if (err_group == 1 || err_group == 4)
+ FIELD_MODIFY(EINJ_VAL_DIFF, &val, val_diff);
+ if (err_group == 4)
+ FIELD_MODIFY(EINJ_VC_NUM, &val, vc_num);
dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + ERR_INJ0_OFF + (0x4 * err_group), val);
dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + ERR_INJ_ENABLE_REG, (0x1 << err_group));
@@ -362,9 +357,8 @@ static void set_event_number(struct dwc_pcie_rasdes_priv *pdata,
val = dw_pcie_readl_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_CTRL_REG);
val &= ~EVENT_COUNTER_ENABLE;
- val &= ~(EVENT_COUNTER_GROUP_SELECT | EVENT_COUNTER_EVENT_SELECT);
- val |= FIELD_PREP(EVENT_COUNTER_GROUP_SELECT, event_list[pdata->idx].group_no);
- val |= FIELD_PREP(EVENT_COUNTER_EVENT_SELECT, event_list[pdata->idx].event_no);
+ FIELD_MODIFY(EVENT_COUNTER_GROUP_SELECT, &val, event_list[pdata->idx].group_no);
+ FIELD_MODIFY(EVENT_COUNTER_EVENT_SELECT, &val, event_list[pdata->idx].event_no);
dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_CTRL_REG, val);
}
@@ -469,8 +463,7 @@ static ssize_t counter_lane_write(struct file *file, const char __user *buf,
mutex_lock(&rinfo->reg_event_lock);
set_event_number(pdata, pci, rinfo);
val = dw_pcie_readl_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_CTRL_REG);
- val &= ~(EVENT_COUNTER_LANE_SELECT);
- val |= FIELD_PREP(EVENT_COUNTER_LANE_SELECT, lane);
+ FIELD_MODIFY(EVENT_COUNTER_LANE_SELECT, &val, lane);
dw_pcie_writel_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_CTRL_REG, val);
mutex_unlock(&rinfo->reg_event_lock);
diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/controller/dwc/pcie-designware-ep.c
index d4dc3b24da60..88e7fc3d5e9d 100644
--- a/drivers/pci/controller/dwc/pcie-designware-ep.c
+++ b/drivers/pci/controller/dwc/pcie-designware-ep.c
@@ -707,8 +707,7 @@ static int dw_pcie_ep_set_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no,
reg = ep_func->msi_cap + PCI_MSI_FLAGS;
val = dw_pcie_ep_readw_dbi(ep, func_no, reg);
- val &= ~PCI_MSI_FLAGS_QMASK;
- val |= FIELD_PREP(PCI_MSI_FLAGS_QMASK, mmc);
+ FIELD_MODIFY(PCI_MSI_FLAGS_QMASK, &val, mmc);
dw_pcie_dbi_ro_wr_en(pci);
dw_pcie_ep_writew_dbi(ep, func_no, reg, val);
dw_pcie_dbi_ro_wr_dis(pci);
diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c
index c11cf61b8319..bcfc7bfcf232 100644
--- a/drivers/pci/controller/dwc/pcie-designware.c
+++ b/drivers/pci/controller/dwc/pcie-designware.c
@@ -938,8 +938,7 @@ static void dw_pcie_link_set_max_link_width(struct dw_pcie *pci, u32 num_lanes)
cap = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
lnkcap = dw_pcie_readl_dbi(pci, cap + PCI_EXP_LNKCAP);
- lnkcap &= ~PCI_EXP_LNKCAP_MLW;
- lnkcap |= FIELD_PREP(PCI_EXP_LNKCAP_MLW, num_lanes);
+ FIELD_MODIFY(PCI_EXP_LNKCAP_MLW, &lnkcap, num_lanes);
dw_pcie_writel_dbi(pci, cap + PCI_EXP_LNKCAP, lnkcap);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 15/16] PCI: mvebu: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (13 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 14/16] PCI: dwc: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 16/16] PCI: mediatek-gen3: " Hans Zhang
` (2 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/controller/pci-mvebu.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c
index a72aa57591c0..d6eb65b8cd7f 100644
--- a/drivers/pci/controller/pci-mvebu.c
+++ b/drivers/pci/controller/pci-mvebu.c
@@ -263,8 +263,7 @@ static void mvebu_pcie_setup_hw(struct mvebu_pcie_port *port)
* not set correctly then link with endpoint card is not established.
*/
lnkcap = mvebu_readl(port, PCIE_CAP_PCIEXP + PCI_EXP_LNKCAP);
- lnkcap &= ~PCI_EXP_LNKCAP_MLW;
- lnkcap |= FIELD_PREP(PCI_EXP_LNKCAP_MLW, port->is_x4 ? 4 : 1);
+ FIELD_MODIFY(PCI_EXP_LNKCAP_MLW, &lnkcap, port->is_x4 ? 4 : 1);
mvebu_writel(port, lnkcap, PCIE_CAP_PCIEXP + PCI_EXP_LNKCAP);
/* Disable Root Bridge I/O space, memory space and bus mastering. */
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RESEND PATCH 16/16] PCI: mediatek-gen3: Use FIELD_MODIFY()
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (14 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 15/16] PCI: mvebu: " Hans Zhang
@ 2026-04-30 16:24 ` Hans Zhang
2026-04-30 18:08 ` [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Bjorn Helgaas
2026-05-05 16:54 ` Bjorn Helgaas
17 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-04-30 16:24 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1
Cc: robh, s32, linux-pci, linux-kernel, Hans Zhang
Use FIELD_MODIFY() to remove open-coded bit manipulation.
No functional change intended.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/controller/pcie-mediatek-gen3.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/controller/pcie-mediatek-gen3.c
index b0accd828589..f36a616a8b52 100644
--- a/drivers/pci/controller/pcie-mediatek-gen3.c
+++ b/drivers/pci/controller/pcie-mediatek-gen3.c
@@ -494,8 +494,7 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie)
/* Set Link Control 2 (LNKCTL2) speed restriction, if any */
if (pcie->max_link_speed) {
val = readl_relaxed(pcie->base + PCIE_CONF_LINK2_CTL_STS);
- val &= ~PCIE_CONF_LINK2_LCR2_LINK_SPEED;
- val |= FIELD_PREP(PCIE_CONF_LINK2_LCR2_LINK_SPEED, pcie->max_link_speed);
+ FIELD_MODIFY(PCIE_CONF_LINK2_LCR2_LINK_SPEED, &val, pcie->max_link_speed);
writel_relaxed(val, pcie->base + PCIE_CONF_LINK2_CTL_STS);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (15 preceding siblings ...)
2026-04-30 16:24 ` [RESEND PATCH 16/16] PCI: mediatek-gen3: " Hans Zhang
@ 2026-04-30 18:08 ` Bjorn Helgaas
2026-05-01 14:19 ` Hans Zhang
2026-05-05 16:54 ` Bjorn Helgaas
17 siblings, 1 reply; 21+ messages in thread
From: Bjorn Helgaas @ 2026-04-30 18:08 UTC (permalink / raw)
To: Hans Zhang
Cc: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1, robh, s32,
linux-pci, linux-kernel
On Fri, May 01, 2026 at 12:24:04AM +0800, Hans Zhang wrote:
> Replace open-coded bitmask clear + FIELD_PREP() sequences with the
> dedicated FIELD_MODIFY() macro. FIELD_MODIFY() performs the same
> operation but is shorter, less error-prone, and includes compile-time
> checks to prevent field overflow.
>
> This series touches the PCI core, PCIe extended capabilities (PTM, IDE,
> TPH, MSI, REBAR, IOV, CardBus), and several DesignWare-based and
> other PCI host controllers. No functional change is intended.
>
> The patches are split per subsystem or per driver to ease review:
A "resend" implies that this is the same series as posted earlier but
forgotten for some reason. But the original was only twelve minutes
earlier, and this adds more instances. This should be a "v2" with a
note about what changed from the original posting. In any event, I'll
ignore the original posting in favor of this one.
Looks like a good candidate for coccinelle.
> Hans Zhang (16):
> PCI: Use FIELD_MODIFY()
> PCI/PTM: Use FIELD_MODIFY()
> PCI/IDE: Use FIELD_MODIFY()
> PCI/IOV: Use FIELD_MODIFY()
> PCI/TPH: Use FIELD_MODIFY()
> PCI/MSI: Use FIELD_MODIFY()
> PCI/REBAR: Use FIELD_MODIFY()
> PCI/CARDBUS: Use FIELD_MODIFY()
> PCI: al: Use FIELD_MODIFY()
> PCI: eswin: Use FIELD_MODIFY()
> PCI: s32g: Use FIELD_MODIFY()
> PCI: tegra194: Use FIELD_MODIFY()
> PCI: qcom: Use FIELD_MODIFY()
> PCI: dwc: Use FIELD_MODIFY()
> PCI: mvebu: Use FIELD_MODIFY()
> PCI: mediatek-gen3: Use FIELD_MODIFY()
>
> drivers/pci/controller/dwc/pcie-al.c | 12 ++----
> .../controller/dwc/pcie-designware-debugfs.c | 23 ++++-------
> .../pci/controller/dwc/pcie-designware-ep.c | 3 +-
> drivers/pci/controller/dwc/pcie-designware.c | 3 +-
> drivers/pci/controller/dwc/pcie-eswin.c | 3 +-
> drivers/pci/controller/dwc/pcie-nxp-s32g.c | 3 +-
> drivers/pci/controller/dwc/pcie-qcom-common.c | 40 +++++++------------
> drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +--
> drivers/pci/controller/dwc/pcie-tegra194.c | 8 ++--
> drivers/pci/controller/pci-mvebu.c | 3 +-
> drivers/pci/controller/pcie-mediatek-gen3.c | 3 +-
> drivers/pci/ide.c | 6 +--
> drivers/pci/iov.c | 3 +-
> drivers/pci/msi/msi.c | 11 ++---
> drivers/pci/pci.c | 3 +-
> drivers/pci/pcie/ptm.c | 3 +-
> drivers/pci/rebar.c | 6 +--
> drivers/pci/setup-cardbus.c | 3 +-
> drivers/pci/tph.c | 10 ++---
> 19 files changed, 51 insertions(+), 101 deletions(-)
>
>
> base-commit: 3b3bea6d4b9c162f9e555905d96b8c1da67ecd5b
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations
2026-04-30 18:08 ` [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Bjorn Helgaas
@ 2026-05-01 14:19 ` Hans Zhang
0 siblings, 0 replies; 21+ messages in thread
From: Hans Zhang @ 2026-05-01 14:19 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1, robh, s32,
linux-pci, linux-kernel
On 5/1/26 02:08, Bjorn Helgaas wrote:
> On Fri, May 01, 2026 at 12:24:04AM +0800, Hans Zhang wrote:
>> Replace open-coded bitmask clear + FIELD_PREP() sequences with the
>> dedicated FIELD_MODIFY() macro. FIELD_MODIFY() performs the same
>> operation but is shorter, less error-prone, and includes compile-time
>> checks to prevent field overflow.
>>
>> This series touches the PCI core, PCIe extended capabilities (PTM, IDE,
>> TPH, MSI, REBAR, IOV, CardBus), and several DesignWare-based and
>> other PCI host controllers. No functional change is intended.
>>
>> The patches are split per subsystem or per driver to ease review:
>
> A "resend" implies that this is the same series as posted earlier but
> forgotten for some reason. But the original was only twelve minutes
> earlier, and this adds more instances. This should be a "v2" with a
> note about what changed from the original posting. In any event, I'll
> ignore the original posting in favor of this one.
Hi Bjorn,
Sorry.
Due to the fact that my development environment uses the 163 email
service provided by China, the command "git send-email
--no-chain-reply-to --quiet --to xxx --cc xxx" will not send the patches
if there are more than 10 of them. Therefore, the following command
needs to be executed: git send-email --no-chain-reply-to --quiet
--batch-size=5 --relogin-delay=10 --to xxx --cc xxx. This way, you can
send more than 10 patches. Next time, I will be more careful when
sending and will also increment the version number.
Best regards,
Hans
>
> Looks like a good candidate for coccinelle.
>
>> Hans Zhang (16):
>> PCI: Use FIELD_MODIFY()
>> PCI/PTM: Use FIELD_MODIFY()
>> PCI/IDE: Use FIELD_MODIFY()
>> PCI/IOV: Use FIELD_MODIFY()
>> PCI/TPH: Use FIELD_MODIFY()
>> PCI/MSI: Use FIELD_MODIFY()
>> PCI/REBAR: Use FIELD_MODIFY()
>> PCI/CARDBUS: Use FIELD_MODIFY()
>> PCI: al: Use FIELD_MODIFY()
>> PCI: eswin: Use FIELD_MODIFY()
>> PCI: s32g: Use FIELD_MODIFY()
>> PCI: tegra194: Use FIELD_MODIFY()
>> PCI: qcom: Use FIELD_MODIFY()
>> PCI: dwc: Use FIELD_MODIFY()
>> PCI: mvebu: Use FIELD_MODIFY()
>> PCI: mediatek-gen3: Use FIELD_MODIFY()
>>
>> drivers/pci/controller/dwc/pcie-al.c | 12 ++----
>> .../controller/dwc/pcie-designware-debugfs.c | 23 ++++-------
>> .../pci/controller/dwc/pcie-designware-ep.c | 3 +-
>> drivers/pci/controller/dwc/pcie-designware.c | 3 +-
>> drivers/pci/controller/dwc/pcie-eswin.c | 3 +-
>> drivers/pci/controller/dwc/pcie-nxp-s32g.c | 3 +-
>> drivers/pci/controller/dwc/pcie-qcom-common.c | 40 +++++++------------
>> drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +--
>> drivers/pci/controller/dwc/pcie-tegra194.c | 8 ++--
>> drivers/pci/controller/pci-mvebu.c | 3 +-
>> drivers/pci/controller/pcie-mediatek-gen3.c | 3 +-
>> drivers/pci/ide.c | 6 +--
>> drivers/pci/iov.c | 3 +-
>> drivers/pci/msi/msi.c | 11 ++---
>> drivers/pci/pci.c | 3 +-
>> drivers/pci/pcie/ptm.c | 3 +-
>> drivers/pci/rebar.c | 6 +--
>> drivers/pci/setup-cardbus.c | 3 +-
>> drivers/pci/tph.c | 10 ++---
>> 19 files changed, 51 insertions(+), 101 deletions(-)
>>
>>
>> base-commit: 3b3bea6d4b9c162f9e555905d96b8c1da67ecd5b
>> --
>> 2.34.1
>>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RESEND PATCH 11/16] PCI: s32g: Use FIELD_MODIFY()
2026-04-30 16:24 ` [RESEND PATCH 11/16] PCI: s32g: " Hans Zhang
@ 2026-05-04 19:12 ` Frank Li
0 siblings, 0 replies; 21+ messages in thread
From: Frank Li @ 2026-05-04 19:12 UTC (permalink / raw)
To: Hans Zhang
Cc: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1, robh, s32,
linux-pci, linux-kernel
On Fri, May 01, 2026 at 12:24:15AM +0800, Hans Zhang wrote:
> Use FIELD_MODIFY() to remove open-coded bit manipulation.
> No functional change intended.
>
> Signed-off-by: Hans Zhang <18255117159@163.com>
> ---
Reviewed-by: Frank Li <Frank.Li@nxp.com>
> drivers/pci/controller/dwc/pcie-nxp-s32g.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-nxp-s32g.c b/drivers/pci/controller/dwc/pcie-nxp-s32g.c
> index b3ec38099fa3..31e1169b8ab6 100644
> --- a/drivers/pci/controller/dwc/pcie-nxp-s32g.c
> +++ b/drivers/pci/controller/dwc/pcie-nxp-s32g.c
> @@ -139,8 +139,7 @@ static int s32g_init_pcie_controller(struct dw_pcie_rp *pp)
>
> /* Set RP mode */
> val = s32g_pcie_readl_ctrl(s32g_pp, PCIE_S32G_PE0_GEN_CTRL_1);
> - val &= ~DEVICE_TYPE_MASK;
> - val |= FIELD_PREP(DEVICE_TYPE_MASK, PCI_EXP_TYPE_ROOT_PORT);
> + FIELD_MODIFY(DEVICE_TYPE_MASK, &val, PCI_EXP_TYPE_ROOT_PORT);
>
> /* Use default CRNS */
> val &= ~SRIS_MODE;
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
` (16 preceding siblings ...)
2026-04-30 18:08 ` [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Bjorn Helgaas
@ 2026-05-05 16:54 ` Bjorn Helgaas
17 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2026-05-05 16:54 UTC (permalink / raw)
To: Hans Zhang
Cc: bhelgaas, lpieralisi, kwilczynski, mani, jingoohan1, robh, s32,
linux-pci, linux-kernel
On Fri, May 01, 2026 at 12:24:04AM +0800, Hans Zhang wrote:
> Replace open-coded bitmask clear + FIELD_PREP() sequences with the
> dedicated FIELD_MODIFY() macro. FIELD_MODIFY() performs the same
> operation but is shorter, less error-prone, and includes compile-time
> checks to prevent field overflow.
>
> This series touches the PCI core, PCIe extended capabilities (PTM, IDE,
> TPH, MSI, REBAR, IOV, CardBus), and several DesignWare-based and
> other PCI host controllers. No functional change is intended.
>
> The patches are split per subsystem or per driver to ease review:
> ---
> Hi, If the Maintainers think it's not necessary, please ignore it.
> ---
>
> Hans Zhang (16):
> PCI: Use FIELD_MODIFY()
> PCI/PTM: Use FIELD_MODIFY()
> PCI/IDE: Use FIELD_MODIFY()
> PCI/IOV: Use FIELD_MODIFY()
> PCI/TPH: Use FIELD_MODIFY()
> PCI/MSI: Use FIELD_MODIFY()
> PCI/REBAR: Use FIELD_MODIFY()
> PCI/CARDBUS: Use FIELD_MODIFY()
> PCI: al: Use FIELD_MODIFY()
> PCI: eswin: Use FIELD_MODIFY()
> PCI: s32g: Use FIELD_MODIFY()
> PCI: tegra194: Use FIELD_MODIFY()
> PCI: qcom: Use FIELD_MODIFY()
> PCI: dwc: Use FIELD_MODIFY()
> PCI: mvebu: Use FIELD_MODIFY()
> PCI: mediatek-gen3: Use FIELD_MODIFY()
>
> drivers/pci/controller/dwc/pcie-al.c | 12 ++----
> .../controller/dwc/pcie-designware-debugfs.c | 23 ++++-------
> .../pci/controller/dwc/pcie-designware-ep.c | 3 +-
> drivers/pci/controller/dwc/pcie-designware.c | 3 +-
> drivers/pci/controller/dwc/pcie-eswin.c | 3 +-
> drivers/pci/controller/dwc/pcie-nxp-s32g.c | 3 +-
> drivers/pci/controller/dwc/pcie-qcom-common.c | 40 +++++++------------
> drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +--
> drivers/pci/controller/dwc/pcie-tegra194.c | 8 ++--
> drivers/pci/controller/pci-mvebu.c | 3 +-
> drivers/pci/controller/pcie-mediatek-gen3.c | 3 +-
> drivers/pci/ide.c | 6 +--
> drivers/pci/iov.c | 3 +-
> drivers/pci/msi/msi.c | 11 ++---
> drivers/pci/pci.c | 3 +-
> drivers/pci/pcie/ptm.c | 3 +-
> drivers/pci/rebar.c | 6 +--
> drivers/pci/setup-cardbus.c | 3 +-
> drivers/pci/tph.c | 10 ++---
> 19 files changed, 51 insertions(+), 101 deletions(-)
I squashed these together since they're all doing exactly the same
thing and applied to pci/misc for v7.2, thanks! I think this makes it
noticeably easier to read, especially in the cases where we update
several register fields at once.
Sashiko noticed the dev->sriov->barsz[] array bounds issue, which is
mostly addressed by another pending patch: https://patch.msgid.link/44a4ae53ec2825816b816c85cd378430d9a95cc6.1776429882.git.mnencia@kcore.it
Sashiko also flagged a potential pcie-mediatek-gen3.c issue related to
checking the return from pci_runtime_get_sync(), but that has nothing
to do with this patch, so I'll just forward that to the Mediatek
folks.
https://sashiko.dev/#/patchset/20260430162420.42839-1-18255117159%40163.com
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2026-05-05 16:54 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-30 16:24 [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 01/16] PCI: Use FIELD_MODIFY() Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 02/16] PCI/PTM: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 03/16] PCI/IDE: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 04/16] PCI/IOV: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 05/16] PCI/TPH: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 06/16] PCI/MSI: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 07/16] PCI/REBAR: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 08/16] PCI/CARDBUS: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 09/16] PCI: al: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 10/16] PCI: eswin: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 11/16] PCI: s32g: " Hans Zhang
2026-05-04 19:12 ` Frank Li
2026-04-30 16:24 ` [RESEND PATCH 12/16] PCI: tegra194: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 13/16] PCI: qcom: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 14/16] PCI: dwc: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 15/16] PCI: mvebu: " Hans Zhang
2026-04-30 16:24 ` [RESEND PATCH 16/16] PCI: mediatek-gen3: " Hans Zhang
2026-04-30 18:08 ` [RESEND PATCH 00/16] PCI: Use FIELD_MODIFY() to simplify bitfield operations Bjorn Helgaas
2026-05-01 14:19 ` Hans Zhang
2026-05-05 16:54 ` Bjorn Helgaas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox