[PATCH v2 1/7] PCI: aardvark: fix logic in PCI configuration read/write functions
Bjorn Helgaas
helgaas at kernel.org
Thu Oct 5 10:23:30 PDT 2017
On Thu, Sep 28, 2017 at 02:58:32PM +0200, Thomas Petazzoni wrote:
> From: Victor Gu <xigu at marvell.com>
>
> The PCI configuration space read/write functions were special casing
> the situation where PCI_SLOT(devfn) != 0, and returned
> PCIBIOS_DEVICE_NOT_FOUND in this case.
>
> However, will this is what is intended for the root bus, it is not
> intended for the child busses, as it prevents discovering devices with
> PCI_SLOT(x) != 0. Therefore, we return PCIBIOS_DEVICE_NOT_FOUND only
> if we're on the root bus.
>
> Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
> Cc: <stable at vger.kernel.org>
> Signed-off-by: Victor Gu <xigu at marvell.com>
> Reviewed-by: Wilson Ding <dingwei at marvell.com>
> Reviewed-by: Nadav Haklai <nadavh at marvell.com>
> [Thomas: tweak commit log.]
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
> drivers/pci/host/pci-aardvark.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
> index 89f4e3d072d7..da2881ba7737 100644
> --- a/drivers/pci/host/pci-aardvark.c
> +++ b/drivers/pci/host/pci-aardvark.c
> @@ -440,7 +440,7 @@ static int advk_pcie_rd_conf(struct pci_bus *bus, u32 devfn,
> u32 reg;
> int ret;
>
> - if (PCI_SLOT(devfn) != 0) {
> + if ((bus->number == pcie->root_bus_nr) && (PCI_SLOT(devfn) != 0)) {
I'm fine with this, but please take a look at these:
8e7ca8ca5fd8 PCI: xilinx: Relax device number checking to allow SR-IOV
e18934b5e9c7 PCI: designware: Relax device number checking to allow SR-IOV
d99e30b7936a PCI: altera: Relax device number checking to allow SR-IOV
and make sure that reasoning doesn't apply here, too.
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8e7ca8ca5fd8
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e18934b5e9c7
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d99e30b7936a
> *val = 0xffffffff;
> return PCIBIOS_DEVICE_NOT_FOUND;
> }
> @@ -494,7 +494,7 @@ static int advk_pcie_wr_conf(struct pci_bus *bus, u32 devfn,
> int offset;
> int ret;
>
> - if (PCI_SLOT(devfn) != 0)
> + if ((bus->number == pcie->root_bus_nr) && (PCI_SLOT(devfn) != 0))
> return PCIBIOS_DEVICE_NOT_FOUND;
>
> if (where % size)
> --
> 2.13.5
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
More information about the linux-arm-kernel
mailing list