aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDaniel Axtens <dja@axtens.net>2015-04-26 22:33:51 -0400
committerMichael Ellerman <mpe@ellerman.id.au>2015-04-29 05:43:58 -0400
commitd33047fd7e7d93662622888681861ba84d43c506 (patch)
tree0db0b615b405a7405dff852d1d311025c1af2ea5 /arch
parent433c5c20c505fef92be84c6afab70f1c2ab5eda3 (diff)
powerpc/powernv: Fix early pci_controller_ops loading.
Load the PowerNV platform pci controller ops into pci controllers after all the operations are loaded into the platform ops struct, not before. Otherwise we aren't actually setting the ops properly which can break IO for some devices. Fixes: 65ebf4b63 ("powerpc/powernv: Move controller ops from ppc_md to controller_ops") Reported-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Signed-off-by: Daniel Axtens <dja@axtens.net> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/platforms/powernv/pci-ioda.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
index 920c252d1f49..f8bc950efcae 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -2693,7 +2693,6 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np,
2693 hose->last_busno = 0xff; 2693 hose->last_busno = 0xff;
2694 } 2694 }
2695 hose->private_data = phb; 2695 hose->private_data = phb;
2696 hose->controller_ops = pnv_pci_controller_ops;
2697 phb->hub_id = hub_id; 2696 phb->hub_id = hub_id;
2698 phb->opal_id = phb_id; 2697 phb->opal_id = phb_id;
2699 phb->type = ioda_type; 2698 phb->type = ioda_type;
@@ -2812,6 +2811,7 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np,
2812 pnv_pci_controller_ops.enable_device_hook = pnv_pci_enable_device_hook; 2811 pnv_pci_controller_ops.enable_device_hook = pnv_pci_enable_device_hook;
2813 pnv_pci_controller_ops.window_alignment = pnv_pci_window_alignment; 2812 pnv_pci_controller_ops.window_alignment = pnv_pci_window_alignment;
2814 pnv_pci_controller_ops.reset_secondary_bus = pnv_pci_reset_secondary_bus; 2813 pnv_pci_controller_ops.reset_secondary_bus = pnv_pci_reset_secondary_bus;
2814 hose->controller_ops = pnv_pci_controller_ops;
2815 2815
2816#ifdef CONFIG_PCI_IOV 2816#ifdef CONFIG_PCI_IOV
2817 ppc_md.pcibios_fixup_sriov = pnv_pci_ioda_fixup_iov_resources; 2817 ppc_md.pcibios_fixup_sriov = pnv_pci_ioda_fixup_iov_resources;