qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2] spapr: add "stop-self" RTAS call required to


From: David Gibson
Subject: Re: [Qemu-devel] [PATCH v2] spapr: add "stop-self" RTAS call required to support hot CPU unplug
Date: Wed, 28 Aug 2013 21:42:03 +1000
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Aug 28, 2013 at 07:32:51PM +1000, Alexey Kardashevskiy wrote:
> PAPR+ requires two RTAS calls to be supported by the hypervisor in
> order to allow hotplugging VCPUs from the guest. The "start-cpu" RTAS
> call was already there but "stop-self" was not.
> 
> This adds the "stop-self" RTAS call.
> 
> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> ---
> Changes:
> v2:
> * exit_request flag change replaced with more correct cpu_exit() call
> * fixed commit message, "spapr: support CPU hotplug"
> ---
>  hw/ppc/spapr_rtas.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
> index 394ce05..b906294 100644
> --- a/hw/ppc/spapr_rtas.c
> +++ b/hw/ppc/spapr_rtas.c
> @@ -202,6 +202,17 @@ static void rtas_start_cpu(PowerPCCPU *cpu_, 
> sPAPREnvironment *spapr,
>      rtas_st(rets, 0, -3);
>  }
>  
> +static void rtas_stop_self(PowerPCCPU *cpu, sPAPREnvironment *spapr,
> +                           uint32_t token, uint32_t nargs,
> +                           target_ulong args,
> +                           uint32_t nret, target_ulong rets)
> +{
> +    CPUState *cs = CPU(cpu);
> +
> +    cs->halted = 1;

Uh.. I think you still need the msr = 0, or an interrupt could wake
the cpu up again.

> +    cpu_exit(cs);
> +}
> +
>  static struct rtas_call {
>      const char *name;
>      spapr_rtas_fn fn;
> @@ -322,6 +333,7 @@ static void core_rtas_register_types(void)
>      spapr_rtas_register("query-cpu-stopped-state",
>                          rtas_query_cpu_stopped_state);
>      spapr_rtas_register("start-cpu", rtas_start_cpu);
> +    spapr_rtas_register("stop-self", rtas_stop_self);
>  }
>  
>  type_init(core_rtas_register_types)

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: pgprdKUUdlavh.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]