diff options
Diffstat (limited to 'arch/powerpc/kernel/paca.c')
-rw-r--r-- | arch/powerpc/kernel/paca.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/powerpc/kernel/paca.c b/arch/powerpc/kernel/paca.c index 41456ff55e1..0bb1f98613b 100644 --- a/arch/powerpc/kernel/paca.c +++ b/arch/powerpc/kernel/paca.c | |||
@@ -11,13 +11,10 @@ | |||
11 | #include <linux/export.h> | 11 | #include <linux/export.h> |
12 | #include <linux/memblock.h> | 12 | #include <linux/memblock.h> |
13 | 13 | ||
14 | #include <asm/firmware.h> | ||
15 | #include <asm/lppaca.h> | 14 | #include <asm/lppaca.h> |
16 | #include <asm/paca.h> | 15 | #include <asm/paca.h> |
17 | #include <asm/sections.h> | 16 | #include <asm/sections.h> |
18 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
19 | #include <asm/iseries/lpar_map.h> | ||
20 | #include <asm/iseries/hv_types.h> | ||
21 | #include <asm/kexec.h> | 18 | #include <asm/kexec.h> |
22 | 19 | ||
23 | /* This symbol is provided by the linker - let it fill in the paca | 20 | /* This symbol is provided by the linker - let it fill in the paca |
@@ -30,8 +27,8 @@ extern unsigned long __toc_start; | |||
30 | * The structure which the hypervisor knows about - this structure | 27 | * The structure which the hypervisor knows about - this structure |
31 | * should not cross a page boundary. The vpa_init/register_vpa call | 28 | * should not cross a page boundary. The vpa_init/register_vpa call |
32 | * is now known to fail if the lppaca structure crosses a page | 29 | * is now known to fail if the lppaca structure crosses a page |
33 | * boundary. The lppaca is also used on legacy iSeries and POWER5 | 30 | * boundary. The lppaca is also used on POWER5 pSeries boxes. |
34 | * pSeries boxes. The lppaca is 640 bytes long, and cannot readily | 31 | * The lppaca is 640 bytes long, and cannot readily |
35 | * change since the hypervisor knows its layout, so a 1kB alignment | 32 | * change since the hypervisor knows its layout, so a 1kB alignment |
36 | * will suffice to ensure that it doesn't cross a page boundary. | 33 | * will suffice to ensure that it doesn't cross a page boundary. |
37 | */ | 34 | */ |
@@ -183,12 +180,9 @@ void __init allocate_pacas(void) | |||
183 | /* | 180 | /* |
184 | * We can't take SLB misses on the paca, and we want to access them | 181 | * We can't take SLB misses on the paca, and we want to access them |
185 | * in real mode, so allocate them within the RMA and also within | 182 | * in real mode, so allocate them within the RMA and also within |
186 | * the first segment. On iSeries they must be within the area mapped | 183 | * the first segment. |
187 | * by the HV, which is HvPagesToMap * HVPAGESIZE bytes. | ||
188 | */ | 184 | */ |
189 | limit = min(0x10000000ULL, ppc64_rma_size); | 185 | limit = min(0x10000000ULL, ppc64_rma_size); |
190 | if (firmware_has_feature(FW_FEATURE_ISERIES)) | ||
191 | limit = min(limit, HvPagesToMap * HVPAGESIZE); | ||
192 | 186 | ||
193 | paca_size = PAGE_ALIGN(sizeof(struct paca_struct) * nr_cpu_ids); | 187 | paca_size = PAGE_ALIGN(sizeof(struct paca_struct) * nr_cpu_ids); |
194 | 188 | ||