spapr: set MSR[ME] and MSR[FP] on client entry
authorNicholas Piggin <npiggin@gmail.com>
Tue, 13 Jun 2023 14:16:23 +0000 (00:16 +1000)
committerNicholas Piggin <npiggin@gmail.com>
Tue, 12 Mar 2024 16:47:04 +0000 (02:47 +1000)
The initial MSR state for the OpenFirmware binding specifies
MSR[ME] and MSR[FP] are set.

Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
hw/ppc/spapr_cpu_core.c

index 40b7c52f7ff49c94cfecd52fdfe34f57dbaee010..58cb9926091e5cee04d6e42483702e378e133de5 100644 (file)
@@ -39,9 +39,13 @@ static void spapr_reset_vcpu(PowerPCCPU *cpu)
 
     /*
      * "PowerPC Processor binding to IEEE 1275" defines the initial MSR state
-     * as 32bit (MSR_SF=0) in "8.2.1. Initial Register Values".
+     * as 32bit (MSR_SF=0) with MSR_ME=1 and MSR_FP=1 in "8.2.1. Initial
+     * Register Values". This can also be found in "LoPAPR 1.1" "C.9.2.1
+     * Initial Register Values".
      */
     env->msr &= ~(1ULL << MSR_SF);
+    env->msr |= (1ULL << MSR_ME) | (1ULL << MSR_FP);
+
     env->spr[SPR_HIOR] = 0;
 
     lpcr = env->spr[SPR_LPCR];