Loading arch/powerpc/include/asm/lppaca.h +16 −0 Original line number Diff line number Diff line Loading @@ -33,9 +33,25 @@ // //---------------------------------------------------------------------------- #include <linux/cache.h> #include <linux/threads.h> #include <asm/types.h> #include <asm/mmu.h> /* * We only have to have statically allocated lppaca structs on * legacy iSeries, which supports at most 64 cpus. */ #ifdef CONFIG_PPC_ISERIES #if NR_CPUS < 64 #define NR_LPPACAS NR_CPUS #else #define NR_LPPACAS 64 #endif #else /* not iSeries */ #define NR_LPPACAS 1 #endif /* The Hypervisor barfs if the lppaca crosses a page boundary. A 1k * alignment is sufficient to prevent this */ struct lppaca { Loading arch/powerpc/kernel/paca.c +0 −14 Original line number Diff line number Diff line Loading @@ -26,20 +26,6 @@ extern unsigned long __toc_start; #ifdef CONFIG_PPC_BOOK3S /* * We only have to have statically allocated lppaca structs on * legacy iSeries, which supports at most 64 cpus. */ #ifdef CONFIG_PPC_ISERIES #if NR_CPUS < 64 #define NR_LPPACAS NR_CPUS #else #define NR_LPPACAS 64 #endif #else /* not iSeries */ #define NR_LPPACAS 1 #endif /* * The structure which the hypervisor knows about - this structure * should not cross a page boundary. The vpa_init/register_vpa call Loading arch/powerpc/mm/numa.c +2 −1 Original line number Diff line number Diff line Loading @@ -1516,7 +1516,8 @@ int start_topology_update(void) { int rc = 0; if (firmware_has_feature(FW_FEATURE_VPHN) && /* Disabled until races with load balancing are fixed */ if (0 && firmware_has_feature(FW_FEATURE_VPHN) && get_lppaca()->shared_proc) { vphn_enabled = 1; setup_cpu_associativity_change_counters(); Loading arch/powerpc/platforms/iseries/dt.c +3 −3 Original line number Diff line number Diff line Loading @@ -242,8 +242,8 @@ static void __init dt_cpus(struct iseries_flat_dt *dt) pft_size[0] = 0; /* NUMA CEC cookie, 0 for non NUMA */ pft_size[1] = __ilog2(HvCallHpt_getHptPages() * HW_PAGE_SIZE); for (i = 0; i < NR_CPUS; i++) { if (lppaca_of(i).dyn_proc_status >= 2) for (i = 0; i < NR_LPPACAS; i++) { if (lppaca[i].dyn_proc_status >= 2) continue; snprintf(p, 32 - (p - buf), "@%d", i); Loading @@ -251,7 +251,7 @@ static void __init dt_cpus(struct iseries_flat_dt *dt) dt_prop_str(dt, "device_type", device_type_cpu); index = lppaca_of(i).dyn_hv_phys_proc_index; index = lppaca[i].dyn_hv_phys_proc_index; d = &xIoHriProcessorVpd[index]; dt_prop_u32(dt, "i-cache-size", d->xInstCacheSize * 1024); Loading arch/powerpc/platforms/iseries/setup.c +1 −0 Original line number Diff line number Diff line Loading @@ -680,6 +680,7 @@ void * __init iSeries_early_setup(void) * on but calling this function multiple times is fine. */ identify_cpu(0, mfspr(SPRN_PVR)); initialise_paca(&boot_paca, 0); powerpc_firmware_features |= FW_FEATURE_ISERIES; powerpc_firmware_features |= FW_FEATURE_LPAR; Loading Loading
arch/powerpc/include/asm/lppaca.h +16 −0 Original line number Diff line number Diff line Loading @@ -33,9 +33,25 @@ // //---------------------------------------------------------------------------- #include <linux/cache.h> #include <linux/threads.h> #include <asm/types.h> #include <asm/mmu.h> /* * We only have to have statically allocated lppaca structs on * legacy iSeries, which supports at most 64 cpus. */ #ifdef CONFIG_PPC_ISERIES #if NR_CPUS < 64 #define NR_LPPACAS NR_CPUS #else #define NR_LPPACAS 64 #endif #else /* not iSeries */ #define NR_LPPACAS 1 #endif /* The Hypervisor barfs if the lppaca crosses a page boundary. A 1k * alignment is sufficient to prevent this */ struct lppaca { Loading
arch/powerpc/kernel/paca.c +0 −14 Original line number Diff line number Diff line Loading @@ -26,20 +26,6 @@ extern unsigned long __toc_start; #ifdef CONFIG_PPC_BOOK3S /* * We only have to have statically allocated lppaca structs on * legacy iSeries, which supports at most 64 cpus. */ #ifdef CONFIG_PPC_ISERIES #if NR_CPUS < 64 #define NR_LPPACAS NR_CPUS #else #define NR_LPPACAS 64 #endif #else /* not iSeries */ #define NR_LPPACAS 1 #endif /* * The structure which the hypervisor knows about - this structure * should not cross a page boundary. The vpa_init/register_vpa call Loading
arch/powerpc/mm/numa.c +2 −1 Original line number Diff line number Diff line Loading @@ -1516,7 +1516,8 @@ int start_topology_update(void) { int rc = 0; if (firmware_has_feature(FW_FEATURE_VPHN) && /* Disabled until races with load balancing are fixed */ if (0 && firmware_has_feature(FW_FEATURE_VPHN) && get_lppaca()->shared_proc) { vphn_enabled = 1; setup_cpu_associativity_change_counters(); Loading
arch/powerpc/platforms/iseries/dt.c +3 −3 Original line number Diff line number Diff line Loading @@ -242,8 +242,8 @@ static void __init dt_cpus(struct iseries_flat_dt *dt) pft_size[0] = 0; /* NUMA CEC cookie, 0 for non NUMA */ pft_size[1] = __ilog2(HvCallHpt_getHptPages() * HW_PAGE_SIZE); for (i = 0; i < NR_CPUS; i++) { if (lppaca_of(i).dyn_proc_status >= 2) for (i = 0; i < NR_LPPACAS; i++) { if (lppaca[i].dyn_proc_status >= 2) continue; snprintf(p, 32 - (p - buf), "@%d", i); Loading @@ -251,7 +251,7 @@ static void __init dt_cpus(struct iseries_flat_dt *dt) dt_prop_str(dt, "device_type", device_type_cpu); index = lppaca_of(i).dyn_hv_phys_proc_index; index = lppaca[i].dyn_hv_phys_proc_index; d = &xIoHriProcessorVpd[index]; dt_prop_u32(dt, "i-cache-size", d->xInstCacheSize * 1024); Loading
arch/powerpc/platforms/iseries/setup.c +1 −0 Original line number Diff line number Diff line Loading @@ -680,6 +680,7 @@ void * __init iSeries_early_setup(void) * on but calling this function multiple times is fine. */ identify_cpu(0, mfspr(SPRN_PVR)); initialise_paca(&boot_paca, 0); powerpc_firmware_features |= FW_FEATURE_ISERIES; powerpc_firmware_features |= FW_FEATURE_LPAR; Loading