linux_dsm_epyc7002/arch/arm64/kernel
Marc Zyngier 7ade67b598 arm64: move enabling of GIC before CPUs are set online
Commit 53ae3acd (arm64: Only enable local interrupts after the CPU
is marked online) moved the enabling of the GIC after the CPUs are
marked online.

This has some interesting effect:
[...]
[<ffffffc0002eefd8>] gic_raise_softirq+0xf8/0x160
[<ffffffc000088f58>] smp_send_reschedule+0x38/0x40
[<ffffffc0000c8728>] resched_task+0x84/0xc0
[<ffffffc0000c8cdc>] check_preempt_curr+0x58/0x98
[<ffffffc0000c8d38>] ttwu_do_wakeup+0x1c/0xf4
[<ffffffc0000c8f90>] ttwu_do_activate.constprop.84+0x64/0x70
[<ffffffc0000cad30>] try_to_wake_up+0x1d4/0x2b4
[<ffffffc0000cae6c>] default_wake_function+0x10/0x18
[<ffffffc0000c5ca4>] __wake_up_common+0x60/0xa0
[<ffffffc0000c7784>] complete+0x48/0x64
[<ffffffc000088bec>] secondary_start_kernel+0xe8/0x110
[...]

Here, we end-up calling gic_raise_softirq without having initialized
the interrupt controller for this CPU. While this goes unnoticed
with GICv2 (the distributor is always accessible), it explodes with
GICv3.

The fix is to move the call to notify_cpu_starting before we set
the secondary CPU online.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2013-11-04 18:18:05 +00:00
..
vdso arm64: vdso: remove broken, redundant sequence counting for timezones 2013-01-10 10:43:43 +00:00
.gitignore arm64: Build infrastructure 2012-09-17 13:42:21 +01:00
arm64ksyms.c arm64: Export __copy_in_user() to modules 2013-10-24 15:47:19 +01:00
asm-offsets.c arm64: KVM: Kconfig integration 2013-07-04 14:40:26 +02:00
cpu_ops.c arm64: Slightly improve the warning on CPU0 enable-method 2013-10-31 16:37:26 +00:00
cputable.c arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
debug-monitors.c arm64: delete __cpuinit usage from all users 2013-07-14 19:36:52 -04:00
early_printk.c arm64: Fix duplicate definition of early_console 2013-05-13 11:44:53 +01:00
entry-fpsimd.S arm64: move FP-SIMD save/restore code to a macro 2012-12-05 11:26:50 +00:00
entry.S arm64: mm: permit use of tagged pointers at EL0 2013-09-03 10:18:02 +01:00
fpsimd.c arm64: fix possible invalid FPSIMD initialization state 2013-09-27 18:21:37 +01:00
head.S arm64: big-endian: set correct endianess on kernel entry 2013-10-25 15:59:41 +01:00
hw_breakpoint.c arm64: delete __cpuinit usage from all users 2013-07-14 19:36:52 -04:00
hyp-stub.S arm64: add hypervisor stub 2012-12-05 11:26:49 +00:00
io.c arm64: Device specific operations 2012-09-17 13:42:04 +01:00
irq.c arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
kuser32.S arm64: update 32-bit kuser helpers to ARMv8 2013-10-28 10:40:28 +00:00
Makefile arm64: reorganise smp_enable_ops 2013-10-25 11:33:20 +01:00
module.c arm64: Loadable modules 2012-09-17 13:42:19 +01:00
perf_event.c arm64: perf: fix event number mask 2013-10-25 16:23:52 +01:00
process.c arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
psci.c arm64: add PSCI CPU_OFF-based hotplug support 2013-10-25 11:33:21 +01:00
ptrace.c arm64: debug: consolidate software breakpoint handlers 2013-06-12 11:23:02 +01:00
setup.c ARM64: DT: define ARM64 specific arch_match_cpu_phys_id 2013-10-30 12:10:37 +00:00
signal32.c arm64: big-endian: don't treat code as data when copying sigret code 2013-10-25 15:59:37 +01:00
signal.c arm64: switch to generic sigaltstack 2013-02-14 09:17:29 -05:00
smp_spin_table.c arm64: big-endian: write CPU holding pen address as LE 2013-10-25 15:59:42 +01:00
smp.c arm64: move enabling of GIC before CPUs are set online 2013-11-04 18:18:05 +00:00
stacktrace.c arm64: Exception handling 2012-09-17 10:24:46 +01:00
sys32.S arm64: compat: correct register concatenation for syscall wrappers 2013-10-25 15:59:36 +01:00
sys_compat.c compat: generic compat_sys_sched_rr_get_interval() implementation 2012-12-17 17:15:18 -08:00
sys.c arm64: switch to generic sigaltstack 2013-02-14 09:17:29 -05:00
time.c arm64: kernel: compiling issue, need delete read_current_timer() 2013-06-10 17:58:20 +01:00
traps.c arm64: debug: consolidate software breakpoint handlers 2013-06-12 11:23:02 +01:00
vdso.c arm64: big-endian: don't treat code as data when copying sigret code 2013-10-25 15:59:37 +01:00
vmlinux.lds.S arm64: use generic RW_DATA_SECTION macro in linker script 2013-11-04 18:17:25 +00:00