* [PATCH v5 0/2] PCI: Introduce pci_clear/set_config_dword()
@ 2026-11-12 3:19 Hans Zhang
2026-11-12 3:19 ` [PATCH v5 1/2] " Hans Zhang
2026-11-12 3:19 ` [PATCH v5 2/2] PCI/AER: Use pci_clear/set_config_dword to simplify code Hans Zhang
0 siblings, 2 replies; 5+ messages in thread
From: Hans Zhang @ 2026-11-12 3:19 UTC (permalink / raw)
To: mahesh, bhelgaas
Cc: oohall, mani, lukas, linuxppc-dev, linux-pci, linux-kernel,
Hans Zhang
Hi,
This series introduces auxiliary functions for the PCI configuration space
and simplifies the read and write operations of the AER driver, reducing a
lot of repetitive code.
Patch 1 adds pci_clear_config_dword() and pci_set_config_dword() helpers
to reduce repetitive read-modify-write sequences when modifying PCI config
space. These helpers improve code readability and maintainability.
Patch 2 refactors the PCIe AER driver to use these new helpers,
eliminating manual read-modify-write patterns and intermediate variable
in several functions. This results in cleaner and more concise code.
Changes for v5:
- Rebase onto v7.4-rc2.
Changes for v4:
- Introduce pci_clear/set_config_dword() (Lukas)
Changes for v3:
- Rebase to v6.17-rc1.
- Modify the patch commit messages.
- Add Acked-by: Manivannan Sadhasivam <mani@kernel.org>
Changes for v2:
- Modify the patch commit messages.
- Add new optimizations for the functions disable_ecrc_checking,
aer_enable_irq, and aer_disable_irq.
v4 patch:
https://patchwork.kernel.org/project/linux-pci/patch/20251101162219.12016-2-18255117159@163.com/
v3 series:
https://patchwork.kernel.org/project/linux-pci/patch/20250816161743.340684-1-18255117159@163.com/
Hans Zhang (2):
PCI: Introduce pci_clear/set_config_dword()
PCI/AER: Use pci_clear/set_config_dword to simplify code
drivers/pci/pcie/aer.c | 29 ++++++++++-------------------
include/linux/pci.h | 12 ++++++++++++
2 files changed, 22 insertions(+), 19 deletions(-)
base-commit: 79eb6679ef6a0d5ea68da53a8321fb1dc72299b9
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v5 1/2] PCI: Introduce pci_clear/set_config_dword()
2026-11-12 3:19 [PATCH v5 0/2] PCI: Introduce pci_clear/set_config_dword() Hans Zhang
@ 2026-11-12 3:19 ` Hans Zhang
2026-11-12 3:25 ` sashiko-bot
2026-11-12 3:19 ` [PATCH v5 2/2] PCI/AER: Use pci_clear/set_config_dword to simplify code Hans Zhang
1 sibling, 1 reply; 5+ messages in thread
From: Hans Zhang @ 2026-11-12 3:19 UTC (permalink / raw)
To: mahesh, bhelgaas
Cc: oohall, mani, lukas, linuxppc-dev, linux-pci, linux-kernel,
Hans Zhang
Add helper functions to clear or set bits in PCI config space.
These helpers reduce code duplication and improve readability for config
space modifications by encapsulating common read-modify-write patterns.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
include/linux/pci.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/include/linux/pci.h b/include/linux/pci.h
index aa3765a20a96..be277d745d5d 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1420,6 +1420,18 @@ static inline int pcie_capability_clear_dword(struct pci_dev *dev, int pos,
return pcie_capability_clear_and_set_dword(dev, pos, clear, 0);
}
+static inline void pci_clear_config_dword(const struct pci_dev *dev, int pos,
+ u32 clear)
+{
+ pci_clear_and_set_config_dword(dev, pos, clear, 0);
+}
+
+static inline void pci_set_config_dword(const struct pci_dev *dev, int pos,
+ u32 set)
+{
+ pci_clear_and_set_config_dword(dev, pos, 0, set);
+}
+
/* User-space driven config access */
int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val);
int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val);
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v5 2/2] PCI/AER: Use pci_clear/set_config_dword to simplify code
2026-11-12 3:19 [PATCH v5 0/2] PCI: Introduce pci_clear/set_config_dword() Hans Zhang
2026-11-12 3:19 ` [PATCH v5 1/2] " Hans Zhang
@ 2026-11-12 3:19 ` Hans Zhang
2026-11-12 3:23 ` sashiko-bot
1 sibling, 1 reply; 5+ messages in thread
From: Hans Zhang @ 2026-11-12 3:19 UTC (permalink / raw)
To: mahesh, bhelgaas
Cc: oohall, mani, lukas, linuxppc-dev, linux-pci, linux-kernel,
Hans Zhang
Replace manual read-modify-write sequences in multiple functions with
pci_clear/set_config_dword helper to reduce code duplication.
Signed-off-by: Hans Zhang <18255117159@163.com>
---
drivers/pci/pcie/aer.c | 29 ++++++++++-------------------
1 file changed, 10 insertions(+), 19 deletions(-)
diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index 8708ca3257bb..7ce1cda8bc80 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -201,14 +201,12 @@ static int enable_ecrc_checking(struct pci_dev *dev)
static int disable_ecrc_checking(struct pci_dev *dev)
{
int aer = dev->aer_cap;
- u32 reg32;
if (!aer)
return -ENODEV;
- pci_read_config_dword(dev, aer + PCI_ERR_CAP, ®32);
- reg32 &= ~(PCI_ERR_CAP_ECRC_GENE | PCI_ERR_CAP_ECRC_CHKE);
- pci_write_config_dword(dev, aer + PCI_ERR_CAP, reg32);
+ pci_clear_config_dword(dev, aer + PCI_ERR_CAP,
+ PCI_ERR_CAP_ECRC_GENE | PCI_ERR_CAP_ECRC_CHKE);
return 0;
}
@@ -1272,15 +1270,12 @@ static bool find_source_device(struct pci_dev *parent,
void pci_aer_unmask_internal_errors(struct pci_dev *dev)
{
int aer = dev->aer_cap;
- u32 mask;
- pci_read_config_dword(dev, aer + PCI_ERR_UNCOR_MASK, &mask);
- mask &= ~PCI_ERR_UNC_INTN;
- pci_write_config_dword(dev, aer + PCI_ERR_UNCOR_MASK, mask);
+ pci_clear_config_dword(dev, aer + PCI_ERR_UNCOR_MASK,
+ PCI_ERR_UNC_INTN);
- pci_read_config_dword(dev, aer + PCI_ERR_COR_MASK, &mask);
- mask &= ~PCI_ERR_COR_INTERNAL;
- pci_write_config_dword(dev, aer + PCI_ERR_COR_MASK, mask);
+ pci_clear_config_dword(dev, aer + PCI_ERR_COR_MASK,
+ PCI_ERR_COR_INTERNAL);
}
/*
@@ -1682,23 +1677,19 @@ static irqreturn_t aer_irq(int irq, void *context)
static void aer_enable_irq(struct pci_dev *pdev)
{
int aer = pdev->aer_cap;
- u32 reg32;
/* Enable Root Port's interrupt in response to error messages */
- pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, ®32);
- reg32 |= ROOT_PORT_INTR_ON_MESG_MASK;
- pci_write_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, reg32);
+ pci_set_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND,
+ ROOT_PORT_INTR_ON_MESG_MASK);
}
static void aer_disable_irq(struct pci_dev *pdev)
{
int aer = pdev->aer_cap;
- u32 reg32;
/* Disable Root Port's interrupt in response to error messages */
- pci_read_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, ®32);
- reg32 &= ~ROOT_PORT_INTR_ON_MESG_MASK;
- pci_write_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND, reg32);
+ pci_clear_config_dword(pdev, aer + PCI_ERR_ROOT_COMMAND,
+ ROOT_PORT_INTR_ON_MESG_MASK);
}
static int clear_status_iter(struct pci_dev *dev, void *data)
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v5 2/2] PCI/AER: Use pci_clear/set_config_dword to simplify code
2026-11-12 3:19 ` [PATCH v5 2/2] PCI/AER: Use pci_clear/set_config_dword to simplify code Hans Zhang
@ 2026-11-12 3:23 ` sashiko-bot
0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-11-12 3:23 UTC (permalink / raw)
To: Hans Zhang; +Cc: linux-pci
> Replace manual read-modify-write sequences in multiple functions with
> pci_clear/set_config_dword helper to reduce code duplication.
>
> Signed-off-by: Hans Zhang <18255117159@163.com>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261112031921.1255661-1-18255117159@163.com?part=2
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 1/2] PCI: Introduce pci_clear/set_config_dword()
2026-11-12 3:19 ` [PATCH v5 1/2] " Hans Zhang
@ 2026-11-12 3:25 ` sashiko-bot
0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-11-12 3:25 UTC (permalink / raw)
To: Hans Zhang; +Cc: linux-pci
> Add helper functions to clear or set bits in PCI config space.
> These helpers reduce code duplication and improve readability for config
> space modifications by encapsulating common read-modify-write patterns.
>
> Signed-off-by: Hans Zhang <18255117159@163.com>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261112031921.1255661-1-18255117159@163.com?part=1
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-11-12 3:25 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-12 3:19 [PATCH v5 0/2] PCI: Introduce pci_clear/set_config_dword() Hans Zhang
2026-11-12 3:19 ` [PATCH v5 1/2] " Hans Zhang
2026-11-12 3:25 ` sashiko-bot
2026-11-12 3:19 ` [PATCH v5 2/2] PCI/AER: Use pci_clear/set_config_dword to simplify code Hans Zhang
2026-11-12 3:23 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox