From: Thomas Gleixner <tglx@linutronix.de>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Juergen Gross <jgross@suse.com>,
Andrew Cooper <Andrew.Cooper3@citrix.com>,
LKML <linux-kernel@vger.kernel.org>,
"x86@kernel.org" <x86@kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Pawan Gupta <pawan.kumar.gupta@linux.intel.com>,
Johannes Wikner <kwikner@ethz.ch>,
Alyssa Milburn <alyssa.milburn@linux.intel.com>,
Jann Horn <jannh@google.com>, "H.J. Lu" <hjl.tools@gmail.com>,
Joao Moreira <joao.moreira@intel.com>,
Joseph Nuzman <joseph.nuzman@intel.com>,
Steven Rostedt <rostedt@goodmis.org>
Subject: Re: [patch 02/38] x86/cpu: Use native_wrmsrl() in load_percpu_segment()
Date: Mon, 18 Jul 2022 12:33:14 +0200 [thread overview]
Message-ID: <87fsiyww0l.ffs@tglx> (raw)
In-Reply-To: <YtUodTM53de5vVxO@worktop.programming.kicks-ass.net>
On Mon, Jul 18 2022 at 11:31, Peter Zijlstra wrote:
> On Mon, Jul 18, 2022 at 10:55:29AM +0200, Thomas Gleixner wrote:
>> On Mon, Jul 18 2022 at 08:54, Thomas Gleixner wrote:
>> > On Mon, Jul 18 2022 at 07:11, Juergen Gross wrote:
>> >>> - switch_to_new_gdt(cpu);
>> >>> + switch_to_real_gdt(cpu);
>> >>
>> >> ... can't you use the paravirt variant of load_gdt in switch_to_real_gdt() ?
>> >
>> > That does not solve the problem of having a disagreement between GDT and
>> > GS_BASE. Let me dig into this some more.
>>
>> Bah. The real problem is __loadsegment_simple(gs, 0). After that GS_BASE
>> is 0. So any per CPU access before setting MSR_GS_BASE back to working
>> state is going into lala land.
>>
>> So it's not the GDT. It's the mov 0, %gs which makes stuff go south, but
>> as %gs is already 0, we can keep the paravirt load_gdt() and use
>> native_write_msr() and everything should be happy.
>
> How is the ret from xen_load_gdt() not going to explode?
This is only for the early boot _before_ all the patching happens. So
that goes through the default retthunk.
Secondary CPUs do not need that as they set up GDT and GS_BASE in the
low level asm code before coming out to C.
I'm still trying to figure out how this works on XENPV and on 32bit.
Sigh...
next prev parent reply other threads:[~2022-07-18 10:33 UTC|newest]
Thread overview: 142+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-16 23:17 [patch 00/38] x86/retbleed: Call depth tracking mitigation Thomas Gleixner
2022-07-16 23:17 ` [patch 01/38] x86/paravirt: Ensure proper alignment Thomas Gleixner
2022-07-16 23:17 ` [patch 02/38] x86/cpu: Use native_wrmsrl() in load_percpu_segment() Thomas Gleixner
2022-07-17 0:22 ` Andrew Cooper
2022-07-17 15:20 ` Linus Torvalds
2022-07-17 19:08 ` Thomas Gleixner
2022-07-17 20:08 ` Thomas Gleixner
2022-07-17 20:13 ` Thomas Gleixner
2022-07-17 21:54 ` Thomas Gleixner
2022-07-18 5:11 ` Juergen Gross
2022-07-18 6:54 ` Thomas Gleixner
2022-07-18 8:55 ` Thomas Gleixner
2022-07-18 9:31 ` Peter Zijlstra
2022-07-18 10:33 ` Thomas Gleixner [this message]
2022-07-18 11:42 ` Thomas Gleixner
2022-07-18 17:52 ` [patch 0/3] x86/cpu: Sanitize switch_to_new_gdt() Thomas Gleixner
2022-07-18 17:52 ` [patch 1/3] x86/cpu: Remove segment load from switch_to_new_gdt() Thomas Gleixner
2022-07-18 18:43 ` Linus Torvalds
2022-07-18 18:55 ` Thomas Gleixner
2022-07-18 17:52 ` [patch 2/3] x86/cpu: Get rid of redundant switch_to_new_gdt() invocations Thomas Gleixner
2022-07-18 17:52 ` [patch 3/3] x86/cpu: Re-enable stackprotector Thomas Gleixner
2022-07-16 23:17 ` [patch 03/38] x86/modules: Set VM_FLUSH_RESET_PERMS in module_alloc() Thomas Gleixner
2022-07-16 23:17 ` [patch 04/38] x86/vdso: Ensure all kernel code is seen by objtool Thomas Gleixner
2022-07-16 23:17 ` [patch 05/38] btree: Initialize early when builtin Thomas Gleixner
2022-07-16 23:17 ` [patch 06/38] objtool: Allow GS relative relocs Thomas Gleixner
2022-07-16 23:17 ` [patch 07/38] objtool: Track init section Thomas Gleixner
2022-07-16 23:17 ` [patch 08/38] objtool: Add .call_sites section Thomas Gleixner
2022-07-16 23:17 ` [patch 09/38] objtool: Add .sym_sites section Thomas Gleixner
2022-07-16 23:17 ` [patch 10/38] objtool: Add --hacks=skylake Thomas Gleixner
2022-07-16 23:17 ` [patch 11/38] objtool: Allow STT_NOTYPE -> STT_FUNC+0 tail-calls Thomas Gleixner
2022-07-16 23:17 ` [patch 12/38] x86/entry: Make sync_regs() invocation a tail call Thomas Gleixner
2022-07-16 23:17 ` [patch 13/38] x86/modules: Make module_alloc() generally available Thomas Gleixner
2022-07-16 23:17 ` [patch 14/38] x86/Kconfig: Add CONFIG_CALL_THUNKS Thomas Gleixner
2022-07-16 23:17 ` [patch 15/38] x86/retbleed: Add X86_FEATURE_CALL_DEPTH Thomas Gleixner
2022-07-16 23:17 ` [patch 16/38] modules: Make struct module_layout unconditionally available Thomas Gleixner
2022-07-16 23:17 ` [patch 17/38] module: Add arch_data to module_layout Thomas Gleixner
2022-07-16 23:17 ` [patch 18/38] mm/vmalloc: Provide huge page mappings Thomas Gleixner
2022-07-16 23:17 ` [patch 19/38] x86/module: Provide __module_alloc() Thomas Gleixner
2022-07-16 23:17 ` [patch 20/38] x86/alternatives: Provide text_poke_[copy|set]_locked() Thomas Gleixner
2022-07-16 23:17 ` [patch 21/38] x86/entry: Make some entry symbols global Thomas Gleixner
2022-07-16 23:17 ` [patch 22/38] x86/paravirt: Make struct paravirt_call_site unconditionally available Thomas Gleixner
2022-07-16 23:17 ` [patch 23/38] x86/callthunks: Add call patching for call depth tracking Thomas Gleixner
2022-07-16 23:17 ` [patch 24/38] module: Add layout for callthunks tracking Thomas Gleixner
2022-07-16 23:17 ` [patch 25/38] x86/modules: Add call thunk patching Thomas Gleixner
2022-07-16 23:17 ` [patch 26/38] x86/returnthunk: Allow different return thunks Thomas Gleixner
2022-07-16 23:17 ` [patch 27/38] x86/asm: Provide ALTERNATIVE_3 Thomas Gleixner
2022-07-16 23:17 ` [patch 28/38] x86/retbleed: Add SKL return thunk Thomas Gleixner
2022-07-16 23:17 ` [patch 29/38] x86/retpoline: Add SKL retthunk retpolines Thomas Gleixner
2022-07-16 23:17 ` [patch 30/38] x86/retbleed: Add SKL call thunk Thomas Gleixner
2022-07-16 23:18 ` [patch 31/38] x86/calldepth: Add ret/call counting for debug Thomas Gleixner
2022-07-16 23:18 ` [patch 32/38] static_call: Add call depth tracking support Thomas Gleixner
2022-07-16 23:18 ` [patch 33/38] kallsyms: Take callthunks into account Thomas Gleixner
2022-07-16 23:18 ` [patch 34/38] x86/orc: Make it callthunk aware Thomas Gleixner
2022-07-16 23:18 ` [patch 35/38] kprobes: Add callthunk blacklisting Thomas Gleixner
2022-07-16 23:18 ` [patch 36/38] x86/ftrace: Make it call depth tracking aware Thomas Gleixner
2022-07-18 21:01 ` Steven Rostedt
2022-07-19 8:46 ` Peter Zijlstra
2022-07-19 13:06 ` Steven Rostedt
2022-07-16 23:18 ` [patch 37/38] x86/bpf: Emit call depth accounting if required Thomas Gleixner
2022-07-19 5:30 ` Alexei Starovoitov
2022-07-19 8:34 ` Peter Zijlstra
2022-07-16 23:18 ` [patch 38/38] x86/retbleed: Add call depth tracking mitigation Thomas Gleixner
2022-07-17 9:45 ` [patch 00/38] x86/retbleed: Call " David Laight
2022-07-17 15:07 ` Thomas Gleixner
2022-07-17 17:56 ` David Laight
2022-07-17 19:15 ` Thomas Gleixner
2022-07-18 19:29 ` Thomas Gleixner
2022-07-18 19:30 ` Thomas Gleixner
2022-07-18 19:51 ` Linus Torvalds
2022-07-18 20:44 ` Thomas Gleixner
2022-07-18 21:01 ` Linus Torvalds
2022-07-18 21:43 ` Peter Zijlstra
2022-07-18 22:34 ` Linus Torvalds
2022-07-18 23:52 ` Peter Zijlstra
2022-07-18 21:18 ` Peter Zijlstra
2022-07-18 22:22 ` Thomas Gleixner
2022-07-18 22:47 ` Joao Moreira
2022-07-18 22:55 ` Sami Tolvanen
2022-07-18 23:08 ` Joao Moreira
2022-07-18 23:19 ` Thomas Gleixner
2022-07-18 23:42 ` Linus Torvalds
2022-07-18 23:52 ` Linus Torvalds
2022-07-18 23:57 ` Peter Zijlstra
2022-07-19 0:03 ` Linus Torvalds
2022-07-19 0:11 ` Linus Torvalds
2022-07-19 0:23 ` Peter Zijlstra
2022-07-19 1:02 ` Linus Torvalds
2022-07-19 17:19 ` Sami Tolvanen
2022-07-20 21:13 ` Peter Zijlstra
2022-07-21 8:21 ` David Laight
2022-07-21 10:56 ` David Laight
2022-07-21 15:54 ` Peter Zijlstra
2022-07-21 17:55 ` Peter Zijlstra
2022-07-21 18:06 ` Linus Torvalds
2022-07-21 18:27 ` Peter Zijlstra
2022-07-21 18:32 ` Linus Torvalds
2022-07-21 20:22 ` Joao Moreira
2022-07-22 0:16 ` Sami Tolvanen
2022-07-22 10:23 ` Peter Zijlstra
2022-07-22 15:38 ` Sami Tolvanen
2022-07-21 22:01 ` David Laight
2022-07-22 11:03 ` Peter Zijlstra
2022-07-22 13:27 ` David Laight
2022-07-23 9:50 ` Thomas Gleixner
2022-07-19 0:01 ` Linus Torvalds
2022-07-19 0:19 ` Joao Moreira
2022-07-19 17:21 ` Sami Tolvanen
2022-07-19 17:58 ` Joao Moreira
2022-07-19 8:26 ` David Laight
2022-07-19 16:27 ` Linus Torvalds
2022-07-19 17:23 ` Sami Tolvanen
2022-07-19 17:27 ` Linus Torvalds
2022-07-19 18:06 ` Sami Tolvanen
2022-07-19 20:10 ` Peter Zijlstra
2022-07-18 22:48 ` Sami Tolvanen
2022-07-18 22:59 ` Thomas Gleixner
2022-07-18 23:10 ` Sami Tolvanen
2022-07-18 23:39 ` Linus Torvalds
2022-07-18 23:51 ` Peter Zijlstra
2022-07-20 9:00 ` Thomas Gleixner
2022-07-20 16:55 ` Sami Tolvanen
2022-07-20 19:42 ` Sami Tolvanen
2022-07-22 20:11 ` Tim Chen
2022-07-22 22:18 ` Linus Torvalds
2022-07-18 19:55 ` Thomas Gleixner
2022-07-19 10:24 ` Virt " Andrew Cooper
2022-07-19 14:13 ` Thomas Gleixner
2022-07-19 16:23 ` Andrew Cooper
2022-07-19 21:17 ` Thomas Gleixner
2022-07-19 14:45 ` Michael Kelley (LINUX)
2022-07-19 20:16 ` Peter Zijlstra
2022-07-20 16:57 ` [patch 00/38] x86/retbleed: " Steven Rostedt
2022-07-20 17:09 ` Linus Torvalds
2022-07-20 17:24 ` Peter Zijlstra
2022-07-20 17:50 ` Steven Rostedt
2022-07-20 18:07 ` Linus Torvalds
2022-07-20 18:31 ` Steven Rostedt
2022-07-20 18:43 ` Linus Torvalds
2022-07-20 19:11 ` Steven Rostedt
2022-07-20 19:36 ` Kees Cook
2022-07-20 19:43 ` Steven Rostedt
2022-07-20 21:36 ` Peter Zijlstra
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=87fsiyww0l.ffs@tglx \
--to=tglx@linutronix.de \
--cc=Andrew.Cooper3@citrix.com \
--cc=alyssa.milburn@linux.intel.com \
--cc=hjl.tools@gmail.com \
--cc=jannh@google.com \
--cc=jgross@suse.com \
--cc=joao.moreira@intel.com \
--cc=joseph.nuzman@intel.com \
--cc=jpoimboe@kernel.org \
--cc=kwikner@ethz.ch \
--cc=linux-kernel@vger.kernel.org \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tim.c.chen@linux.intel.com \
--cc=torvalds@linux-foundation.org \
--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