Messages in this thread | | | Subject | Re: [tip:x86/urgent] x86/mm/32: Load a sane CR3 before cpu_init() on secondary CPUs | From | Paul Menzel <> | Date | Mon, 18 Sep 2017 10:17:43 +0200 |
| |
Dear Andy,
On 09/17/17 20:19, tip-bot for Andy Lutomirski wrote: > Commit-ID: 4ba55e65f471d011d3ba2ac2022180ea0877d68e > Gitweb: http://git.kernel.org/tip/4ba55e65f471d011d3ba2ac2022180ea0877d68e > Author: Andy Lutomirski <luto@kernel.org> > AuthorDate: Sun, 17 Sep 2017 09:03:51 -0700 > Committer: Ingo Molnar <mingo@kernel.org> > CommitDate: Sun, 17 Sep 2017 18:59:09 +0200 > > x86/mm/32: Load a sane CR3 before cpu_init() on secondary CPUs > > For unknown historical reasons (i.e. Borislav doesn't recall), > 32-bit kernels invoke cpu_init() on secondary CPUs with > initial_page_table loaded into CR3. Then they set > current->active_mm to &init_mm and call enter_lazy_tlb() before > fixing CR3.
If this should be changed, I’d be happy to help.
> This means that the x86 TLB code gets invoked while CR3 > is inconsistent, and, with the improved PCID sanity checks I added, > we warn. > > Fix it by loading swapper_pg_dir (i.e. init_mm.pgd) earlier. > > Reported-by: Paul Menzel <pmenzel@molgen.mpg.de> > Reported-by: Pavel Machek <pavel@ucw.cz> > Signed-off-by: Andy Lutomirski <luto@kernel.org> > Cc: Borislav Petkov <bp@alien8.de> > Cc: Borislav Petkov <bpetkov@suse.de> > Cc: Linus Torvalds <torvalds@linux-foundation.org> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Fixes: 72c0098d92ce ("x86/mm: Reinitialize TLB state on hotplug and resume") > Link: http://lkml.kernel.org/r/30cdfea504682ba3b9012e77717800a91c22097f.1505663533.git.luto@kernel.org
This should use the HTTPS protocol.
> Signed-off-by: Ingo Molnar <mingo@kernel.org> > --- > arch/x86/kernel/smpboot.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-)
[…]
Thank you for the fix.
Tested-by: Paul Menzel <pmenzel@molgen.mpg.de> (Lenovo X60t)
Kind regards,
Paul
| |