Skip to content

Commit 70ff69a

Browse files
committed
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 <[email protected]>" [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 <[email protected]>
2 parents cd9e186 + b3d47c8 commit 70ff69a

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

target/ppc/cpu_init.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5801,6 +5801,18 @@ static void register_power9_book4_sprs(CPUPPCState *env)
58015801
&spr_read_generic, &spr_write_generic,
58025802
&spr_read_generic, &spr_write_generic,
58035803
0x00000000);
5804+
5805+
/* SPRC/SPRD exist in earlier CPUs but only tested on POWER9/10 */
5806+
spr_register_hv(env, SPR_POWER_SPRC, "SPRC",
5807+
SPR_NOACCESS, SPR_NOACCESS,
5808+
SPR_NOACCESS, SPR_NOACCESS,
5809+
&spr_read_generic, &spr_write_sprc,
5810+
0x00000000);
5811+
spr_register_hv(env, SPR_POWER_SPRD, "SPRD",
5812+
SPR_NOACCESS, SPR_NOACCESS,
5813+
SPR_NOACCESS, SPR_NOACCESS,
5814+
&spr_read_sprd, &spr_write_sprd,
5815+
0x00000000);
58045816
#endif
58055817
}
58065818

@@ -5822,17 +5834,6 @@ static void register_power8_book4_sprs(CPUPPCState *env)
58225834
SPR_NOACCESS, SPR_NOACCESS,
58235835
&spr_read_generic, &spr_write_generic,
58245836
KVM_REG_PPC_WORT, 0);
5825-
/* SPRC/SPRD exist in earlier CPUs but only tested on POWER9/10 */
5826-
spr_register_hv(env, SPR_POWER_SPRC, "SPRC",
5827-
SPR_NOACCESS, SPR_NOACCESS,
5828-
SPR_NOACCESS, SPR_NOACCESS,
5829-
&spr_read_generic, &spr_write_sprc,
5830-
0x00000000);
5831-
spr_register_hv(env, SPR_POWER_SPRD, "SPRD",
5832-
SPR_NOACCESS, SPR_NOACCESS,
5833-
SPR_NOACCESS, SPR_NOACCESS,
5834-
&spr_read_sprd, &spr_write_sprd,
5835-
0x00000000);
58365837
#endif
58375838
}
58385839

target/ppc/misc_helper.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,10 @@ target_ulong helper_load_sprd(CPUPPCState *env)
332332
PnvCore *pc = pnv_cpu_state(cpu)->pnv_core;
333333
target_ulong sprc = env->spr[SPR_POWER_SPRC];
334334

335+
if (pc->big_core) {
336+
pc = pnv_chip_find_core(pc->chip, CPU_CORE(pc)->core_id & ~0x1);
337+
}
338+
335339
switch (sprc & 0x3e0) {
336340
case 0: /* SCRATCH0-3 */
337341
case 1: /* SCRATCH4-7 */
@@ -368,6 +372,10 @@ void helper_store_sprd(CPUPPCState *env, target_ulong val)
368372
PnvCore *pc = pnv_cpu_state(cpu)->pnv_core;
369373
int nr;
370374

375+
if (pc->big_core) {
376+
pc = pnv_chip_find_core(pc->chip, CPU_CORE(pc)->core_id & ~0x1);
377+
}
378+
371379
switch (sprc & 0x3e0) {
372380
case 0: /* SCRATCH0-3 */
373381
case 1: /* SCRATCH4-7 */
@@ -378,7 +386,6 @@ void helper_store_sprd(CPUPPCState *env, target_ulong val)
378386
* information. Could also dump these upon checkstop.
379387
*/
380388
nr = (sprc >> 3) & 0x7;
381-
qemu_log("SPRD write 0x" TARGET_FMT_lx " to SCRATCH%d\n", val, nr);
382389
pc->scratch[nr] = val;
383390
break;
384391
default:

0 commit comments

Comments
 (0)