On Thu, 2015-03-12 at 17:27 +1100, Michael Ellerman wrote: > The powernv code has some conditional support for running on bare metal > machines that have no OPAL firmware, but provide RTAS. > > No released machines ever supported that, and even in the lab it was > just a transitional hack in the days when OPAL was still being > developed. > > So remove the code. > > Signed-off-by: Michael Ellerman <m...@ellerman.id.au>
Acked-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> > --- > arch/powerpc/platforms/powernv/Kconfig | 7 --- > arch/powerpc/platforms/powernv/pci.c | 98 > +++++++--------------------------- > arch/powerpc/platforms/powernv/setup.c | 19 ------- > arch/powerpc/platforms/powernv/smp.c | 13 ----- > 4 files changed, 19 insertions(+), 118 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/Kconfig > b/arch/powerpc/platforms/powernv/Kconfig > index 45a8ed0585cd..4b044d8cb49a 100644 > --- a/arch/powerpc/platforms/powernv/Kconfig > +++ b/arch/powerpc/platforms/powernv/Kconfig > @@ -19,10 +19,3 @@ config PPC_POWERNV > select CPU_FREQ_GOV_CONSERVATIVE > select PPC_DOORBELL > default y > - > -config PPC_POWERNV_RTAS > - depends on PPC_POWERNV > - bool "Support for RTAS based PowerNV platforms such as BML" > - default y > - select PPC_ICS_RTAS > - select PPC_RTAS > diff --git a/arch/powerpc/platforms/powernv/pci.c > b/arch/powerpc/platforms/powernv/pci.c > index 54323d6b5166..c8939ad221f9 100644 > --- a/arch/powerpc/platforms/powernv/pci.c > +++ b/arch/powerpc/platforms/powernv/pci.c > @@ -679,66 +679,13 @@ void pnv_pci_setup_iommu_table(struct iommu_table *tbl, > tbl->it_type = TCE_PCI; > } > > -static struct iommu_table *pnv_pci_setup_bml_iommu(struct pci_controller > *hose) > -{ > - struct iommu_table *tbl; > - const __be64 *basep, *swinvp; > - const __be32 *sizep; > - > - basep = of_get_property(hose->dn, "linux,tce-base", NULL); > - sizep = of_get_property(hose->dn, "linux,tce-size", NULL); > - if (basep == NULL || sizep == NULL) { > - pr_err("PCI: %s has missing tce entries !\n", > - hose->dn->full_name); > - return NULL; > - } > - tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL, hose->node); > - if (WARN_ON(!tbl)) > - return NULL; > - pnv_pci_setup_iommu_table(tbl, __va(be64_to_cpup(basep)), > - be32_to_cpup(sizep), 0, IOMMU_PAGE_SHIFT_4K); > - iommu_init_table(tbl, hose->node); > - iommu_register_group(tbl, pci_domain_nr(hose->bus), 0); > - > - /* Deal with SW invalidated TCEs when needed (BML way) */ > - swinvp = of_get_property(hose->dn, "linux,tce-sw-invalidate-info", > - NULL); > - if (swinvp) { > - tbl->it_busno = be64_to_cpu(swinvp[1]); > - tbl->it_index = (unsigned long)ioremap(be64_to_cpup(swinvp), 8); > - tbl->it_type = TCE_PCI_SWINV_CREATE | TCE_PCI_SWINV_FREE; > - } > - return tbl; > -} > - > -static void pnv_pci_dma_fallback_setup(struct pci_controller *hose, > - struct pci_dev *pdev) > -{ > - struct device_node *np = pci_bus_to_OF_node(hose->bus); > - struct pci_dn *pdn; > - > - if (np == NULL) > - return; > - pdn = PCI_DN(np); > - if (!pdn->iommu_table) > - pdn->iommu_table = pnv_pci_setup_bml_iommu(hose); > - if (!pdn->iommu_table) > - return; > - set_iommu_table_base_and_group(&pdev->dev, pdn->iommu_table); > -} > - > static void pnv_pci_dma_dev_setup(struct pci_dev *pdev) > { > struct pci_controller *hose = pci_bus_to_host(pdev->bus); > struct pnv_phb *phb = hose->private_data; > > - /* If we have no phb structure, try to setup a fallback based on > - * the device-tree (RTAS PCI for example) > - */ > if (phb && phb->dma_dev_setup) > phb->dma_dev_setup(phb, pdev); > - else > - pnv_pci_dma_fallback_setup(hose, pdev); > } > > int pnv_pci_dma_set_mask(struct pci_dev *pdev, u64 dma_mask) > @@ -784,38 +731,31 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_IBM, 0x3b9, > pnv_p7ioc_rc_quirk); > void __init pnv_pci_init(void) > { > struct device_node *np; > + bool found_ioda = false; > > pci_add_flags(PCI_CAN_SKIP_ISA_ALIGN); > > - /* OPAL absent, try POPAL first then RTAS detection of PHBs */ > - if (!firmware_has_feature(FW_FEATURE_OPAL)) { > -#ifdef CONFIG_PPC_POWERNV_RTAS > - init_pci_config_tokens(); > - find_and_init_phbs(); > -#endif /* CONFIG_PPC_POWERNV_RTAS */ > - } > - /* OPAL is here, do our normal stuff */ > - else { > - int found_ioda = 0; > + /* If we don't have OPAL, eg. in sim, just skip PCI probe */ > + if (!firmware_has_feature(FW_FEATURE_OPAL)) > + return; > > - /* Look for IODA IO-Hubs. We don't support mixing IODA > - * and p5ioc2 due to the need to change some global > - * probing flags > - */ > - for_each_compatible_node(np, NULL, "ibm,ioda-hub") { > - pnv_pci_init_ioda_hub(np); > - found_ioda = 1; > - } > + /* Look for IODA IO-Hubs. We don't support mixing IODA > + * and p5ioc2 due to the need to change some global > + * probing flags > + */ > + for_each_compatible_node(np, NULL, "ibm,ioda-hub") { > + pnv_pci_init_ioda_hub(np); > + found_ioda = true; > + } > > - /* Look for p5ioc2 IO-Hubs */ > - if (!found_ioda) > - for_each_compatible_node(np, NULL, "ibm,p5ioc2") > - pnv_pci_init_p5ioc2_hub(np); > + /* Look for p5ioc2 IO-Hubs */ > + if (!found_ioda) > + for_each_compatible_node(np, NULL, "ibm,p5ioc2") > + pnv_pci_init_p5ioc2_hub(np); > > - /* Look for ioda2 built-in PHB3's */ > - for_each_compatible_node(np, NULL, "ibm,ioda2-phb") > - pnv_pci_init_ioda2_phb(np); > - } > + /* Look for ioda2 built-in PHB3's */ > + for_each_compatible_node(np, NULL, "ibm,ioda2-phb") > + pnv_pci_init_ioda2_phb(np); > > /* Setup the linkage between OF nodes and PHBs */ > pci_devs_phb_init(); > diff --git a/arch/powerpc/platforms/powernv/setup.c > b/arch/powerpc/platforms/powernv/setup.c > index d2de7d5d7574..499ddc0dcf66 100644 > --- a/arch/powerpc/platforms/powernv/setup.c > +++ b/arch/powerpc/platforms/powernv/setup.c > @@ -32,7 +32,6 @@ > #include <asm/machdep.h> > #include <asm/firmware.h> > #include <asm/xics.h> > -#include <asm/rtas.h> > #include <asm/opal.h> > #include <asm/kexec.h> > #include <asm/smp.h> > @@ -278,20 +277,6 @@ static void __init pnv_setup_machdep_opal(void) > ppc_md.handle_hmi_exception = opal_handle_hmi_exception; > } > > -#ifdef CONFIG_PPC_POWERNV_RTAS > -static void __init pnv_setup_machdep_rtas(void) > -{ > - if (rtas_token("get-time-of-day") != RTAS_UNKNOWN_SERVICE) { > - ppc_md.get_boot_time = rtas_get_boot_time; > - ppc_md.get_rtc_time = rtas_get_rtc_time; > - ppc_md.set_rtc_time = rtas_set_rtc_time; > - } > - ppc_md.restart = rtas_restart; > - pm_power_off = rtas_power_off; > - ppc_md.halt = rtas_halt; > -} > -#endif /* CONFIG_PPC_POWERNV_RTAS */ > - > static u32 supported_cpuidle_states; > > int pnv_save_sprs_for_winkle(void) > @@ -465,10 +450,6 @@ static int __init pnv_probe(void) > > if (firmware_has_feature(FW_FEATURE_OPAL)) > pnv_setup_machdep_opal(); > -#ifdef CONFIG_PPC_POWERNV_RTAS > - else if (rtas.base) > - pnv_setup_machdep_rtas(); > -#endif /* CONFIG_PPC_POWERNV_RTAS */ > > pr_debug("PowerNV detected !\n"); > > diff --git a/arch/powerpc/platforms/powernv/smp.c > b/arch/powerpc/platforms/powernv/smp.c > index fc34025ef822..273d7b46f72a 100644 > --- a/arch/powerpc/platforms/powernv/smp.c > +++ b/arch/powerpc/platforms/powernv/smp.c > @@ -25,7 +25,6 @@ > #include <asm/machdep.h> > #include <asm/cputable.h> > #include <asm/firmware.h> > -#include <asm/rtas.h> > #include <asm/vdso_datapage.h> > #include <asm/cputhreads.h> > #include <asm/xics.h> > @@ -241,18 +240,6 @@ void __init pnv_smp_init(void) > { > smp_ops = &pnv_smp_ops; > > - /* XXX We don't yet have a proper entry point from HAL, for > - * now we rely on kexec-style entry from BML > - */ > - > -#ifdef CONFIG_PPC_RTAS > - /* Non-lpar has additional take/give timebase */ > - if (rtas_token("freeze-time-base") != RTAS_UNKNOWN_SERVICE) { > - smp_ops->give_timebase = rtas_give_timebase; > - smp_ops->take_timebase = rtas_take_timebase; > - } > -#endif /* CONFIG_PPC_RTAS */ > - > #ifdef CONFIG_HOTPLUG_CPU > ppc_md.cpu_die = pnv_smp_cpu_kill_self; > #endif _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev