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

Re: [Xen-devel] [PATCH v2] xen: idle_loop: either deal with tasklets or go idle



>>> On 20.06.17 at 15:00, <dario.faggioli@xxxxxxxxxx> wrote:
> In fact, there are two kinds of tasklets: vCPU and
> softirq context. When we want to do vCPU context tasklet
> work, we force the idle vCPU (of a particular pCPU) into
> execution, and run it from there.
> 
> This means there are two possible reasons for choosing
> to run the idle vCPU:
> 1) we want a pCPU to go idle,
> 2) we want to run some vCPU context tasklet work.
> 
> If we're in case 2), it does not make sense to even
> try to go idle (as the check will _always_ fail).
> 
> This patch rearranges the code of the body of idle
> vCPUs, so that we actually check whether we are in
> case 1) or 2), and act accordingly.
> 
> As a matter of fact, this also means that we do not
> check if there's any tasklet work to do after waking
> up from idle. This is not a problem, because:
> a) for softirq context tasklets, if any is queued
>    "during" wakeup from idle, TASKLET_SOFTIRQ is
>    raised, and the call to do_softirq() (which is still
>    happening *after* the wakeup) will take care of it;
> b) for vCPU context tasklets, if any is queued "during"
>    wakeup from idle, SCHEDULE_SOFTIRQ is raised and
>    do_softirq() (happening after the wakeup) calls
>    the scheduler. The scheduler sees that there is
>    tasklet work pending and confirms the idle vCPU
>    in execution, which then will get to execute
>    do_tasklet().
> 
> Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>

Except for ARM bits
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

Jan


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

 


Rackspace

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