Replace the manual read-modify-write sequences in pci_aer_unmask_internal_errors()with pci_clear_and_set_config_dword(). This function performs the read/write operations atomically and reduces code duplication.
Signed-off-by: Hans Zhang <18255117...@163.com> --- drivers/pci/pcie/aer.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index a1cf8c7ef628..20d2d7419fa4 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -953,15 +953,12 @@ static bool find_source_device(struct pci_dev *parent, static 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_and_set_config_dword(dev, aer + PCI_ERR_UNCOR_MASK, + PCI_ERR_UNC_INTN, 0); - 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_and_set_config_dword(dev, aer + PCI_ERR_COR_MASK, + PCI_ERR_COR_INTERNAL, 0); } static bool is_cxl_mem_dev(struct pci_dev *dev) base-commit: ca91b9500108d4cf083a635c2e11c884d5dd20ea -- 2.25.1