Re: [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old

2022-01-18 Thread Peter Maydell
On Tue, 18 Jan 2022 at 11:18, Matheus K. Ferst
 wrote:
>
> On 18/01/2022 07:41, Cédric Le Goater wrote:
> > This breaks migration compatibility from (very) old versions of
> > QEMU. This should not be a problem for the pseries machine for which
> > migration is only supported on recent QEMUs ( > 2.x). There is no
> > clear status on what is supported or not for the other machines. Let's
> > move forward and remove the .load_state_old handler.
> >
> > Signed-off-by: Cédric Le Goater 
> > ---
> >   target/ppc/machine.c | 112 ---
> >   1 file changed, 112 deletions(-)
> >
> > diff --git a/target/ppc/machine.c b/target/ppc/machine.c
> > index 756d8de5d8dd..df547385ff1e 100644
> > --- a/target/ppc/machine.c
> > +++ b/target/ppc/machine.c
> > @@ -23,117 +23,6 @@ static void post_load_update_msr(CPUPPCState *env)
> >   pmu_update_summaries(env);
> >   }
> >
> > -static int cpu_load_old(QEMUFile *f, void *opaque, int version_id)
> > -{
> > -PowerPCCPU *cpu = opaque;
>
> 
>
> > -
> >   static int get_avr(QEMUFile *f, void *pv, size_t size,
> >  const VMStateField *field)
> >   {
> > @@ -808,7 +697,6 @@ const VMStateDescription vmstate_ppc_cpu = {
> >   .version_id = 5,
> >   .minimum_version_id = 5,
> >   .minimum_version_id_old = 4,
> > -.load_state_old = cpu_load_old,
>
> According to docs/devel/migration.rst, .minimum_version_id_old is
> ignored if no load_state_old handler is provided, I think we can drop it
> too.

Yes; the migration code only checks the field if load_state_old is non-NULL.

-- PMM



Re: [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old

2022-01-18 Thread Matheus K. Ferst

On 18/01/2022 07:41, Cédric Le Goater wrote:

This breaks migration compatibility from (very) old versions of
QEMU. This should not be a problem for the pseries machine for which
migration is only supported on recent QEMUs ( > 2.x). There is no
clear status on what is supported or not for the other machines. Let's
move forward and remove the .load_state_old handler.

Signed-off-by: Cédric Le Goater 
---
  target/ppc/machine.c | 112 ---
  1 file changed, 112 deletions(-)

diff --git a/target/ppc/machine.c b/target/ppc/machine.c
index 756d8de5d8dd..df547385ff1e 100644
--- a/target/ppc/machine.c
+++ b/target/ppc/machine.c
@@ -23,117 +23,6 @@ static void post_load_update_msr(CPUPPCState *env)
  pmu_update_summaries(env);
  }

-static int cpu_load_old(QEMUFile *f, void *opaque, int version_id)
-{
-PowerPCCPU *cpu = opaque;





-
  static int get_avr(QEMUFile *f, void *pv, size_t size,
 const VMStateField *field)
  {
@@ -808,7 +697,6 @@ const VMStateDescription vmstate_ppc_cpu = {
  .version_id = 5,
  .minimum_version_id = 5,
  .minimum_version_id_old = 4,
-.load_state_old = cpu_load_old,


According to docs/devel/migration.rst, .minimum_version_id_old is 
ignored if no load_state_old handler is provided, I think we can drop it 
too.



  .pre_save = cpu_pre_save,
  .post_load = cpu_post_load,
  .fields = (VMStateField[]) {
--
2.31.1

Thanks,
Matheus K. Ferst
Instituto de Pesquisas ELDORADO 
Analista de Software
Aviso Legal - Disclaimer 



Re: [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old

2022-01-18 Thread David Gibson
On Tue, Jan 18, 2022 at 11:41:49AM +0100, Cédric le Goater wrote:
> This breaks migration compatibility from (very) old versions of
> QEMU. This should not be a problem for the pseries machine for which
> migration is only supported on recent QEMUs ( > 2.x). There is no
> clear status on what is supported or not for the other machines. Let's
> move forward and remove the .load_state_old handler.
> 
> Signed-off-by: Cédric Le Goater 

Reviewed-by: David Gibson 

> ---
>  target/ppc/machine.c | 112 ---
>  1 file changed, 112 deletions(-)
> 
> diff --git a/target/ppc/machine.c b/target/ppc/machine.c
> index 756d8de5d8dd..df547385ff1e 100644
> --- a/target/ppc/machine.c
> +++ b/target/ppc/machine.c
> @@ -23,117 +23,6 @@ static void post_load_update_msr(CPUPPCState *env)
>  pmu_update_summaries(env);
>  }
>  
> -static int cpu_load_old(QEMUFile *f, void *opaque, int version_id)
> -{
> -PowerPCCPU *cpu = opaque;
> -CPUPPCState *env = >env;
> -unsigned int i, j;
> -target_ulong sdr1;
> -uint32_t fpscr, vscr;
> -#if defined(TARGET_PPC64)
> -int32_t slb_nr;
> -#endif
> -target_ulong xer;
> -
> -for (i = 0; i < 32; i++) {
> -qemu_get_betls(f, >gpr[i]);
> -}
> -#if !defined(TARGET_PPC64)
> -for (i = 0; i < 32; i++) {
> -qemu_get_betls(f, >gprh[i]);
> -}
> -#endif
> -qemu_get_betls(f, >lr);
> -qemu_get_betls(f, >ctr);
> -for (i = 0; i < 8; i++) {
> -qemu_get_be32s(f, >crf[i]);
> -}
> -qemu_get_betls(f, );
> -cpu_write_xer(env, xer);
> -qemu_get_betls(f, >reserve_addr);
> -qemu_get_betls(f, >msr);
> -for (i = 0; i < 4; i++) {
> -qemu_get_betls(f, >tgpr[i]);
> -}
> -for (i = 0; i < 32; i++) {
> -union {
> -float64 d;
> -uint64_t l;
> -} u;
> -u.l = qemu_get_be64(f);
> -*cpu_fpr_ptr(env, i) = u.d;
> -}
> -qemu_get_be32s(f, );
> -env->fpscr = fpscr;
> -qemu_get_sbe32s(f, >access_type);
> -#if defined(TARGET_PPC64)
> -qemu_get_betls(f, >spr[SPR_ASR]);
> -qemu_get_sbe32s(f, _nr);
> -#endif
> -qemu_get_betls(f, );
> -for (i = 0; i < 32; i++) {
> -qemu_get_betls(f, >sr[i]);
> -}
> -for (i = 0; i < 2; i++) {
> -for (j = 0; j < 8; j++) {
> -qemu_get_betls(f, >DBAT[i][j]);
> -}
> -}
> -for (i = 0; i < 2; i++) {
> -for (j = 0; j < 8; j++) {
> -qemu_get_betls(f, >IBAT[i][j]);
> -}
> -}
> -qemu_get_sbe32s(f, >nb_tlb);
> -qemu_get_sbe32s(f, >tlb_per_way);
> -qemu_get_sbe32s(f, >nb_ways);
> -qemu_get_sbe32s(f, >last_way);
> -qemu_get_sbe32s(f, >id_tlbs);
> -qemu_get_sbe32s(f, >nb_pids);
> -if (env->tlb.tlb6) {
> -/* XXX assumes 6xx */
> -for (i = 0; i < env->nb_tlb; i++) {
> -qemu_get_betls(f, >tlb.tlb6[i].pte0);
> -qemu_get_betls(f, >tlb.tlb6[i].pte1);
> -qemu_get_betls(f, >tlb.tlb6[i].EPN);
> -}
> -}
> -for (i = 0; i < 4; i++) {
> -qemu_get_betls(f, >pb[i]);
> -}
> -for (i = 0; i < 1024; i++) {
> -qemu_get_betls(f, >spr[i]);
> -}
> -if (!cpu->vhyp) {
> -ppc_store_sdr1(env, sdr1);
> -}
> -qemu_get_be32s(f, );
> -ppc_store_vscr(env, vscr);
> -qemu_get_be64s(f, >spe_acc);
> -qemu_get_be32s(f, >spe_fscr);
> -qemu_get_betls(f, >msr_mask);
> -qemu_get_be32s(f, >flags);
> -qemu_get_sbe32s(f, >error_code);
> -qemu_get_be32s(f, >pending_interrupts);
> -qemu_get_be32s(f, >irq_input_state);
> -for (i = 0; i < POWERPC_EXCP_NB; i++) {
> -qemu_get_betls(f, >excp_vectors[i]);
> -}
> -qemu_get_betls(f, >excp_prefix);
> -qemu_get_betls(f, >ivor_mask);
> -qemu_get_betls(f, >ivpr_mask);
> -qemu_get_betls(f, >hreset_vector);
> -qemu_get_betls(f, >nip);
> -qemu_get_sbetl(f); /* Discard unused hflags */
> -qemu_get_sbetl(f); /* Discard unused hflags_nmsr */
> -qemu_get_sbe32(f); /* Discard unused mmu_idx */
> -qemu_get_sbe32(f); /* Discard unused power_mode */
> -
> -post_load_update_msr(env);
> -
> -return 0;
> -}
> -
>  static int get_avr(QEMUFile *f, void *pv, size_t size,
> const VMStateField *field)
>  {
> @@ -808,7 +697,6 @@ const VMStateDescription vmstate_ppc_cpu = {
>  .version_id = 5,
>  .minimum_version_id = 5,
>  .minimum_version_id_old = 4,
> -.load_state_old = cpu_load_old,
>  .pre_save = cpu_pre_save,
>  .post_load = cpu_post_load,
>  .fields = (VMStateField[]) {

-- 
David Gibson| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson


signature.asc
Description: PGP signature


[PATCH v2 1/2] target/ppc: Remove last user of .load_state_old

2022-01-18 Thread Cédric Le Goater
This breaks migration compatibility from (very) old versions of
QEMU. This should not be a problem for the pseries machine for which
migration is only supported on recent QEMUs ( > 2.x). There is no
clear status on what is supported or not for the other machines. Let's
move forward and remove the .load_state_old handler.

Signed-off-by: Cédric Le Goater 
---
 target/ppc/machine.c | 112 ---
 1 file changed, 112 deletions(-)

diff --git a/target/ppc/machine.c b/target/ppc/machine.c
index 756d8de5d8dd..df547385ff1e 100644
--- a/target/ppc/machine.c
+++ b/target/ppc/machine.c
@@ -23,117 +23,6 @@ static void post_load_update_msr(CPUPPCState *env)
 pmu_update_summaries(env);
 }
 
-static int cpu_load_old(QEMUFile *f, void *opaque, int version_id)
-{
-PowerPCCPU *cpu = opaque;
-CPUPPCState *env = >env;
-unsigned int i, j;
-target_ulong sdr1;
-uint32_t fpscr, vscr;
-#if defined(TARGET_PPC64)
-int32_t slb_nr;
-#endif
-target_ulong xer;
-
-for (i = 0; i < 32; i++) {
-qemu_get_betls(f, >gpr[i]);
-}
-#if !defined(TARGET_PPC64)
-for (i = 0; i < 32; i++) {
-qemu_get_betls(f, >gprh[i]);
-}
-#endif
-qemu_get_betls(f, >lr);
-qemu_get_betls(f, >ctr);
-for (i = 0; i < 8; i++) {
-qemu_get_be32s(f, >crf[i]);
-}
-qemu_get_betls(f, );
-cpu_write_xer(env, xer);
-qemu_get_betls(f, >reserve_addr);
-qemu_get_betls(f, >msr);
-for (i = 0; i < 4; i++) {
-qemu_get_betls(f, >tgpr[i]);
-}
-for (i = 0; i < 32; i++) {
-union {
-float64 d;
-uint64_t l;
-} u;
-u.l = qemu_get_be64(f);
-*cpu_fpr_ptr(env, i) = u.d;
-}
-qemu_get_be32s(f, );
-env->fpscr = fpscr;
-qemu_get_sbe32s(f, >access_type);
-#if defined(TARGET_PPC64)
-qemu_get_betls(f, >spr[SPR_ASR]);
-qemu_get_sbe32s(f, _nr);
-#endif
-qemu_get_betls(f, );
-for (i = 0; i < 32; i++) {
-qemu_get_betls(f, >sr[i]);
-}
-for (i = 0; i < 2; i++) {
-for (j = 0; j < 8; j++) {
-qemu_get_betls(f, >DBAT[i][j]);
-}
-}
-for (i = 0; i < 2; i++) {
-for (j = 0; j < 8; j++) {
-qemu_get_betls(f, >IBAT[i][j]);
-}
-}
-qemu_get_sbe32s(f, >nb_tlb);
-qemu_get_sbe32s(f, >tlb_per_way);
-qemu_get_sbe32s(f, >nb_ways);
-qemu_get_sbe32s(f, >last_way);
-qemu_get_sbe32s(f, >id_tlbs);
-qemu_get_sbe32s(f, >nb_pids);
-if (env->tlb.tlb6) {
-/* XXX assumes 6xx */
-for (i = 0; i < env->nb_tlb; i++) {
-qemu_get_betls(f, >tlb.tlb6[i].pte0);
-qemu_get_betls(f, >tlb.tlb6[i].pte1);
-qemu_get_betls(f, >tlb.tlb6[i].EPN);
-}
-}
-for (i = 0; i < 4; i++) {
-qemu_get_betls(f, >pb[i]);
-}
-for (i = 0; i < 1024; i++) {
-qemu_get_betls(f, >spr[i]);
-}
-if (!cpu->vhyp) {
-ppc_store_sdr1(env, sdr1);
-}
-qemu_get_be32s(f, );
-ppc_store_vscr(env, vscr);
-qemu_get_be64s(f, >spe_acc);
-qemu_get_be32s(f, >spe_fscr);
-qemu_get_betls(f, >msr_mask);
-qemu_get_be32s(f, >flags);
-qemu_get_sbe32s(f, >error_code);
-qemu_get_be32s(f, >pending_interrupts);
-qemu_get_be32s(f, >irq_input_state);
-for (i = 0; i < POWERPC_EXCP_NB; i++) {
-qemu_get_betls(f, >excp_vectors[i]);
-}
-qemu_get_betls(f, >excp_prefix);
-qemu_get_betls(f, >ivor_mask);
-qemu_get_betls(f, >ivpr_mask);
-qemu_get_betls(f, >hreset_vector);
-qemu_get_betls(f, >nip);
-qemu_get_sbetl(f); /* Discard unused hflags */
-qemu_get_sbetl(f); /* Discard unused hflags_nmsr */
-qemu_get_sbe32(f); /* Discard unused mmu_idx */
-qemu_get_sbe32(f); /* Discard unused power_mode */
-
-post_load_update_msr(env);
-
-return 0;
-}
-
 static int get_avr(QEMUFile *f, void *pv, size_t size,
const VMStateField *field)
 {
@@ -808,7 +697,6 @@ const VMStateDescription vmstate_ppc_cpu = {
 .version_id = 5,
 .minimum_version_id = 5,
 .minimum_version_id_old = 4,
-.load_state_old = cpu_load_old,
 .pre_save = cpu_pre_save,
 .post_load = cpu_post_load,
 .fields = (VMStateField[]) {
-- 
2.31.1