[PATCH v4 00/17] target/ppc: Fix truncation of env->hflags

Richard Henderson posted 17 patches 3 years, 1 month ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210315184615.1985590-1-richard.henderson@linaro.org
Maintainers: "Cédric Le Goater" <clg@kaod.org>, Greg Kurz <groug@kaod.org>, Laurent Vivier <laurent@vivier.eu>, David Gibson <david@gibson.dropbear.id.au>
There is a newer version of this series
target/ppc/cpu.h                |  50 +++++-
target/ppc/helper.h             |   1 +
target/ppc/helper_regs.h        | 183 +--------------------
hw/ppc/pnv_core.c               |   3 +-
hw/ppc/spapr_rtas.c             |   2 +
linux-user/ppc/cpu_loop.c       |   5 +-
linux-user/ppc/signal.c         |  23 ++-
target/ppc/excp_helper.c        |   9 ++
target/ppc/helper_regs.c        | 272 ++++++++++++++++++++++++++++++++
target/ppc/int_helper.c         |   1 +
target/ppc/machine.c            |  27 ++--
target/ppc/mem_helper.c         |   2 +-
target/ppc/misc_helper.c        |  13 +-
target/ppc/mmu-hash64.c         |   3 +
target/ppc/translate.c          |  98 ++++--------
target/ppc/translate_init.c.inc |   4 +-
target/ppc/meson.build          |   1 +
17 files changed, 410 insertions(+), 287 deletions(-)
create mode 100644 target/ppc/helper_regs.c
[PATCH v4 00/17] target/ppc: Fix truncation of env->hflags
Posted by Richard Henderson 3 years, 1 month ago
Changes for v4:
 * Use hregs_recompute_hflags for hw/ppc/ reset.
   -- Incorporate Cedric's feedback.

Changes for v3:
 * Fixes for linux-user, signal handling and startup.
   -- Oops, the directory in which I did testing for v2
      had a reduced set of targets.

Changes for v2:
 * Do not put tcg internal state into migration, except to
   retain backward compatibility.
 * Do not touch anything in env in ppc_tr_init_disas_context.
 * Do make sure that hflags contains everything that it should.
 * Do verify that hflags is properly updated.


r~


Richard Henderson (17):
  target/ppc: Move helper_regs.h functions out-of-line
  target/ppc: Move 601 hflags adjustment to hreg_compute_hflags
  target/ppc: Properly sync cpu state with new msr in cpu_load_old
  target/ppc: Do not call hreg_compute_mem_idx after ppc_store_msr
  target/ppc: Retain hflags_nmsr only for migration
  target/ppc: Fix comment for MSR_FE{0,1}
  target/ppc: Disconnect hflags from MSR
  target/ppc: Reduce env->hflags to uint32_t
  target/ppc: Put dbcr0 single-step bits into hflags
  target/ppc: Create helper_scv
  target/ppc: Put LPCR[GTSE] in hflags
  target/ppc: Remove MSR_SA and MSR_AP from hflags
  target/ppc: Remove env->immu_idx and env->dmmu_idx
  hw/ppc/pnv_core: Update hflags after setting msr
  hw/ppc/spapr_rtas: Update hflags after setting msr
  linux-user/ppc: Fix msr updates for signal handling
  target/ppc: Validate hflags with CONFIG_DEBUG_TCG

 target/ppc/cpu.h                |  50 +++++-
 target/ppc/helper.h             |   1 +
 target/ppc/helper_regs.h        | 183 +--------------------
 hw/ppc/pnv_core.c               |   3 +-
 hw/ppc/spapr_rtas.c             |   2 +
 linux-user/ppc/cpu_loop.c       |   5 +-
 linux-user/ppc/signal.c         |  23 ++-
 target/ppc/excp_helper.c        |   9 ++
 target/ppc/helper_regs.c        | 272 ++++++++++++++++++++++++++++++++
 target/ppc/int_helper.c         |   1 +
 target/ppc/machine.c            |  27 ++--
 target/ppc/mem_helper.c         |   2 +-
 target/ppc/misc_helper.c        |  13 +-
 target/ppc/mmu-hash64.c         |   3 +
 target/ppc/translate.c          |  98 ++++--------
 target/ppc/translate_init.c.inc |   4 +-
 target/ppc/meson.build          |   1 +
 17 files changed, 410 insertions(+), 287 deletions(-)
 create mode 100644 target/ppc/helper_regs.c

-- 
2.25.1


Re: [PATCH v4 00/17] target/ppc: Fix truncation of env->hflags
Posted by Cédric Le Goater 3 years, 1 month ago
Hello,

I gave this series a try on some PPC machines : mac99, g3beige, 
sam460ex, pseries, powernv, with linux, macos, darwin, aix and 
didn't see any regression. Migration seems to work for pseries.

C.

On 3/15/21 7:45 PM, Richard Henderson wrote:
> Changes for v4:
>  * Use hregs_recompute_hflags for hw/ppc/ reset.
>    -- Incorporate Cedric's feedback.
> 
> Changes for v3:
>  * Fixes for linux-user, signal handling and startup.
>    -- Oops, the directory in which I did testing for v2
>       had a reduced set of targets.
> 
> Changes for v2:
>  * Do not put tcg internal state into migration, except to
>    retain backward compatibility.
>  * Do not touch anything in env in ppc_tr_init_disas_context.
>  * Do make sure that hflags contains everything that it should.
>  * Do verify that hflags is properly updated.
> 
> 
> r~
> 
> 
> Richard Henderson (17):
>   target/ppc: Move helper_regs.h functions out-of-line
>   target/ppc: Move 601 hflags adjustment to hreg_compute_hflags
>   target/ppc: Properly sync cpu state with new msr in cpu_load_old
>   target/ppc: Do not call hreg_compute_mem_idx after ppc_store_msr
>   target/ppc: Retain hflags_nmsr only for migration
>   target/ppc: Fix comment for MSR_FE{0,1}
>   target/ppc: Disconnect hflags from MSR
>   target/ppc: Reduce env->hflags to uint32_t
>   target/ppc: Put dbcr0 single-step bits into hflags
>   target/ppc: Create helper_scv
>   target/ppc: Put LPCR[GTSE] in hflags
>   target/ppc: Remove MSR_SA and MSR_AP from hflags
>   target/ppc: Remove env->immu_idx and env->dmmu_idx
>   hw/ppc/pnv_core: Update hflags after setting msr
>   hw/ppc/spapr_rtas: Update hflags after setting msr
>   linux-user/ppc: Fix msr updates for signal handling
>   target/ppc: Validate hflags with CONFIG_DEBUG_TCG
> 
>  target/ppc/cpu.h                |  50 +++++-
>  target/ppc/helper.h             |   1 +
>  target/ppc/helper_regs.h        | 183 +--------------------
>  hw/ppc/pnv_core.c               |   3 +-
>  hw/ppc/spapr_rtas.c             |   2 +
>  linux-user/ppc/cpu_loop.c       |   5 +-
>  linux-user/ppc/signal.c         |  23 ++-
>  target/ppc/excp_helper.c        |   9 ++
>  target/ppc/helper_regs.c        | 272 ++++++++++++++++++++++++++++++++
>  target/ppc/int_helper.c         |   1 +
>  target/ppc/machine.c            |  27 ++--
>  target/ppc/mem_helper.c         |   2 +-
>  target/ppc/misc_helper.c        |  13 +-
>  target/ppc/mmu-hash64.c         |   3 +
>  target/ppc/translate.c          |  98 ++++--------
>  target/ppc/translate_init.c.inc |   4 +-
>  target/ppc/meson.build          |   1 +
>  17 files changed, 410 insertions(+), 287 deletions(-)
>  create mode 100644 target/ppc/helper_regs.c
>