qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH qom-cpu-next] ppce500_spin: Replace open-coded C


From: Alexander Graf
Subject: Re: [Qemu-devel] [PATCH qom-cpu-next] ppce500_spin: Replace open-coded CPU loop with qemu_get_cpu()
Date: Fri, 15 Feb 2013 18:04:26 +0100

On 15.02.2013, at 17:58, Andreas Färber wrote:

> Am 15.02.2013 17:54, schrieb Alexander Graf:
>> 
>> On 15.02.2013, at 17:51, Andreas Färber wrote:
>> 
>>> Potentially env could be NULL whereas cpu would still be valid and
>>> correspond to a previous env.
>>> 
>>> Wrapping this in qemu_get_cpu(), env is no longer needed, so simplify
>>> code that existed before 55e5c2850293547203874098f7cec148ffd12dfa.
>>> 
>>> Signed-off-by: Andreas Färber <address@hidden>
>>> ---
>>> hw/ppce500_spin.c |   15 ++++-----------
>>> 1 Datei geändert, 4 Zeilen hinzugefügt(+), 11 Zeilen entfernt(-)
>>> 
>>> diff --git a/hw/ppce500_spin.c b/hw/ppce500_spin.c
>>> index 7e90fb9..5bdce52 100644
>>> --- a/hw/ppce500_spin.c
>>> +++ b/hw/ppce500_spin.c
>>> @@ -123,18 +123,11 @@ static void spin_write(void *opaque, hwaddr addr, 
>>> uint64_t value,
>>> {
>>>    SpinState *s = opaque;
>>>    int env_idx = addr / sizeof(SpinInfo);
>>> -    CPUPPCState *env;
>>> -    CPUState *cpu = NULL;
>>> +    CPUState *cpu;
>>>    SpinInfo *curspin = &s->spin[env_idx];
>>>    uint8_t *curspin_p = (uint8_t*)curspin;
>>> 
>>> -    for (env = first_cpu; env != NULL; env = env->next_cpu) {
>>> -        cpu = CPU(ppc_env_get_cpu(env));
>>> -        if (cpu->cpu_index == env_idx) {
>>> -            break;
>>> -        }
>>> -    }
>>> -
>>> +    cpu = qemu_get_cpu(env_idx);
>>>    if (cpu == NULL) {
>>>        /* Unknown CPU */
>>>        return;
>>> @@ -161,11 +154,11 @@ static void spin_write(void *opaque, hwaddr addr, 
>>> uint64_t value,
>>>    if (!(ldq_p(&curspin->addr) & 1)) {
>>>        /* run CPU */
>>>        SpinKick kick = {
>>> -            .cpu = ppc_env_get_cpu(env),
>>> +            .cpu = POWERPC_CPU(cpu),
>> 
>> Why not just cpu?
> 
> PowerPCCPU vs. CPUState type.
> Having the specific type in ppc code allows direct access to ->env.
> 
> If you see a performance issue, we could also use (PowerPCCPU *)cpu.

There are no performance issues in the spin code :). By definition. This thing 
could be written in bash and still be fast enough.

I was mostly wondering whether ppc_env_get_cpu(env) returns a PowerPCCPU *. But 
apparently it does. Ok then :)


Acked-by: Alexander Graf <address@hidden>


Alex

> 
> Andreas
> 
>>>            .spin = curspin,
>>>        };
>>> 
>>> -        run_on_cpu(CPU(kick.cpu), spin_kick, &kick);
>>> +        run_on_cpu(cpu, spin_kick, &kick);
>>>    }
>>> }
>>> 
>>> -- 
>>> 1.7.10.4
>>> 
>> 
> 
> 
> -- 
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg




reply via email to

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