* Fix a couple of recent regressions in powernv SPRs

-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEETkN92lZhb0MpsKeVZ7MCdqhiHK4FAmf1GkwACgkQZ7MCdqhi
 HK6tmw//XnldKdvFSaiisqxutdf+wWneqI1X+cVzVpSf6JyUN+SX3c4CSkt/u4NJ
 msWtmCEcHvvZBR0el9AxQVWhuRbO8A6EkkR8Fcx955rQ/CNPTz3YcHatIzpN2JMA
 NnnB9HxekBFet27A7+8iwtJGuQw5PPjbqN3GhzZcZZ3Kv8BTKZSBv1fnYINqdR9O
 1gCaJRh3JLQn7cIj9Qh2MvMO4b+1XwuLuwosN5yd9x5oES9TarNFJbNq4/oSTIVI
 jdEb0CTwXL+IpymHLsVdvSmLALf218qnoRm8PqsOcep74MkXKBj+f158tJWha2wQ
 9og75EYhnglLtU85TymCIlXFIA/DmN72zY7IK+dTr8ZDn4N7W9dSpJqqQjy9vSxX
 g9Z0/F38HBBzTVh+kgJ0Z9cjIkned4zRNZvxaiFl3f5TOEidZ5GU5fW16tWoE6Cj
 44m5X6Si8SvPD+1pFHDd1cUQdNWoIjEW1uei1gK3E1jqmJNUfau8TaVqADQA1q4m
 RU4AFdP16tYMiRYEBdpCU6OmHgDn+lmoCwFN7n/hU88s4x5aLjYMCt0/XH3v84dg
 4UpYz38icp9/nzOVdrCMFuiFd8ni+cFZ9ZaUSzTVKyQfJZ+IT7H2EyJgbcsIKTWj
 rPTuBjeHpsmo2XFumTKcvNUmnQB9LxkAhkSnkqhCSrEhoGySDik=
 =ryYx
 -----END PGP SIGNATURE-----

Merge tag 'pull-ppc-for-10.0-3-20250408' of https://gitlab.com/npiggin/qemu into staging

* Fix a couple of recent regressions in powernv SPRs

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCgAdFiEETkN92lZhb0MpsKeVZ7MCdqhiHK4FAmf1GkwACgkQZ7MCdqhi
# HK6tmw//XnldKdvFSaiisqxutdf+wWneqI1X+cVzVpSf6JyUN+SX3c4CSkt/u4NJ
# msWtmCEcHvvZBR0el9AxQVWhuRbO8A6EkkR8Fcx955rQ/CNPTz3YcHatIzpN2JMA
# NnnB9HxekBFet27A7+8iwtJGuQw5PPjbqN3GhzZcZZ3Kv8BTKZSBv1fnYINqdR9O
# 1gCaJRh3JLQn7cIj9Qh2MvMO4b+1XwuLuwosN5yd9x5oES9TarNFJbNq4/oSTIVI
# jdEb0CTwXL+IpymHLsVdvSmLALf218qnoRm8PqsOcep74MkXKBj+f158tJWha2wQ
# 9og75EYhnglLtU85TymCIlXFIA/DmN72zY7IK+dTr8ZDn4N7W9dSpJqqQjy9vSxX
# g9Z0/F38HBBzTVh+kgJ0Z9cjIkned4zRNZvxaiFl3f5TOEidZ5GU5fW16tWoE6Cj
# 44m5X6Si8SvPD+1pFHDd1cUQdNWoIjEW1uei1gK3E1jqmJNUfau8TaVqADQA1q4m
# RU4AFdP16tYMiRYEBdpCU6OmHgDn+lmoCwFN7n/hU88s4x5aLjYMCt0/XH3v84dg
# 4UpYz38icp9/nzOVdrCMFuiFd8ni+cFZ9ZaUSzTVKyQfJZ+IT7H2EyJgbcsIKTWj
# rPTuBjeHpsmo2XFumTKcvNUmnQB9LxkAhkSnkqhCSrEhoGySDik=
# =ryYx
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 08 Apr 2025 08:45:00 EDT
# gpg:                using RSA key 4E437DDA56616F4329B0A79567B30276A8621CAE
# gpg: Good signature from "Nicholas Piggin <npiggin@gmail.com>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 4E43 7DDA 5661 6F43 29B0  A795 67B3 0276 A862 1CAE

* tag 'pull-ppc-for-10.0-3-20250408' of https://gitlab.com/npiggin/qemu:
  target/ppc: Fix SPRC/SPRD SPRs for P9/10
  target/ppc: Big-core scratch register fix

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2025-04-08 09:12:48 -04:00
commit 70ff69a7b2
2 changed files with 20 additions and 12 deletions

View File

@ -5801,6 +5801,18 @@ static void register_power9_book4_sprs(CPUPPCState *env)
&spr_read_generic, &spr_write_generic,
&spr_read_generic, &spr_write_generic,
0x00000000);
/* SPRC/SPRD exist in earlier CPUs but only tested on POWER9/10 */
spr_register_hv(env, SPR_POWER_SPRC, "SPRC",
SPR_NOACCESS, SPR_NOACCESS,
SPR_NOACCESS, SPR_NOACCESS,
&spr_read_generic, &spr_write_sprc,
0x00000000);
spr_register_hv(env, SPR_POWER_SPRD, "SPRD",
SPR_NOACCESS, SPR_NOACCESS,
SPR_NOACCESS, SPR_NOACCESS,
&spr_read_sprd, &spr_write_sprd,
0x00000000);
#endif
}
@ -5822,17 +5834,6 @@ static void register_power8_book4_sprs(CPUPPCState *env)
SPR_NOACCESS, SPR_NOACCESS,
&spr_read_generic, &spr_write_generic,
KVM_REG_PPC_WORT, 0);
/* SPRC/SPRD exist in earlier CPUs but only tested on POWER9/10 */
spr_register_hv(env, SPR_POWER_SPRC, "SPRC",
SPR_NOACCESS, SPR_NOACCESS,
SPR_NOACCESS, SPR_NOACCESS,
&spr_read_generic, &spr_write_sprc,
0x00000000);
spr_register_hv(env, SPR_POWER_SPRD, "SPRD",
SPR_NOACCESS, SPR_NOACCESS,
SPR_NOACCESS, SPR_NOACCESS,
&spr_read_sprd, &spr_write_sprd,
0x00000000);
#endif
}

View File

@ -332,6 +332,10 @@ target_ulong helper_load_sprd(CPUPPCState *env)
PnvCore *pc = pnv_cpu_state(cpu)->pnv_core;
target_ulong sprc = env->spr[SPR_POWER_SPRC];
if (pc->big_core) {
pc = pnv_chip_find_core(pc->chip, CPU_CORE(pc)->core_id & ~0x1);
}
switch (sprc & 0x3e0) {
case 0: /* SCRATCH0-3 */
case 1: /* SCRATCH4-7 */
@ -368,6 +372,10 @@ void helper_store_sprd(CPUPPCState *env, target_ulong val)
PnvCore *pc = pnv_cpu_state(cpu)->pnv_core;
int nr;
if (pc->big_core) {
pc = pnv_chip_find_core(pc->chip, CPU_CORE(pc)->core_id & ~0x1);
}
switch (sprc & 0x3e0) {
case 0: /* SCRATCH0-3 */
case 1: /* SCRATCH4-7 */
@ -378,7 +386,6 @@ void helper_store_sprd(CPUPPCState *env, target_ulong val)
* information. Could also dump these upon checkstop.
*/
nr = (sprc >> 3) & 0x7;
qemu_log("SPRD write 0x" TARGET_FMT_lx " to SCRATCH%d\n", val, nr);
pc->scratch[nr] = val;
break;
default: