PCI: Align PCIe capability and PCI accessor return values
authorBolarinwa Olayemi Saheed <refactormyself@gmail.com>
Mon, 15 Jun 2020 07:32:25 +0000 (09:32 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 26 Jun 2020 18:50:41 +0000 (13:50 -0500)
The PCI config accessors (pci_read_config_word(), et al) return
PCIBIOS_SUCCESSFUL (zero) or positive error values like
PCIBIOS_FUNC_NOT_SUPPORTED.

The PCIe capability accessors similarly return PCIBIOS errors, but in
addition, they can return -EINVAL.  This makes it harder than it should be
to check for errors.

Return PCIBIOS_BAD_REGISTER_NUMBER instead of -EINVAL in all PCIe
capability accessors.

Suggested-by: Bjorn Helgaas <bjorn@helgaas.com>
Link: https://lore.kernel.org/r/20200615073225.24061-9-refactormyself@gmail.com
Signed-off-by: Bolarinwa Olayemi Saheed <refactormyself@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/access.c

index 79c4a2ef269a7d4eeffa68604f6a3c59dee08cc9..cbb3804903a0e428f0870e63bd34e36155239621 100644 (file)
@@ -409,7 +409,7 @@ int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val)
 
        *val = 0;
        if (pos & 1)
-               return -EINVAL;
+               return PCIBIOS_BAD_REGISTER_NUMBER;
 
        if (pcie_capability_reg_implemented(dev, pos)) {
                ret = pci_read_config_word(dev, pci_pcie_cap(dev) + pos, val);
@@ -444,7 +444,7 @@ int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val)
 
        *val = 0;
        if (pos & 3)
-               return -EINVAL;
+               return PCIBIOS_BAD_REGISTER_NUMBER;
 
        if (pcie_capability_reg_implemented(dev, pos)) {
                ret = pci_read_config_dword(dev, pci_pcie_cap(dev) + pos, val);
@@ -469,7 +469,7 @@ EXPORT_SYMBOL(pcie_capability_read_dword);
 int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val)
 {
        if (pos & 1)
-               return -EINVAL;
+               return PCIBIOS_BAD_REGISTER_NUMBER;
 
        if (!pcie_capability_reg_implemented(dev, pos))
                return 0;
@@ -481,7 +481,7 @@ EXPORT_SYMBOL(pcie_capability_write_word);
 int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val)
 {
        if (pos & 3)
-               return -EINVAL;
+               return PCIBIOS_BAD_REGISTER_NUMBER;
 
        if (!pcie_capability_reg_implemented(dev, pos))
                return 0;