[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 5/5] x86/xen: Don't register PV spinlock IPI when it isn't going to be used
On 1/4/21 5:37 PM, David Woodhouse wrote: > > @@ -33,9 +33,11 @@ static void __init xen_hvm_smp_prepare_cpus(unsigned int > max_cpus) > int cpu; > > native_smp_prepare_cpus(max_cpus); > - WARN_ON(xen_smp_intr_init(0)); > > - xen_init_lock_cpu(0); > + if (xen_have_vector_callback) { > + WARN_ON(xen_smp_intr_init(0)); > + xen_init_lock_cpu(0); By now you have nopvspin set so you might as well leave xen_init_lock_cpu(0) as is. (and then move the check inside xen_smp_intr_init()) > + } > > for_each_possible_cpu(cpu) { > if (cpu == 0) > @@ -64,14 +66,17 @@ static void xen_hvm_cpu_die(unsigned int cpu) > > void __init xen_hvm_smp_init(void) > { > - if (!xen_have_vector_callback) > + smp_ops.smp_prepare_boot_cpu = xen_hvm_smp_prepare_boot_cpu; > + smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus; > + smp_ops.smp_cpus_done = xen_smp_cpus_done; > + > + if (!xen_have_vector_callback) { > + nopvspin = true; > return; > + } > > - smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus; > smp_ops.smp_send_reschedule = xen_smp_send_reschedule; > smp_ops.cpu_die = xen_hvm_cpu_die; Why not xen_hvm_cpu_die too? common_cpu_die() sounds like something we should do, and the other three we call there will be nops. > 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_hvm_smp_prepare_boot_cpu; > - smp_ops.smp_cpus_done = xen_smp_cpus_done; > } > >> Also, for the spinlock changes specifically --- I wonder whether it >> would be better to reverse initial value of xen_pvspin and set it to >> 'true' only if initialization succeeds. > I looked at that but it would need to be tristate, since the > 'xen_nopvspin' command line option clears it from its default of being > enabled. Ah, right. How about setting nopvspin in xen_parse_nopvspin()? -boris
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |