[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH qom-cpu-next] e500: Replace open-coded loop with q
From: |
Alexander Graf |
Subject: |
Re: [Qemu-ppc] [PATCH qom-cpu-next] e500: Replace open-coded loop with qemu_get_cpu() |
Date: |
Fri, 15 Feb 2013 15:29:18 +0100 |
On 15.02.2013, at 15:25, Andreas Färber wrote:
> Since we still need env for ppc-specific fields, obtain it via the new
> env_ptr fields to avoid "cpu" name conflicts between CPUState and
> PowerPCCPU for now.
>
> This fixes a potential issue with env being NULL at the end of the loop
> but cpu still being a valid pointer corresponding to a previous env.
>
> Signed-off-by: Andreas Färber <address@hidden>
> ---
> Alex, this is a rebased and slimmed-down version of yesterday's paste.
> Can you ack please? Thanks, /-F
In your QOM conversion you also converted other places like this. Have you
verified that these don't suffer from the same problem?
Alex
>
> hw/ppc/e500.c | 11 +++--------
> 1 Datei geändert, 3 Zeilen hinzugefügt(+), 8 Zeilen entfernt(-)
>
> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> index b7474c0..451682c 100644
> --- a/hw/ppc/e500.c
> +++ b/hw/ppc/e500.c
> @@ -240,20 +240,15 @@ static int ppce500_load_device_tree(CPUPPCState *env,
> /* We need to generate the cpu nodes in reverse order, so Linux can pick
> the first node as boot node and be happy */
> for (i = smp_cpus - 1; i >= 0; i--) {
> - CPUState *cpu = NULL;
> + CPUState *cpu;
> char cpu_name[128];
> uint64_t cpu_release_addr = MPC8544_SPIN_BASE + (i * 0x20);
>
> - for (env = first_cpu; env != NULL; env = env->next_cpu) {
> - cpu = ENV_GET_CPU(env);
> - if (cpu->cpu_index == i) {
> - break;
> - }
> - }
> -
> + cpu = qemu_get_cpu(i);
> if (cpu == NULL) {
> continue;
> }
> + env = cpu->env_ptr;
>
> snprintf(cpu_name, sizeof(cpu_name), "/cpus/PowerPC,address@hidden",
> cpu->cpu_index);
> --
> 1.7.10.4
>