[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] correct mis-conversion set_bit() -> __cpumask_set_cpu() by 4aaca0e9cd

On 23/02/15 11:06, Jan Beulich wrote:
I have no idea how I came to use __cpumask_set_cpu() there, the
conversion should have been set_bit() -> __set_bit(). The wrong
construct results in problems on systems with relatively few CPUs.

Reported-by: Sander Eikelenboom <linux@xxxxxxxxxxxxxx>
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

Insofar as this clearly corrects the identified regression,

Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

However,  I am still not convinced that the resulting code is actually correct.

batch_mask is a cpumask_t and used properly as a cpumask in cpumask_raise_softirq().  It is wrong to be putting softirq indices into it here.

--- a/xen/common/softirq.c
+++ b/xen/common/softirq.c
@@ -106,7 +106,7 @@ void cpu_raise_softirq(unsigned int cpu,
     if ( !per_cpu(batching, this_cpu) || in_irq() )
-        __cpumask_set_cpu(nr, &per_cpu(batch_mask, this_cpu));
+        __set_bit(nr, &per_cpu(batch_mask, this_cpu));

 void cpu_raise_softirq_batch_begin(void)

Xen-devel mailing list

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.