diff mbox series

ppc pbr403 vmstate

Message ID YeB0zGRC/ct8DAzM@work-vm (mailing list archive)
State New, archived
Headers show
Series ppc pbr403 vmstate | expand

Commit Message

Dr. David Alan Gilbert Jan. 13, 2022, 6:51 p.m. UTC
Hi,
  Is there any easy way of getting a machine where the pbr403 vmstate
would be generated?

  Given my vague understanding of vmstate subsection naming, I think
we need:


to fit the rule where the name of a subsection is prefixed
by the parent name. (Something a new check I added just triggered).

Dave

Comments

David Gibson Jan. 13, 2022, 11:41 p.m. UTC | #1
On Thu, Jan 13, 2022 at 06:51:56PM +0000, Dr. David Alan Gilbert wrote:
> Hi,
>   Is there any easy way of getting a machine where the pbr403 vmstate
> would be generated?

The condition in pbr403_needed is...

    return (pvr & 0xffff0000) == 0x00200000;

.. which looks to be the PVR for ppc403 models.  That makes sense with
the section name... but not so much with the fact that it's under
cpu/tlb6xx.  The 6xx MMU is basically unrelated to the 40x MMU.  But
it looks like the vmstate_tlbemb might be shared between then, because
of bad ideas of the past.

But in any case, we already dropped what little 403 support we ever
had - there's nothing with that PVR even listed in
target/ppc/cpu-models.h.

So I think we should just drop it.

>   Given my vague understanding of vmstate subsection naming, I think
> we need:
> 
> diff --git a/target/ppc/machine.c b/target/ppc/machine.c
> index 756d8de5d8..e535edb7c4 100644
> --- a/target/ppc/machine.c
> +++ b/target/ppc/machine.c
> @@ -718,7 +718,7 @@ static bool pbr403_needed(void *opaque)
>  }
>  
>  static const VMStateDescription vmstate_pbr403 = {
> -    .name = "cpu/pbr403",
> +    .name = "cpu/tlb6xx/pbr403",
>      .version_id = 1,
>      .minimum_version_id = 1,
>      .needed = pbr403_needed,
> 
> to fit the rule where the name of a subsection is prefixed
> by the parent name. (Something a new check I added just triggered).
> 
> Dave
>
Cédric Le Goater Jan. 14, 2022, 7:07 a.m. UTC | #2
On 1/14/22 00:41, David Gibson wrote:
> On Thu, Jan 13, 2022 at 06:51:56PM +0000, Dr. David Alan Gilbert wrote:
>> Hi,
>>    Is there any easy way of getting a machine where the pbr403 vmstate
>> would be generated?
> 
> The condition in pbr403_needed is...
> 
>      return (pvr & 0xffff0000) == 0x00200000;
> 
> .. which looks to be the PVR for ppc403 models.  That makes sense with
> the section name... but not so much with the fact that it's under
> cpu/tlb6xx.  The 6xx MMU is basically unrelated to the 40x MMU.  But
> it looks like the vmstate_tlbemb might be shared between then, because
> of bad ideas of the past.
> 
> But in any case, we already dropped what little 403 support we ever
> had - there's nothing with that PVR even listed in
> target/ppc/cpu-models.h.
> 
> So I think we should just drop it.

yes. But we can not remove env.pb since this would break migration
compatibility, correct ?


I will send a patch.

Thanks,

C.
David Gibson Jan. 17, 2022, 5:52 a.m. UTC | #3
On Fri, Jan 14, 2022 at 08:07:21AM +0100, Cédric le Goater wrote:
> On 1/14/22 00:41, David Gibson wrote:
> > On Thu, Jan 13, 2022 at 06:51:56PM +0000, Dr. David Alan Gilbert wrote:
> > > Hi,
> > >    Is there any easy way of getting a machine where the pbr403 vmstate
> > > would be generated?
> > 
> > The condition in pbr403_needed is...
> > 
> >      return (pvr & 0xffff0000) == 0x00200000;
> > 
> > .. which looks to be the PVR for ppc403 models.  That makes sense with
> > the section name... but not so much with the fact that it's under
> > cpu/tlb6xx.  The 6xx MMU is basically unrelated to the 40x MMU.  But
> > it looks like the vmstate_tlbemb might be shared between then, because
> > of bad ideas of the past.
> > 
> > But in any case, we already dropped what little 403 support we ever
> > had - there's nothing with that PVR even listed in
> > target/ppc/cpu-models.h.
> > 
> > So I think we should just drop it.
> 
> yes. But we can not remove env.pb since this would break migration
> compatibility, correct ?

Only if it appears in a migration section that's actually emitted by a
supported machine type.  As far as I can tell the only section that
does that is vmstate_pbr403, which we're also dropping so we should be
fine.

It is also touched in the *super* old cpu_load_old.  I suspect we
could probably just drop that completely, since I don't think we
realistically support migration from a version that old anyway.  But
even if we don't want to do that right now, we can just replace the
reads into env->pb with discarding reads and we'll be fine.  We don't
implement any cpus that actually used those fields, so we can ignore
them in the migration stream.
Cédric Le Goater Jan. 17, 2022, 9:45 a.m. UTC | #4
On 1/17/22 06:52, David Gibson wrote:
> On Fri, Jan 14, 2022 at 08:07:21AM +0100, Cédric le Goater wrote:
>> On 1/14/22 00:41, David Gibson wrote:
>>> On Thu, Jan 13, 2022 at 06:51:56PM +0000, Dr. David Alan Gilbert wrote:
>>>> Hi,
>>>>     Is there any easy way of getting a machine where the pbr403 vmstate
>>>> would be generated?
>>>
>>> The condition in pbr403_needed is...
>>>
>>>       return (pvr & 0xffff0000) == 0x00200000;
>>>
>>> .. which looks to be the PVR for ppc403 models.  That makes sense with
>>> the section name... but not so much with the fact that it's under
>>> cpu/tlb6xx.  The 6xx MMU is basically unrelated to the 40x MMU.  But
>>> it looks like the vmstate_tlbemb might be shared between then, because
>>> of bad ideas of the past.
>>>
>>> But in any case, we already dropped what little 403 support we ever
>>> had - there's nothing with that PVR even listed in
>>> target/ppc/cpu-models.h.
>>>
>>> So I think we should just drop it.
>>
>> yes. But we can not remove env.pb since this would break migration
>> compatibility, correct ?
> 
> Only if it appears in a migration section that's actually emitted by a
> supported machine type.  As far as I can tell the only section that
> does that is vmstate_pbr403, which we're also dropping so we should be
> fine.

I sent a patch to remove vmstate_pbr403 first.

  > It is also touched in the *super* old cpu_load_old.  I suspect we
> could probably just drop that completely, since I don't think we
> realistically support migration from a version that old anyway.  But
> even if we don't want to do that right now, we can just replace the
> reads into env->pb with discarding reads and we'll be fine.  We don't
> implement any cpus that actually used those fields, so we can ignore
> them in the migration stream.

I will take a look at this also with follow ups.

Thanks,

C.
Dr. David Alan Gilbert Jan. 17, 2022, 9:52 a.m. UTC | #5
* Cédric Le Goater (clg@kaod.org) wrote:
> On 1/17/22 06:52, David Gibson wrote:
> > On Fri, Jan 14, 2022 at 08:07:21AM +0100, Cédric le Goater wrote:
> > > On 1/14/22 00:41, David Gibson wrote:
> > > > On Thu, Jan 13, 2022 at 06:51:56PM +0000, Dr. David Alan Gilbert wrote:
> > > > > Hi,
> > > > >     Is there any easy way of getting a machine where the pbr403 vmstate
> > > > > would be generated?
> > > > 
> > > > The condition in pbr403_needed is...
> > > > 
> > > >       return (pvr & 0xffff0000) == 0x00200000;
> > > > 
> > > > .. which looks to be the PVR for ppc403 models.  That makes sense with
> > > > the section name... but not so much with the fact that it's under
> > > > cpu/tlb6xx.  The 6xx MMU is basically unrelated to the 40x MMU.  But
> > > > it looks like the vmstate_tlbemb might be shared between then, because
> > > > of bad ideas of the past.
> > > > 
> > > > But in any case, we already dropped what little 403 support we ever
> > > > had - there's nothing with that PVR even listed in
> > > > target/ppc/cpu-models.h.
> > > > 
> > > > So I think we should just drop it.
> > > 
> > > yes. But we can not remove env.pb since this would break migration
> > > compatibility, correct ?
> > 
> > Only if it appears in a migration section that's actually emitted by a
> > supported machine type.  As far as I can tell the only section that
> > does that is vmstate_pbr403, which we're also dropping so we should be
> > fine.
> 
> I sent a patch to remove vmstate_pbr403 first.

Thanks!

Dave

>  > It is also touched in the *super* old cpu_load_old.  I suspect we
> > could probably just drop that completely, since I don't think we
> > realistically support migration from a version that old anyway.  But
> > even if we don't want to do that right now, we can just replace the
> > reads into env->pb with discarding reads and we'll be fine.  We don't
> > implement any cpus that actually used those fields, so we can ignore
> > them in the migration stream.
> 
> I will take a look at this also with follow ups.
> 
> Thanks,
> 
> C.
>
Peter Maydell Jan. 17, 2022, 8:40 p.m. UTC | #6
On Mon, 17 Jan 2022 at 05:52, David Gibson <david@gibson.dropbear.id.au> wrote:
> It is also touched in the *super* old cpu_load_old.  I suspect we
> could probably just drop that completely, since I don't think we
> realistically support migration from a version that old anyway.

This would be a nice thing to do, because the PPC CPU is the
only remaining in-tree user of the .load_state_old migration
hook, so if we declared that we don't support migrating from
those old versions of QEMU (1.5 and earlier, I think) then we
could delete the .load_state_old and .minimum_version_id_old
handling completely.

-- PMM
Cédric Le Goater Jan. 18, 2022, 9:11 a.m. UTC | #7
On 1/17/22 21:40, Peter Maydell wrote:
> On Mon, 17 Jan 2022 at 05:52, David Gibson <david@gibson.dropbear.id.au> wrote:
>> It is also touched in the *super* old cpu_load_old.  I suspect we
>> could probably just drop that completely, since I don't think we
>> realistically support migration from a version that old anyway.
> 
> This would be a nice thing to do, because the PPC CPU is the
> only remaining in-tree user of the .load_state_old migration
> hook, so if we declared that we don't support migrating from
> those old versions of QEMU (1.5 and earlier, I think) then we
> could delete the .load_state_old and .minimum_version_id_old
> handling completely.

yes. It should be fine for PPC.

Thanks,

C.
diff mbox series

Patch

diff --git a/target/ppc/machine.c b/target/ppc/machine.c
index 756d8de5d8..e535edb7c4 100644
--- a/target/ppc/machine.c
+++ b/target/ppc/machine.c
@@ -718,7 +718,7 @@  static bool pbr403_needed(void *opaque)
 }
 
 static const VMStateDescription vmstate_pbr403 = {
-    .name = "cpu/pbr403",
+    .name = "cpu/tlb6xx/pbr403",
     .version_id = 1,
     .minimum_version_id = 1,
     .needed = pbr403_needed,