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 <li...@eikelenboom.it>
> Signed-off-by: Jan Beulich <jbeul...@suse.com>

Insofar as this clearly corrects the identified regression,

Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>

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() )
>          smp_send_event_check_cpu(cpu);
>      else
> -        __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@lists.xen.org
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to