Skip to content

Commit bd6ba35

Browse files
shenkiozbenh
authored andcommitted
powerpc: Disable doorbells on Power8 DD1.x
These processors do not currently support doorbell IPIs, so remove them from the feature list if we are at DD 1.xx for the 0x004d part. This fixes a regression caused by d4e58e5 (powerpc/powernv: Enable POWER8 doorbell IPIs). With that patch the kernel would hang at boot when calling smp_call_function_many, as the doorbell would not be received by the target CPUs: .smp_call_function_many+0x2bc/0x3c0 (unreliable) .on_each_cpu_mask+0x30/0x100 .cpuidle_register_driver+0x158/0x1a0 .cpuidle_register+0x2c/0x110 .powernv_processor_idle_init+0x23c/0x2c0 .do_one_initcall+0xd4/0x260 .kernel_init_freeable+0x25c/0x33c .kernel_init+0x1c/0x120 .ret_from_kernel_thread+0x58/0x7c Fixes: d4e58e5 (powerpc/powernv: Enable POWER8 doorbell IPIs) Signed-off-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
1 parent f560294 commit bd6ba35

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

arch/powerpc/include/asm/cputable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,7 @@ extern const char *powerpc_base_platform;
447447
CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_DAWR | \
448448
CPU_FTR_ARCH_207S | CPU_FTR_TM_COMP)
449449
#define CPU_FTRS_POWER8E (CPU_FTRS_POWER8 | CPU_FTR_PMAO_BUG)
450+
#define CPU_FTRS_POWER8_DD1 (CPU_FTRS_POWER8 & ~CPU_FTR_DBELL)
450451
#define CPU_FTRS_CELL (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
451452
CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \
452453
CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \

arch/powerpc/kernel/cputable.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,26 @@ static struct cpu_spec __initdata cpu_specs[] = {
527527
.machine_check_early = __machine_check_early_realmode_p8,
528528
.platform = "power8",
529529
},
530+
{ /* Power8 DD1: Does not support doorbell IPIs */
531+
.pvr_mask = 0xffffff00,
532+
.pvr_value = 0x004d0100,
533+
.cpu_name = "POWER8 (raw)",
534+
.cpu_features = CPU_FTRS_POWER8_DD1,
535+
.cpu_user_features = COMMON_USER_POWER8,
536+
.cpu_user_features2 = COMMON_USER2_POWER8,
537+
.mmu_features = MMU_FTRS_POWER8,
538+
.icache_bsize = 128,
539+
.dcache_bsize = 128,
540+
.num_pmcs = 6,
541+
.pmc_type = PPC_PMC_IBM,
542+
.oprofile_cpu_type = "ppc64/power8",
543+
.oprofile_type = PPC_OPROFILE_INVALID,
544+
.cpu_setup = __setup_cpu_power8,
545+
.cpu_restore = __restore_cpu_power8,
546+
.flush_tlb = __flush_tlb_power8,
547+
.machine_check_early = __machine_check_early_realmode_p8,
548+
.platform = "power8",
549+
},
530550
{ /* Power8 */
531551
.pvr_mask = 0xffff0000,
532552
.pvr_value = 0x004d0000,

0 commit comments

Comments
 (0)