From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH 2/2] xen/arm: Use PSCI-0.2 for machine_halt/restart by default Date: Thu, 2 Oct 2014 10:04:35 +0100 Message-ID: References: <1412193773-31042-1-git-send-email-suravee.suthikulpanit@amd.com> <1412193773-31042-3-git-send-email-suravee.suthikulpanit@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1412193773-31042-3-git-send-email-suravee.suthikulpanit@amd.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Suravee Suthikulpanit Cc: julien.grall@linaro.org, xen-devel@lists.xen.org, ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org On Wed, 1 Oct 2014, suravee.suthikulpanit@amd.com wrote: > From: Suravee Suthikulpanit > > "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 Acked-by: Stefano Stabellini > 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 > #include > #include > - > -static void raw_machine_reset(void) > -{ > - platform_reset(); > -} > +#include > > 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 >