qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/4] spapr: Fix bug in h_signal_sys_r


From: Greg Kurz
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/4] spapr: Fix bug in h_signal_sys_reset()
Date: Thu, 3 Aug 2017 14:37:15 +0200

On Thu, 3 Aug 2017 16:28:27 +1000
Sam Bobroff <address@hidden> wrote:

> The unicast case in h_signal_sys_reset() seems to be broken:
> rather than selecting the target CPU, it looks like it will pick
> either the first CPU or fail to find one at all.
> 
> Fix it by using the search function rather than open coding the
> search.
> 

Heh the open coded search is using cpu where it should have been using
POWERPC_CPU(cs) => it can only succeed if a the vCPU is signalling itself.

> This was found by inspection; the code appears to be unused because
> the Linux kernel only uses the broadcast target.
> 
> Signed-off-by: Sam Bobroff <address@hidden>

Reviewed-by: Greg Kurz <address@hidden>

> ---
>  hw/ppc/spapr_hcall.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
> index 72ea5a8247..07b3da8dc4 100644
> --- a/hw/ppc/spapr_hcall.c
> +++ b/hw/ppc/spapr_hcall.c
> @@ -1431,11 +1431,10 @@ static target_ulong h_signal_sys_reset(PowerPCCPU 
> *cpu,
>  
>      } else {
>          /* Unicast */
> -        CPU_FOREACH(cs) {
> -            if (cpu->cpu_dt_id == target) {
> -                run_on_cpu(cs, spapr_do_system_reset_on_cpu, 
> RUN_ON_CPU_NULL);
> -                return H_SUCCESS;
> -            }
> +        cs = CPU(ppc_get_vcpu_by_dt_id(target));
> +        if (cs) {
> +            run_on_cpu(cs, spapr_do_system_reset_on_cpu, RUN_ON_CPU_NULL);
> +            return H_SUCCESS;
>          }
>          return H_PARAMETER;
>      }

Attachment: pgpMCUC8twqrF.pgp
Description: OpenPGP digital signature


reply via email to

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