diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/kernel/setup_64.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 7ac8e6eaab5b..8d586cff8a41 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c | |||
@@ -226,17 +226,25 @@ static void __init configure_exceptions(void) | |||
226 | if (firmware_has_feature(FW_FEATURE_OPAL)) | 226 | if (firmware_has_feature(FW_FEATURE_OPAL)) |
227 | opal_configure_cores(); | 227 | opal_configure_cores(); |
228 | 228 | ||
229 | /* Enable AIL if supported, and we are in hypervisor mode */ | 229 | /* AIL on native is done in cpu_ready_for_interrupts() */ |
230 | if (early_cpu_has_feature(CPU_FTR_HVMODE) && | ||
231 | early_cpu_has_feature(CPU_FTR_ARCH_207S)) { | ||
232 | unsigned long lpcr = mfspr(SPRN_LPCR); | ||
233 | mtspr(SPRN_LPCR, lpcr | LPCR_AIL_3); | ||
234 | } | ||
235 | } | 230 | } |
236 | } | 231 | } |
237 | 232 | ||
238 | static void cpu_ready_for_interrupts(void) | 233 | static void cpu_ready_for_interrupts(void) |
239 | { | 234 | { |
235 | /* | ||
236 | * Enable AIL if supported, and we are in hypervisor mode. This | ||
237 | * is called once for every processor. | ||
238 | * | ||
239 | * If we are not in hypervisor mode the job is done once for | ||
240 | * the whole partition in configure_exceptions(). | ||
241 | */ | ||
242 | if (early_cpu_has_feature(CPU_FTR_HVMODE) && | ||
243 | early_cpu_has_feature(CPU_FTR_ARCH_207S)) { | ||
244 | unsigned long lpcr = mfspr(SPRN_LPCR); | ||
245 | mtspr(SPRN_LPCR, lpcr | LPCR_AIL_3); | ||
246 | } | ||
247 | |||
240 | /* Set IR and DR in PACA MSR */ | 248 | /* Set IR and DR in PACA MSR */ |
241 | get_paca()->kernel_msr = MSR_KERNEL; | 249 | get_paca()->kernel_msr = MSR_KERNEL; |
242 | } | 250 | } |