qemu-devel
[Top][All Lists]
Advanced

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

Re: CPU reset vs DeviceState reset


From: Eduardo Habkost
Subject: Re: CPU reset vs DeviceState reset
Date: Mon, 2 Mar 2020 16:40:36 -0500

On Mon, Mar 02, 2020 at 06:41:31PM +0000, Peter Maydell wrote:
> On Mon, 2 Mar 2020 at 17:45, Eduardo Habkost <address@hidden> wrote:
> >
> > My impression is that this is just historical legacy, but I'm not
> > sure how much work a conversion to the new system would require.
> > I see lots of cpu_reset() calls scattered around the code.
> 
> I think we can just make the cpu_reset() function be a
> wrapper that calls device_cold_reset(DEVICE(cpu)).
> We would need to update the prototypes for

[1] This might have unintended side effects, as it will also call
    cpu_common_reset().  I still think we should try it.

> 
> > To make it worse, TYPE_CPU do have a DeviceClass::reset method
> > implemented, but cpu_reset() won't call it because it bypasses
> > the Device reset system completely.  I will do some git
> > archaeology work to try to find out why the code is this way.
> 
> At least for Arm CPUs, I don't think it does (well, it
> has the default DeviceState base class reset method
> which does nothing). Is there somewhere I missed?

TYPE_CPU points DeviceClass::reset to cpu_common_reset(),
so I believe this affects all TYPE_CPU descendants.

> 
> (I'm currently attempting to wrestle Coccinelle into
> doing the conversion of the target/ code automatically.)

I see 3 separate problems we might want to address:

1) Making device_cold_reset() end up calling CPUClass::reset
   in addition to existing cpu_common_reset()
   (easier to do without side effects).  This would get rid of
   the custom reset callbacks on machine code.

2) Making cpu_reset() call device_cold_reset()
   (will have side effects, needs additional care[1]).
   This would make us have only one method of resetting CPUs.

3) Replacing CPUClass::reset with the new reset mechanisms..
   This would let us get rid of legacy CPU reset code.

-- 
Eduardo




reply via email to

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