|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/2] ppc/shutdown: Implement machine_{halt,restart}()
Hi Andrew,
Overall this looks good, I just have one comment.
On 7/5/24 1:23 PM, Andrew Cooper wrote:
> diff --git a/xen/arch/ppc/shutdown.c b/xen/arch/ppc/shutdown.c
> new file mode 100644
> index 000000000000..c4b00e57b13a
> --- /dev/null
> +++ b/xen/arch/ppc/shutdown.c
> @@ -0,0 +1,43 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +#include <xen/shutdown.h>
> +
> +#include <asm/opal-api.h>
> +
> +int64_t opal_cec_power_down(uint64_t request);
> +int64_t opal_cec_reboot(void);
> +int64_t opal_poll_events(uint64_t *outstanding_event_mask);
> +
> +void machine_halt(void)
> +{
> + int rc;
> +
Before the opal_cec_{power_down,reboot} calls are made, any interupts
reserved for OPAL to handle need to be masked off.
Since we don't have any set up at this point, I would just add a TODO
comment like:
/* TODO: mask any OPAL IRQs before shutting down */
> + do {
> + rc = opal_cec_power_down(0);
> +
> + if ( rc == OPAL_BUSY_EVENT )
> + opal_poll_events(NULL);
> +
> + } while ( rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT );
> +
> + for ( ;; )
> + opal_poll_events(NULL);
> +}
> +
> +void machine_restart(unsigned int delay_millisecs)
> +{
> + int rc;
> +
> + /* TODO: mdelay(delay_millisecs); */
> +
Ditto.
> + do {
> + rc = opal_cec_reboot();
> +
> + if ( rc == OPAL_BUSY_EVENT )
> + opal_poll_events(NULL);
> +
> + } while ( rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT );
> +
> + for ( ;; )
> + opal_poll_events(NULL);
> +}
> +
Other than that, looks great.
Reviewed-by: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx>
Thanks,
Shawn
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |