[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass res
From: |
Richard Henderson |
Subject: |
Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset |
Date: |
Tue, 3 Mar 2020 10:41:55 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 |
On 3/3/20 2:05 AM, Peter Maydell wrote:
> The CPUClass has a 'reset' method. This is a legacy from when
> TYPE_CPU used not to inherit from TYPE_DEVICE. We don't need it any
> more, as we can simply use the TYPE_DEVICE reset. The 'cpu_reset()'
> function is kept as the API which most places use to reset a CPU; it
> is now a wrapper which calls device_cold_reset() and then the
> tracepoint function.
>
> This change should not cause CPU objects to be reset more often
> than they are at the moment, because:
> * nobody is directly calling device_cold_reset() or
> qdev_reset_all() on CPU objects
> * no CPU object is on a qbus, so they will not be reset either
> by somebody calling qbus_reset_all()/bus_cold_reset(), or
> by the main "reset sysbus and everything in the qbus tree"
> reset that most devices are reset by
>
> Note that this does not change the need for each machine or whatever
> to use qemu_register_reset() to arrange to call cpu_reset() -- that
> is necessary because CPU objects are not on any qbus, so they don't
> get reset when the qbus tree rooted at the sysbus bus is reset, and
> this isn't being changed here.
>
> All the changes to the files under target/ were made using the
> included Coccinelle script, except:
>
> (1) the deletion of the now-inaccurate and not terribly useful
> "CPUClass::reset" comments was done with a perl one-liner afterwards:
> perl -n -i -e '/ CPUClass::reset/ or print' target/*/*.c
>
> (2) this bit of the s390 change was done by hand, because the
> Coccinelle script is not sophisticated enough to handle the
> parent_reset call being inside another function:
>
> | @@ -96,8 +96,9 @@ static void s390_cpu_reset(CPUState *s, cpu_reset_type
> type)
> | S390CPU *cpu = S390_CPU(s);
> | S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
> | CPUS390XState *env = &cpu->env;
> |+ DeviceState *dev = DEVICE(s);
> |
> |- scc->parent_reset(s);
> |+ scc->parent_reset(dev);
> | cpu->env.sigp_order = 0;
> | s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu);
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> Testing was by 'make check' and 'make check-acceptance'.
>
> I need this patch as a preliminary to some arm stuff I'm
> doing, but I think it makes sense as a cleanup in its own
> right so I'm sending it out early for review. If it's not
> yet in master before I get round to finishing the stuff
> that depends on it I'll resend it as part of that series.
> ---
Reviewed-by: Richard Henderson <address@hidden>
r~
- [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, Peter Maydell, 2020/03/03
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, no-reply, 2020/03/03
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, no-reply, 2020/03/03
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, no-reply, 2020/03/03
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, no-reply, 2020/03/03
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, Philippe Mathieu-Daudé, 2020/03/03
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset,
Richard Henderson <=
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, Eduardo Habkost, 2020/03/03
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, David Gibson, 2020/03/03
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, Christian Borntraeger, 2020/03/09
- Re: [PATCH] cpu: Use DeviceClass reset instead of a special CPUClass reset, Philippe Mathieu-Daudé, 2020/03/17