KVM: PPC: Book3S HV: Return error from h_set_dabr() on POWER9
authorMichael Neuling <mikey@neuling.org>
Tue, 27 Mar 2018 04:37:21 +0000 (15:37 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 27 Mar 2018 12:55:32 +0000 (23:55 +1100)
POWER7 compat mode guests can use h_set_dabr on POWER9. POWER9 should
use the DAWR but since it's disabled there we can't.

This returns H_UNSUPPORTED on a h_set_dabr() on POWER9 where the DAWR
is disabled.

Current Linux guests ignore this error, so they will silently not get
the DAWR (sigh). The same error code is being used by POWERVM in this
case.

Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/hvcall.h
arch/powerpc/kvm/book3s_hv_rmhandlers.S

index eca3f9c689070632492b18e9cc9d55d075024dfe..e87d465af4f85597b40a8ef8b54b0cd66ecba882 100644 (file)
@@ -88,6 +88,7 @@
 #define H_P8           -61
 #define H_P9           -62
 #define H_TOO_BIG      -64
+#define H_UNSUPPORTED  -67
 #define H_OVERLAP      -68
 #define H_INTERRUPT    -69
 #define H_BAD_DATA     -70
index 736809fba912f34855ee3b7941a2b4c0daa21d5d..3d1023b03d5aa92296f6413e7d3b9179bf61552a 100644 (file)
@@ -2563,8 +2563,14 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
        li      r3,0
        blr
 
+2:
+BEGIN_FTR_SECTION
+       /* POWER9 with disabled DAWR */
+       li      r3, H_UNSUPPORTED
+       blr
+END_FTR_SECTION_IFCLR(CPU_FTR_DAWR)
        /* Emulate H_SET_DABR/X on P8 for the sake of compat mode guests */
-2:     rlwimi  r5, r4, 5, DAWRX_DR | DAWRX_DW
+       rlwimi  r5, r4, 5, DAWRX_DR | DAWRX_DW
        rlwimi  r5, r4, 2, DAWRX_WT
        clrrdi  r4, r4, 3
        std     r4, VCPU_DAWR(r3)