Commit 8ed4f3e6 authored by Thomas Gleixner's avatar Thomas Gleixner

x86/smpboot: Set online before setting up vectors

There is no reason to set the CPU online after establishing the vectors on
the upcoming CPU. The vector space is protected by the vector lock so no
changes can happen.

Marking the CPU online before setting up the vector space makes tracing
work in the early vector management cpu online code.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Tested-by: default avatarJuergen Gross <jgross@suse.com>
Tested-by: default avatarYu Chen <yu.c.chen@intel.com>
Acked-by: default avatarJuergen Gross <jgross@suse.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Alok Kataria <akataria@vmware.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Rui Zhang <rui.zhang@intel.com>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Len Brown <lenb@kernel.org>
Link: https://lkml.kernel.org/r/20170913213155.264311994@linutronix.de
parent 65d7ed57
...@@ -254,14 +254,14 @@ static void notrace start_secondary(void *unused) ...@@ -254,14 +254,14 @@ static void notrace start_secondary(void *unused)
check_tsc_sync_target(); check_tsc_sync_target();
/* /*
* Lock vector_lock and initialize the vectors on this cpu * Lock vector_lock, set CPU online and bring the vector
* before setting the cpu online. We must set it online with * allocator online. Online must be set with vector_lock held
* vector_lock held to prevent a concurrent setup/teardown * to prevent a concurrent irq setup/teardown from seeing a
* from seeing a half valid vector space. * half valid vector space.
*/ */
lock_vector_lock(); lock_vector_lock();
lapic_online();
set_cpu_online(smp_processor_id(), true); set_cpu_online(smp_processor_id(), true);
lapic_online();
unlock_vector_lock(); unlock_vector_lock();
cpu_set_state_online(smp_processor_id()); cpu_set_state_online(smp_processor_id());
x86_platform.nmi_init(); x86_platform.nmi_init();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment