powerpc/pci: Fix setup of Freescale PCI / PCIe controllers
PATCH v2 1/1 powerpc/pci: Fix setup of Freescale PCI / PCIe controllers
Commit 50d8f87d2b3 (powerpc/fsl-pci Make PCIe hotplug work with Freescale PCIe controllers) does not handle non-PCIe controllers properly, which causes a panic during boot for certain configurations.
This patch fixes the issue by calling setup_indirect_pci for all device types. fsl_indirect_read_config is now only used for booke/86xx PCIe controllers.
---
v2: Make it more consistent.
arch/powerpc/sysdev/fsl_pci.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)
arch/powerpc/sysdev/fsl_pci.c +0 -0
@@ -97,20 +97,12 @@ static int fsl_indirect_read_config(struct pci_bus *bus,
unsigned int devfn,
return indirect_read_config(bus, devfn, offset, len, val);
}
-static struct pci_ops fsl_indirect_pci_ops =
+static struct pci_ops fsl_indirect_pcie_ops =
{
.read = fsl_indirect_read_config,
.write = indirect_write_config,
};
-static void __init fsl_setup_indirect_pci(struct pci_controller* hose,
- resource_size_t cfg_addr,
- resource_size_t cfg_data, u32 flags)
-{
- setup_indirect_pci(hose, cfg_addr, cfg_data, flags);
- hose->ops = &fsl_indirect_pci_ops;
-}
-
#if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx)
#define MAX_PHYS_ADDR_BITS 40
@@ -504,13 +496,15 @@ int __init fsl_add_bridge(struct platform_device *pdev, int is_primary)
if (!hose->private_data)
goto no_bridge;
- fsl_setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
- PPC_INDIRECT_TYPE_BIG_ENDIAN);
+ setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
+ PPC_INDIRECT_TYPE_BIG_ENDIAN);
if (in_be32(&pci->block_rev1) < PCIE_IP_REV_3_0)
hose->indirect_type |= PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK;
if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) {
+ /* use fsl_indirect_read_config for PCIe */
+ hose->ops = &fsl_indirect_pcie_ops;
/* For PCIE read HEADER_TYPE to identify controler mode */ early_read_config_byte(hose, 0, 0, PCI_HEADER_TYPE, &hdr_type); if ((hdr_type & 0x7f) != PCI_HEADER_TYPE_BRIDGE)
@@ -814,8 +808,8 @@ int __init mpc83xx_add_bridge(struct device_node *dev)
if (ret)
goto err0;
} else {
- fsl_setup_indirect_pci(hose, rsrc_cfg.start,
- rsrc_cfg.start + 4, 0);
+ setup_indirect_pci(hose, rsrc_cfg.start,
+ rsrc_cfg.start + 4, 0);
}
printk(KERN_INFO "Found FSL PCI host bridge at 0x%016llx. "
--
1.8.1.5
Quoted 21 lines · Rojhalat Ibrahim
Commit
50d8f87d2b3(powerpc/fsl-pci Make PCIe hotplug work with Freescale PCIe controllers) does not handle non-PCIe controllers properly, which causes a panic during boot for certain configurations.
This patch fixes the issue by callingsetup_indirect_pcifor all device types.fsl_indirect_read_configis now only used for booke/86xx PCIe controllers.Reported-by Michael Guntsche <[email protected]>Cc Scott Wood <[email protected]>Signed-off-by Rojhalat Ibrahim <[email protected]>---
v2: Make it more consistent.arch/powerpc/sysdev/fsl_pci.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)arch/powerpc/sysdev/fsl_pci.c +0
-0@@ -97,20 +97,12 @@ static int fsl_indirect_read_config(struct pci_bus *bus,
arch/powerpc/sysdev/fsl_pci.c static int fsl_indirect_read_config(struct · line 106
Quoted 10 lines
arch/powerpc/sysdev/fsl_pci.c +1
-1unsigned int devfn, return indirect_read_config(bus, devfn, offset, len, val); } -static struct pci_ops fsl_indirect_pci_ops = +static struct pci_ops fsl_indirect_pcie_ops = { .read = fsl_indirect_read_config, .write = indirect_write_config, };
On 83xx:
cc1: warnings being treated as errors /home/scott/fsl/git/linux/upstream/arch/powerpc/sysdev/fsl_pci.c:100:23: error: 'fsl_indirect_pcie_ops' defined but not used make[2]: *** [arch/powerpc/sysdev/fsl_pci.o] Error 1
make[2]: *** Waiting for unfinished jobs....
I can fix this when applying, but this makes me wonder how you tested it, given that the whole point is to fix 83xx... Did you fix this and then accidentally sent a stale version?
Also, please be careful that the patch doesn't get line wrapped -- I had to manually unwrap a couple places. Use git send-email if you can't get KMail to cooperate.
-Scott
Quoted 54 lines · On Friday 14 June 2013 15:18:03 Scott Wood wrote:
Quoted 31 lines · Rojhalat Ibrahim
Commit
50d8f87d2b3(powerpc/fsl-pci Make PCIe hotplug work with Freescale
PCIe controllers) does not handle non-PCIe controllers properly, which causes
a panic during boot for certain configurations.
This patch fixes the issue by callingsetup_indirect_pcifor all device types.fsl_indirect_read_configis now only used for booke/86xx PCIe controllers.Reported-by Michael Guntsche <[email protected]>Cc Scott Wood <[email protected]>Signed-off-by Rojhalat Ibrahim <[email protected]>---
v2: Make it more consistent.arch/powerpc/sysdev/fsl_pci.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)arch/powerpc/sysdev/fsl_pci.c +0
-0@@ -97,20 +97,12 @@ static int fsl_indirect_read_config(structpci_bus *bus, unsigned int devfn, return indirect_read_config(bus, devfn, offset, len, val); }arch/powerpc/sysdev/fsl_pci.c static int fsl_indirect_read_config(struct
Quoted 10 lines
arch/powerpc/sysdev/fsl_pci.c +1
-1-static struct pci_ops fsl_indirect_pci_ops = +static struct pci_ops fsl_indirect_pcie_ops = { .read = fsl_indirect_read_config, .write = indirect_write_config, };On 83xx:
cc1: warnings being treated as errors/home/scott/fsl/git/linux/upstream/arch/powerpc/sysdev/fsl_pci.c:100:23:
error: 'fsl_indirect_pcie_ops' defined but not used
make[2]: *** [arch/powerpc/sysdev/fsl_pci.o] Error 1 make[2]: *** Waiting for unfinished jobs....I can fix this when applying, but this makes me wonder how you tested it, given that the whole point is to fix 83xx... Did you fix this and then accidentally sent a stale version?
Quoted 5 lines
Also, please be careful that the patch doesn't get line wrapped -- I had to manually unwrap a couple places. Use git send-email if you can't get KMail to cooperate.
-Scott
Sorry about the mess. I'll send a v3.
Please note: I don't have an 83xx system. So I can only test if it compiles, which I obviously did not do with the right config.
Rojhalat
Quoted 19 lines · Rojhalat Ibrahim
Quoted 3 lines · On Friday 14 June 2013 15:18:03 Scott Wood wrote:
On 83xx:
cc1: warnings being treated as errors
=20
/home/scott/fsl/git/linux/upstream/arch/powerpc/sysdev/fsl_pci.c:100:23:Quoted 5 lines
error: '
fsl_indirect_pcie_ops' defined but not used make[2]: *** [arch/powerpc/sysdev/fsl_pci.o] Error 1 make[2]: *** Waiting for unfinished jobs....I can fix this when applying, but this makes me wonder how you =20
tested
Quoted 1 line
it, given that the whole point is to fix 83xx... Did you fix this =20
and
Quoted 6 lines
then accidentally sent a stale version?
Also, please be careful that the patch doesn't get line wrapped -- I had to manually unwrap a couple places. Use git send-email if you can't get KMail to cooperate.
Quoted 6 lines
Quoted 1 line
-Scott
=20
Sorry about the mess. I'll send a v3.
Please note: I don't have an 83xx system. So I can only test if it =20 compiles,
which I obviously did not do with the right config.
OK, so it looks like it was Michael who ran into the problem on 83xx. =20 Michael, could you test the v3 patch that Rojhalat posted?
-Scott=
Quoted 26 lines · Scott Wood
Quoted 17 lines · Rojhalat Ibrahim
Quoted 15 lines · On Friday 14 June 2013 15:18:03 Scott Wood wrote:
On 83xx:
cc1: warnings being treated as errors/home/scott/fsl/git/linux/upstream/arch/powerpc/sysdev/fsl_pci.c:100:23:
error: 'fsl_indirect_pcie_ops' defined but not used
make[2]: *** [arch/powerpc/sysdev/fsl_pci.o] Error 1 make[2]: *** Waiting for unfinished jobs....I can fix this when applying, but this makes me wonder how you tested it, given that the whole point is to fix 83xx... Did you fix this and then accidentally sent a stale version?
Also, please be careful that the patch doesn't get line wrapped -- I had to manually unwrap a couple places. Use git send-email if you can't get KMail to cooperate.
Quoted 6 lines
Quoted 1 line
-Scott
Sorry about the mess. I'll send a v3.
Please note: I don't have an 83xx system. So I can only test if it compiles,
which I obviously did not do with the right config.
Quoted 4 lines
OK, so it looks like it was Michael who ran into the problem on 83xx. Michael, could you test the v3 patch that Rojhalat posted?
-Scott
I did a quick check against -rc6 and the system compiles and boots up fine.
/Mike