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

Re: [Xen-devel] [PATCH 2/2] xen/arm: Use PSCI-0.2 for machine_halt/restart by default



On Wed, 1 Oct 2014, suravee.suthikulpanit@xxxxxxx wrote:
> From: Suravee Suthikulpanit <Suravee.Suthikulpanit@xxxxxxx>
> 
> "machine_halt()" and "machine_restart()" are modified to use PSCI interface
> by default if PSCI-0.2 is supported. The "raw_machine_reset()" is also removed
> since this is unnecessary.
> 
> For non-PSCI, platform_poweroff() and platform_reset() are used instead.
> 
> Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@xxxxxxx>

Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>


>  xen/arch/arm/shutdown.c | 23 +++++++++++++++++------
>  1 file changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/arch/arm/shutdown.c b/xen/arch/arm/shutdown.c
> index adc0529..2289ad1 100644
> --- a/xen/arch/arm/shutdown.c
> +++ b/xen/arch/arm/shutdown.c
> @@ -5,11 +5,7 @@
>  #include <xen/lib.h>
>  #include <xen/smp.h>
>  #include <asm/platform.h>
> -
> -static void raw_machine_reset(void)
> -{
> -    platform_reset();
> -}
> +#include <asm/psci.h>
>  
>  static void noreturn halt_this_cpu(void *arg)
>  {
> @@ -18,10 +14,22 @@ static void noreturn halt_this_cpu(void *arg)
>  
>  void machine_halt(void)
>  {
> +    int timeout = 10;
> +
>      watchdog_disable();
>      console_start_sync();
>      local_irq_enable();
>      smp_call_function(halt_this_cpu, NULL, 0);
> +    local_irq_disable();
> +
> +    /* Wait at most another 10ms for all other CPUs to go offline. */
> +    while ( (num_online_cpus() > 1) && (timeout-- > 0) )
> +        mdelay(1);
> +
> +    /* Not return if success */
> +    call_psci_system_off();
> +
> +    platform_poweroff();
>      halt_this_cpu(NULL);
>  }
>  
> @@ -39,9 +47,12 @@ void machine_restart(unsigned int delay_millisecs)
>      while ( (num_online_cpus() > 1) && (timeout-- > 0) )
>          mdelay(1);
>  
> +    /* Not return if success */
> +    call_psci_system_reset();
> +
>      while ( 1 )
>      {
> -        raw_machine_reset();
> +        platform_reset();
>          mdelay(100);
>      }
>  }
> -- 
> 1.9.3
> 

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