Patch "x86/xen: split xen_smp_prepare_boot_cpu()" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
x86/xen: split xen_smp_prepare_boot_cpu()
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
x86-xen-split-xen_smp_prepare_boot_cpu.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Mar 22 14:40:24 CET 2018
From: Vitaly Kuznetsov <[email protected]>
Date: Tue, 14 Mar 2017 18:35:43 +0100
Subject: x86/xen: split xen_smp_prepare_boot_cpu()
From: Vitaly Kuznetsov <[email protected]>
[ Upstream commit a2d1078a35f9a38ae888aa6147e4ca32666154a1 ]
Split xen_smp_prepare_boot_cpu() into xen_pv_smp_prepare_boot_cpu() and xen_hvm_smp_prepare_boot_cpu() to support further splitting of smp.c.
--- arch/x86/xen/smp.c | 49 ++++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-)
arch/x86/xen/smp.c +30 -19
@@ -299,35 +299,46 @@ static void __init xen_filter_cpu_maps(v } -static void __init xen_smp_prepare_boot_cpu (void ) +static void __init xen_pv_smp_prepare_boot_cpu (void ) {BUG_ON (smp_processor_id () !=0 );native_smp_prepare_boot_cpu (); -if (xen_pv_domain ()) { -if (!xen_feature (XENFEAT_writable_page_tables)) -/* We've switched to the "real" per-cpu gdt, so make -* sure the old memory can be recycled. */ -make_lowmem_page_readwrite (xen_initial_gdt); +if (!xen_feature (XENFEAT_writable_page_tables)) +/* We've switched to the "real" per-cpu gdt, so make +* sure the old memory can be recycled. */ +make_lowmem_page_readwrite (xen_initial_gdt);#ifdef CONFIG_X86_32 -/* -* Xen starts us with XEN_FLAT_RING1_DS, but linux code -* expects __USER_DS -*/ -loadsegment (ds, __USER_DS); -loadsegment (es, __USER_DS); +/* +* Xen starts us with XEN_FLAT_RING1_DS, but linux code +* expects __USER_DS +*/ +loadsegment (ds, __USER_DS); +loadsegment (es, __USER_DS);#endif -xen_filter_cpu_maps (); -xen_setup_vcpu_info_placement (); - } +xen_filter_cpu_maps (); +xen_setup_vcpu_info_placement (); + +/* +* The alternative logic (which patches the unlock/lock) runs before +* the smp bootup up code is activated. Hence we need to set this up +* the core kernel is being patched. Otherwise we will have only +* modules patched but not core code. +*/ +xen_init_spinlocks (); +} + +static void __init xen_hvm_smp_prepare_boot_cpu (void ) +{ +BUG_ON (smp_processor_id () !=0 ); +native_smp_prepare_boot_cpu ();/* * Setup vcpu_info for boot CPU. */ -if (xen_hvm_domain ()) -xen_vcpu_setup (0 ); +xen_vcpu_setup (0 );/* * The alternative logic (which patches the unlock/lock) runs before
@@ -733,7 +744,7 @@ static irqreturn_t xen_irq_work_interrup }static const struct smp_ops xen_smp_ops__initconst = { - .smp_prepare_boot_cpu = xen_smp_prepare_boot_cpu, + .smp_prepare_boot_cpu = xen_pv_smp_prepare_boot_cpu, .smp_prepare_cpus = xen_smp_prepare_cpus, .smp_cpus_done = xen_smp_cpus_done,
@@ -772,5 +783,5 @@ void __init xen_hvm_smp_init(void) smp_ops.cpu_die = xen_cpu_die; smp_ops.send_call_func_ipi = xen_smp_send_call_function_ipi; smp_ops.send_call_func_single_ipi = xen_smp_send_call_function_single_ipi; - smp_ops.smp_prepare_boot_cpu = xen_smp_prepare_boot_cpu; + smp_ops.smp_prepare_boot_cpu = xen_hvm_smp_prepare_boot_cpu; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/x86-xen-split-xen_smp_prepare_boot_cpu.patch