From: "tip-bot2 for Thomas Gleixner" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: smp/core] x86/realmode: Make stack lock work in trampoline_compat()
Date: Tue, 30 May 2023 12:18:10 -0000 [thread overview]
Message-ID: <168544909088.404.150583934765484487.tip-bot2@tip-bot2> (raw)
In-Reply-To: <87h6rujdvl.ffs@tglx>
The following commit has been merged into the smp/core branch of tip:
Commit-ID: 33e20b07bec4991c169e3c6ff28c2126583724fc
Gitweb: https://git.kernel.org/tip/33e20b07bec4991c169e3c6ff28c2126583724fc
Author: Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Tue, 30 May 2023 12:46:22 +02:00
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Tue, 30 May 2023 14:11:47 +02:00
x86/realmode: Make stack lock work in trampoline_compat()
The stack locking and stack assignment macro LOAD_REALMODE_ESP fails to
work when invoked from the 64bit trampoline entry point:
trampoline_start64
trampoline_compat
LOAD_REALMODE_ESP <- lock
Accessing tr_lock is only possible from 16bit mode. For the compat entry
point this needs to be pa_tr_lock so that the required relocation entry is
generated. Otherwise it locks the non-relocated address which is
aside of being wrong never cleared in secondary_startup_64() causing all
but the first CPU to get stuck on the lock.
Make the macro take an argument lock_pa which defaults to 0 and rename it
to LOCK_AND_LOAD_REALMODE_ESP to make it clear what this is about.
Fixes: f6f1ae9128d2 ("x86/smpboot: Implement a bit spinlock to protect the realmode stack")
Reported-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Link: https://lore.kernel.org/r/87h6rujdvl.ffs@tglx
---
arch/x86/realmode/rm/trampoline_64.S | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/arch/x86/realmode/rm/trampoline_64.S b/arch/x86/realmode/rm/trampoline_64.S
index 4822ad2..c9f76fa 100644
--- a/arch/x86/realmode/rm/trampoline_64.S
+++ b/arch/x86/realmode/rm/trampoline_64.S
@@ -37,12 +37,16 @@
.text
.code16
-.macro LOAD_REALMODE_ESP
+.macro LOCK_AND_LOAD_REALMODE_ESP lock_pa=0
/*
* Make sure only one CPU fiddles with the realmode stack
*/
.Llock_rm\@:
+ .if \lock_pa
+ lock btsl $0, pa_tr_lock
+ .else
lock btsl $0, tr_lock
+ .endif
jnc 2f
pause
jmp .Llock_rm\@
@@ -63,7 +67,7 @@ SYM_CODE_START(trampoline_start)
mov %ax, %es
mov %ax, %ss
- LOAD_REALMODE_ESP
+ LOCK_AND_LOAD_REALMODE_ESP
call verify_cpu # Verify the cpu supports long mode
testl %eax, %eax # Check for return code
@@ -106,7 +110,7 @@ SYM_CODE_START(sev_es_trampoline_start)
mov %ax, %es
mov %ax, %ss
- LOAD_REALMODE_ESP
+ LOCK_AND_LOAD_REALMODE_ESP
jmp .Lswitch_to_protected
SYM_CODE_END(sev_es_trampoline_start)
@@ -189,7 +193,7 @@ SYM_CODE_START(pa_trampoline_compat)
* In compatibility mode. Prep ESP and DX for startup_32, then disable
* paging and complete the switch to legacy 32-bit mode.
*/
- LOAD_REALMODE_ESP
+ LOCK_AND_LOAD_REALMODE_ESP lock_pa=1
movw $__KERNEL_DS, %dx
movl $(CR0_STATE & ~X86_CR0_PG), %eax
next prev parent reply other threads:[~2023-05-30 12:18 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-08 19:43 [patch v3 00/36] cpu/hotplug, x86: Reworked parallel CPU bringup Thomas Gleixner
2023-05-08 19:43 ` [patch v3 01/36] [patch V2 01/38] x86/smpboot: Cleanup topology_phys_to_logical_pkg()/die() Thomas Gleixner
2023-05-08 19:43 ` [patch v3 02/36] cpu/hotplug: Mark arch_disable_smp_support() and bringup_nonboot_cpus() __init Thomas Gleixner
2023-05-08 19:43 ` [patch v3 03/36] x86/smpboot: Avoid pointless delay calibration if TSC is synchronized Thomas Gleixner
2023-05-08 19:43 ` [patch v3 04/36] x86/smpboot: Rename start_cpu0() to soft_restart_cpu() Thomas Gleixner
2023-05-08 19:43 ` [patch v3 05/36] x86/topology: Remove CPU0 hotplug option Thomas Gleixner
2023-05-08 19:43 ` [patch v3 06/36] x86/smpboot: Remove the CPU0 hotplug kludge Thomas Gleixner
2023-05-08 19:43 ` [patch v3 07/36] x86/smpboot: Restrict soft_restart_cpu() to SEV Thomas Gleixner
2023-05-08 19:43 ` [patch v3 08/36] x86/smpboot: Split up native_cpu_up() into separate phases and document them Thomas Gleixner
2023-05-09 10:04 ` Peter Zijlstra
2023-05-09 12:07 ` Thomas Gleixner
2023-05-09 17:59 ` Thomas Gleixner
2023-05-09 20:11 ` Thomas Gleixner
2023-05-10 8:39 ` Peter Zijlstra
2023-05-09 10:19 ` Peter Zijlstra
2023-05-09 12:08 ` Thomas Gleixner
2023-05-09 18:03 ` Thomas Gleixner
2023-05-09 10:31 ` Peter Zijlstra
2023-05-09 12:09 ` Thomas Gleixner
2023-05-08 19:43 ` [patch v3 09/36] x86/smpboot: Get rid of cpu_init_secondary() Thomas Gleixner
2023-05-08 19:43 ` [patch v3 10/36] [patch V2 10/38] x86/cpu/cacheinfo: Remove cpu_callout_mask dependency Thomas Gleixner
2023-05-08 19:43 ` [patch v3 11/36] [patch V2 11/38] x86/smpboot: Move synchronization masks to SMP boot code Thomas Gleixner
2023-05-08 19:43 ` [patch v3 12/36] [patch V2 12/38] x86/smpboot: Make TSC synchronization function call based Thomas Gleixner
2023-05-08 19:43 ` [patch v3 13/36] x86/smpboot: Remove cpu_callin_mask Thomas Gleixner
2023-05-09 10:49 ` Peter Zijlstra
2023-05-09 12:09 ` Thomas Gleixner
2023-05-08 19:43 ` [patch v3 14/36] [patch V2 14/38] cpu/hotplug: Rework sparse_irq locking in bringup_cpu() Thomas Gleixner
2023-05-09 11:02 ` Peter Zijlstra
2023-05-09 12:10 ` Thomas Gleixner
2023-05-08 19:43 ` [patch v3 15/36] x86/smpboot: Remove wait for cpu_online() Thomas Gleixner
2023-05-08 19:43 ` [patch v3 16/36] x86/xen/smp_pv: Remove wait for CPU online Thomas Gleixner
2023-05-08 19:43 ` [patch v3 17/36] x86/xen/hvm: Get rid of DEAD_FROZEN handling Thomas Gleixner
2023-05-08 19:43 ` [patch v3 18/36] [patch V2 18/38] cpu/hotplug: Add CPU state tracking and synchronization Thomas Gleixner
2023-05-09 11:07 ` Peter Zijlstra
2023-05-09 11:35 ` Peter Zijlstra
2023-05-09 12:12 ` Thomas Gleixner
2023-05-08 19:43 ` [patch v3 19/36] x86/smpboot: Switch to hotplug core state synchronization Thomas Gleixner
2023-05-08 19:43 ` [patch v3 20/36] cpu/hotplug: Remove cpu_report_state() and related unused cruft Thomas Gleixner
2023-05-08 19:44 ` [patch v3 21/36] [patch V2 21/38] ARM: smp: Switch to hotplug core state synchronization Thomas Gleixner
2023-05-08 19:44 ` [patch v3 22/36] arm64: " Thomas Gleixner
2023-05-08 19:44 ` [patch v3 23/36] [patch V2 23/38] csky/smp: " Thomas Gleixner
2023-05-08 19:44 ` [patch v3 24/36] [patch V2 24/38] MIPS: SMP_CPS: " Thomas Gleixner
2023-05-08 19:44 ` [patch v3 25/36] parisc: " Thomas Gleixner
2023-05-08 19:44 ` [patch v3 26/36] riscv: " Thomas Gleixner
2023-05-08 19:44 ` [patch v3 27/36] cpu/hotplug: Remove unused state functions Thomas Gleixner
2023-05-08 19:44 ` [patch v3 28/36] cpu/hotplug: Reset task stack state in _cpu_up() Thomas Gleixner
2023-05-08 19:44 ` [patch v3 29/36] [patch V2 29/38] cpu/hotplug: Provide a split up CPUHP_BRINGUP mechanism Thomas Gleixner
2023-05-08 19:44 ` [patch v3 30/36] x86/smpboot: Enable split CPU startup Thomas Gleixner
2023-05-08 19:44 ` [patch v3 31/36] x86/apic: Provide cpu_primary_thread mask Thomas Gleixner
2023-05-24 20:48 ` Kirill A. Shutemov
2023-05-26 10:14 ` Thomas Gleixner
2023-05-27 13:40 ` Thomas Gleixner
2023-05-29 2:39 ` Kirill A. Shutemov
2023-05-29 19:27 ` Thomas Gleixner
2023-05-29 20:31 ` Kirill A. Shutemov
2023-05-30 0:54 ` Kirill A. Shutemov
2023-05-30 9:26 ` Thomas Gleixner
2023-05-30 10:34 ` Thomas Gleixner
2023-05-30 11:37 ` Kirill A. Shutemov
2023-05-30 12:09 ` [patch] x86/smpboot: Disable parallel bootup if cc_vendor != NONE Thomas Gleixner
2023-05-30 12:29 ` Kirill A. Shutemov
2023-05-30 16:00 ` Thomas Gleixner
2023-05-30 16:56 ` Sean Christopherson
2023-05-30 19:51 ` Thomas Gleixner
2023-05-30 20:03 ` Tom Lendacky
2023-05-30 20:39 ` Thomas Gleixner
2023-05-30 21:13 ` Tom Lendacky
2023-05-31 7:44 ` [patch] x86/smpboot: Fix the parallel bringup decision Thomas Gleixner
2023-05-31 11:07 ` Kirill A. Shutemov
2023-05-31 13:58 ` Tom Lendacky
2023-05-31 14:57 ` [tip: smp/core] " tip-bot2 for Thomas Gleixner
2023-05-30 17:02 ` [patch] x86/smpboot: Disable parallel bootup if cc_vendor != NONE Kirill A. Shutemov
2023-05-30 17:31 ` Sean Christopherson
2023-05-30 9:26 ` [patch v3 31/36] x86/apic: Provide cpu_primary_thread mask Thomas Gleixner
2023-05-30 10:46 ` [patch] x86/realmode: Make stack lock work in trampoline_compat() Thomas Gleixner
2023-05-30 11:12 ` Kirill A. Shutemov
2023-05-30 12:18 ` tip-bot2 for Thomas Gleixner [this message]
2023-06-08 23:34 ` Yunhong Jiang
2023-06-08 23:57 ` Andrew Cooper
2023-06-09 0:22 ` Yunhong Jiang
2023-06-10 19:50 ` David Laight
2023-06-10 22:51 ` 'Andrew Cooper'
2023-05-29 19:39 ` [tip: smp/core] x86/smp: Initialize cpu_primary_thread_mask late tip-bot2 for Thomas Gleixner
2023-05-08 19:44 ` [patch v3 32/36] cpu/hotplug: Allow "parallel" bringup up to CPUHP_BP_KICK_AP_STATE Thomas Gleixner
2023-05-08 19:44 ` [patch v3 33/36] x86/apic: Save the APIC virtual base address Thomas Gleixner
2023-05-09 9:20 ` Sergey Shtylyov
2023-05-08 19:44 ` [patch v3 34/36] x86/smpboot: Implement a bit spinlock to protect the realmode stack Thomas Gleixner
2023-05-09 13:13 ` Peter Zijlstra
2023-05-09 13:47 ` Thomas Gleixner
2023-05-08 19:44 ` [patch v3 35/36] x86/smpboot: Support parallel startup of secondary CPUs Thomas Gleixner
2023-05-09 13:57 ` Peter Zijlstra
2023-05-08 19:44 ` [patch v3 36/36] x86/smpboot/64: Implement arch_cpuhp_init_parallel_bringup() and enable it Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=168544909088.404.150583934765484487.tip-bot2@tip-bot2 \
--to=tip-bot2@linutronix.de \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).