[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [PATCH 22/22] mini-os: support idle for HVMlite
Juergen Gross, on Tue 23 Aug 2016 17:16:08 +0200, wrote: > Instead of calling HYPERVISOR_sched_op(SCHEDOP_block, 0) we need to use > the "hlt" instruction with interrupts enabled to switch to idle when > running as HVMlite domain. > > This requires to setup a new timer in the timer handler as there is no > guarantee the original timer event we are waiting for won't fire > between enabling interrupts and calling "hlt". > > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> > --- > arch/x86/time.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/time.c b/arch/x86/time.c > index af45e56..3658142 100644 > --- a/arch/x86/time.c > +++ b/arch/x86/time.c > @@ -212,17 +212,20 @@ void block_domain(s_time_t until) > if(monotonic_clock() < until) > { > HYPERVISOR_set_timer_op(until); > +#ifdef CONFIG_PARAVIRT > HYPERVISOR_sched_op(SCHEDOP_block, 0); > +#else > + local_irq_enable(); > + asm volatile ( "hlt" : : : "memory" ); > +#endif > local_irq_disable(); > + HYPERVISOR_set_timer_op(0); > } > } > > - > -/* > - * Just a dummy > - */ > static void timer_handler(evtchn_port_t ev, struct pt_regs *regs, void *ign) > { > + HYPERVISOR_set_timer_op(monotonic_clock() + MILLISECS(1)); > } > > > -- > 2.6.6 > -- Samuel Linux, c'est simple : ça s'adresse à une machine qui est parfois un peu maraboutée mais qui d'habitude n'a pas d'états d'âme. Sur Usenet y'a plein d'humains et de primates, et ça devient vraiment gore par moment. -+- TP in : Guide du linuxien pervers - "Le linuxien a-t-il une âme ?" -+- _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |