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

Re: [Xen-devel] [PATCH v2] xen/arm: introduce vwfi parameter



On Wed, Feb 22, 2017 at 09:29:47AM -0800, Stefano Stabellini wrote:
> Introduce new Xen command line parameter called "vwfi", which stands for
> virtual wfi. The default is "trap": Xen traps the guest wfi instruction
> and calls vcpu_block on the guest vcpu. The behavior can be changed
> setting vwfi to "native", in that case Xen doesn't trap the instruction
> at all, running it in guest context.
> 
> The result is strong reduction in irq latency (from 5000ns to 2000ns,
> measured using https://github.com/edgarigl/tbm, the physical timer, and
> 1 pcpu dedicated to 1 vcpu). The downside is that the scheduler thinks
> that the guest is busy when actually is sleeping, leading to suboptimal
> scheduling decisions.
> 
> Signed-off-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> CC: dario.faggioli@xxxxxxxxxx
> CC: george.dunlap@xxxxxxxxxx
> CC: edgar.iglesias@xxxxxxxxxx


Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xxxxxxxxxx>


> ---
>  docs/misc/xen-command-line.markdown | 12 ++++++++++++
>  xen/arch/arm/traps.c                | 17 +++++++++++++++--
>  2 files changed, 27 insertions(+), 2 deletions(-)
> 
> diff --git a/docs/misc/xen-command-line.markdown 
> b/docs/misc/xen-command-line.markdown
> index c0106fb..6dea172 100644
> --- a/docs/misc/xen-command-line.markdown
> +++ b/docs/misc/xen-command-line.markdown
> @@ -1638,6 +1638,18 @@ Note that if **watchdog** option is also specified 
> vpmu will be turned off.
>  As the virtualisation is not 100% safe, don't use the vpmu flag on
>  production systems (see http://xenbits.xen.org/xsa/advisory-163.html)!
>  
> +### vwfi
> +> `= trap | native
> +
> +> Default: `trap`
> +
> +WFI is the ARM instruction to "wait for interrupt". This option, which
> +is ARM specific, changes the way guest WFI is implemented in Xen. By
> +default, Xen traps the instruction, then blocks the guest vcpu. When setting
> +vwfi to `native`, Xen doesn't trap the instruction, running it in guest
> +context. Setting vwfi to `native` reduces irq latency, but leads to
> +suboptimal scheduling decisions.
> +
>  ### watchdog
>  > `= force | <boolean>`
>  
> diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
> index 4f96a2b..3a40717 100644
> --- a/xen/arch/arm/traps.c
> +++ b/xen/arch/arm/traps.c
> @@ -102,6 +102,19 @@ static int debug_stack_lines = 40;
>  
>  integer_param("debug_stack_lines", debug_stack_lines);
>  
> +static enum {
> +     TRAP,
> +     NATIVE,
> +} vwfi;
> +
> +static void __init parse_vwfi(const char *s)
> +{
> +     if ( !strcmp(s, "native") )
> +             vwfi = NATIVE;
> +     else
> +             vwfi = TRAP;
> +}
> +custom_param("vwfi", parse_vwfi);
>  
>  void init_traps(void)
>  {
> @@ -128,8 +141,8 @@ void init_traps(void)
>  
>      /* Setup hypervisor traps */
>      WRITE_SYSREG(HCR_PTW|HCR_BSU_INNER|HCR_AMO|HCR_IMO|HCR_FMO|HCR_VM|
> -                 HCR_TWE|HCR_TWI|HCR_TSC|HCR_TAC|HCR_SWIO|HCR_TIDCP|HCR_FB,
> -                 HCR_EL2);
> +                 (vwfi != NATIVE ? HCR_TWI : 0) |HCR_TWE|
> +                 HCR_TSC|HCR_TAC|HCR_SWIO|HCR_TIDCP|HCR_FB,HCR_EL2);
>      isb();
>  }
>  
> -- 
> 1.9.1
> 

_______________________________________________
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®.