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

Re: [Xen-devel] [PATCH v8 for-xen-4.5 2/2] dpci: Replace tasklet with an softirq (v8)



>>> On 27.10.14 at 18:01, <konrad.wilk@xxxxxxxxxx> wrote:
> On Mon, Oct 27, 2014 at 11:24:31AM +0000, Jan Beulich wrote:
>> >>> On 27.10.14 at 12:09, <andrew.cooper3@xxxxxxxxxx> wrote:
>> > Can it ever be the case that we are waiting for a remote pcpu to run its
>> > softirq handler?  If so, the time spent looping here could be up to 1
>> > scheduling timeslice in the worst case, and 30ms is a very long time to
>> > wait.
>> 
>> Good point - I think this can be the case. But there seems to be a
>> simple counter measure: The first time we get to this point, send an
>> event check IPI to the CPU in question (or in the worst case
>> broadcast one if the CPU can't be determined in a race free way).
> 
> I can either do this using the wrapper:
> 
>      if ( pt_pirq_softirq_active(pirq_dpci) )
>      {
>          spin_unlock(&d->event_lock);
>        if ( pirq_dpci->cpu >= 0 )
>        {
>               cpu_raise_softirq(pirq_dpci->cpu, HVM_DPCI_SOFTIRQ);
>               pirq_dpci->cpu = -1;
>        }
>          cpu_relax();
>          goto restart;

As Andrew said in his reply, this is the variant you should continue
from. Provided the ->cpu use here is race free (which isn't
immediately clear without seeing the other code).

Jan


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


 


Rackspace

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