|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: idle_loop: either deal with tasklets or go idle
On Fri, 2017-06-16 at 10:41 -0700, Stefano Stabellini wrote:
> On Fri, 16 Jun 2017, Dario Faggioli wrote:
> >
> > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
> > index 76310ed..86cd612 100644
> > --- a/xen/arch/arm/domain.c
> > +++ b/xen/arch/arm/domain.c
> > @@ -41,20 +41,28 @@ DEFINE_PER_CPU(struct vcpu *, curr_vcpu);
> >
> > void idle_loop(void)
> > {
> > + unsigned int cpu = smp_processor_id();
> > +
> > for ( ; ; )
> > {
> > - if ( cpu_is_offline(smp_processor_id()) )
> > + if ( cpu_is_offline(cpu) )
> > stop_cpu();
> >
> > - local_irq_disable();
> > - if ( cpu_is_haltable(smp_processor_id()) )
> > + /* Are we here for running vcpu context tasklets, or for
> > idling? */
> > + if ( cpu_is_haltable(cpu) )
> > {
> > - dsb(sy);
> > - wfi();
> > + local_irq_disable();
> > + /* We need to check again, with IRQ disabled */
> > + if ( cpu_is_haltable(cpu) )
> > + {
> > + dsb(sy);
> > + wfi();
> > + }
> > + local_irq_enable();
> > }
> > - local_irq_enable();
> > + else
> > + do_tasklet();
> >
> > - do_tasklet();
> > do_softirq();
>
> Are you sure you want to check that cpu_is_haltable twice? It doesn't
> make sense to me.
>
It's because of IRQ being disabled the first time.
But anyway, discard this patch. I'll go back to (a slightly modified
version of) the first one I sent, which defines a tasklet specific
helper function.
I'll send it on Monday.
Regards,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |