Skip to contentSkip to conversation

powerpc/pci: Fix setup of Freescale PCI / PCIe controllers

PATCH Superseded Rojhalat Ibrahim 3 participants 5 messages Jun 14, 2013 – Jun 18, 2013 PowerPC

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

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
index 028ac1f..5682c8a 100644
@@ -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

#1 lore raw
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 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
index 028ac1f..5682c8a 100644
@@ -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 -1
 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,
 };

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

#2 lore raw
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 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
index 028ac1f..5682c8a 100644
@@ -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);
 
 }

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

#3 lore raw
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=

#4 lore raw
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