#define EXCEPTION_PROLOG_PSERIES_1(label, h)                           \
        __EXCEPTION_PROLOG_PSERIES_1(label, h)
 
+/* _NORI variant keeps MSR_RI clear */
+#define __EXCEPTION_PROLOG_PSERIES_1_NORI(label, h)                    \
+       ld      r10,PACAKMSR(r13);      /* get MSR value for kernel */  \
+       xori    r10,r10,MSR_RI;         /* Clear MSR_RI */              \
+       mfspr   r11,SPRN_##h##SRR0;     /* save SRR0 */                 \
+       LOAD_HANDLER(r12,label)                                         \
+       mtspr   SPRN_##h##SRR0,r12;                                     \
+       mfspr   r12,SPRN_##h##SRR1;     /* and SRR1 */                  \
+       mtspr   SPRN_##h##SRR1,r10;                                     \
+       h##rfid;                                                        \
+       b       .       /* prevent speculative execution */
+
+#define EXCEPTION_PROLOG_PSERIES_1_NORI(label, h)                      \
+       __EXCEPTION_PROLOG_PSERIES_1_NORI(label, h)
+
 #define EXCEPTION_PROLOG_PSERIES(area, label, h, extra, vec)           \
        EXCEPTION_PROLOG_0(area);                                       \
        EXCEPTION_PROLOG_1(area, extra, vec);                           \
 
 machine_check_pSeries_0:
        EXCEPTION_PROLOG_1(PACA_EXMC, KVMTEST_PR, 0x200)
        /*
-        * The following is essentially EXCEPTION_PROLOG_PSERIES_1 with the
-        * difference that MSR_RI is not enabled, because PACA_EXMC is being
-        * used, so nested machine check corrupts it. machine_check_common
-        * enables MSR_RI.
+        * MSR_RI is not enabled, because PACA_EXMC is being used, so a
+        * nested machine check corrupts it. machine_check_common enables
+        * MSR_RI.
         */
-       ld      r10,PACAKMSR(r13)
-       xori    r10,r10,MSR_RI
-       mfspr   r11,SPRN_SRR0
-       LOAD_HANDLER(r12, machine_check_common)
-       mtspr   SPRN_SRR0,r12
-       mfspr   r12,SPRN_SRR1
-       mtspr   SPRN_SRR1,r10
-       rfid
-       b       .       /* prevent speculative execution */
+       EXCEPTION_PROLOG_PSERIES_1_NORI(machine_check_common, EXC_STD)
 
 TRAMP_KVM_SKIP(PACA_EXMC, 0x200)