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

Reply via email to