On Thu, 2023-02-09 at 09:49 +0000, Usama Arif wrote: > > Its easy to test, just by doing > echo 0 > /sys/devices/system/cpu/cpu0/online; > echo 1 > /sys/devices/system/cpu/cpu0/online; This one also fixes it for me. If we're happy with this approach, I'll work it into Thomas's original patch (and hopefully eventually he'll be happy enough with it and the commit message that he'll give us his Signed-off-by for it.) I could probably add a Co-developed-by: tglx for that first x2apic patch in the series too, but then it would *also* need his SoB and I didn't want to be owed two, so I just pasted his suggested code and didn't credit him. diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 5462464fe3ef..ea6052a97619 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -450,7 +450,16 @@ SYM_CODE_END(secondary_startup_64) SYM_CODE_START(start_cpu0) ANNOTATE_NOENDBR UNWIND_HINT_EMPTY - movq initial_stack(%rip), %rsp + /* Load the per-cpu base for CPU#0 */ + leaq __per_cpu_offset(%rip), %rbx + movq (%rbx), %rbx + + /* Find the idle task stack */ + movq $idle_threads, %rcx + addq %rbx, %rcx + movq (%rcx), %rcx + movq TASK_threadsp(%rcx), %rsp + jmp .Ljump_to_C_code SYM_CODE_END(start_cpu0) #endif I cut and pasted some of that, I'm not entirely sure why we have three instructions to do the equivalent of 'movq idle_threads(%ebx), %ecx' and may fix that in the original as I work this in.
Attachment:
smime.p7s
Description: S/MIME cryptographic signature