67 lines
2.5 KiB
Diff
67 lines
2.5 KiB
Diff
|
From patchwork Thu Sep 28 12:58:32 2017
|
||
|
Content-Type: text/plain; charset="utf-8"
|
||
|
MIME-Version: 1.0
|
||
|
Content-Transfer-Encoding: 7bit
|
||
|
Subject: [v2, 1/7] PCI: aardvark: fix logic in PCI configuration read/write
|
||
|
functions
|
||
|
X-Patchwork-Submitter: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||
|
X-Patchwork-Id: 819586
|
||
|
Message-Id: <20170928125838.11887-2-thomas.petazzoni@free-electrons.com>
|
||
|
To: Bjorn Helgaas <bhelgaas@google.com>, linux-pci@vger.kernel.org
|
||
|
Cc: Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
|
||
|
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>, Gregory Clement
|
||
|
<gregory.clement@free-electrons.com>,
|
||
|
Nadav Haklai <nadavh@marvell.com>, Hanna Hawa <hannah@marvell.com>,
|
||
|
Yehuda Yitschak <yehuday@marvell.com>,
|
||
|
linux-arm-kernel@lists.infradead.org, Antoine Tenart
|
||
|
<antoine.tenart@free-electrons.com>, =?utf-8?q?Miqu=C3=A8l_Raynal?=
|
||
|
<miquel.raynal@free-electrons.com>, Victor Gu <xigu@marvell.com>,
|
||
|
stable@vger.kernel.org, Thomas Petazzoni
|
||
|
<thomas.petazzoni@free-electrons.com>
|
||
|
Date: Thu, 28 Sep 2017 14:58:32 +0200
|
||
|
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||
|
List-Id: <linux-pci.vger.kernel.org>
|
||
|
|
||
|
From: Victor Gu <xigu@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@vger.kernel.org>
|
||
|
Signed-off-by: Victor Gu <xigu@marvell.com>
|
||
|
Reviewed-by: Wilson Ding <dingwei@marvell.com>
|
||
|
Reviewed-by: Nadav Haklai <nadavh@marvell.com>
|
||
|
[Thomas: tweak commit log.]
|
||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||
|
---
|
||
|
drivers/pci/host/pci-aardvark.c | 4 ++--
|
||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||
|
|
||
|
--- 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_
|
||
|
u32 reg;
|
||
|
int ret;
|
||
|
|
||
|
- if (PCI_SLOT(devfn) != 0) {
|
||
|
+ if ((bus->number == pcie->root_bus_nr) && (PCI_SLOT(devfn) != 0)) {
|
||
|
*val = 0xffffffff;
|
||
|
return PCIBIOS_DEVICE_NOT_FOUND;
|
||
|
}
|
||
|
@@ -494,7 +494,7 @@ static int advk_pcie_wr_conf(struct pci_
|
||
|
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)
|