Merge tag 'mm-nonmm-stable-2024-05-19-11-56' of git://git.kernel.org/pub/scm/linux...
[sfrench/cifs-2.6.git] / arch / x86 / include / asm / hyperv-tlfs.h
index 2ff26f53cd62446e6260025b7a7094fee1d5b765..3787d26810c1c42902a354c1d0b5a8a6541f9000 100644 (file)
@@ -182,7 +182,7 @@ enum hv_isolation_type {
 #define HV_X64_MSR_HYPERCALL                   0x40000001
 
 /* MSR used to provide vcpu index */
-#define HV_REGISTER_VP_INDEX                   0x40000002
+#define HV_X64_MSR_VP_INDEX                    0x40000002
 
 /* MSR used to reset the guest OS. */
 #define HV_X64_MSR_RESET                       0x40000003
@@ -191,10 +191,10 @@ enum hv_isolation_type {
 #define HV_X64_MSR_VP_RUNTIME                  0x40000010
 
 /* MSR used to read the per-partition time reference counter */
-#define HV_REGISTER_TIME_REF_COUNT             0x40000020
+#define HV_X64_MSR_TIME_REF_COUNT              0x40000020
 
 /* A partition's reference time stamp counter (TSC) page */
-#define HV_REGISTER_REFERENCE_TSC              0x40000021
+#define HV_X64_MSR_REFERENCE_TSC               0x40000021
 
 /* MSR used to retrieve the TSC frequency */
 #define HV_X64_MSR_TSC_FREQUENCY               0x40000022
@@ -209,61 +209,61 @@ enum hv_isolation_type {
 #define HV_X64_MSR_VP_ASSIST_PAGE              0x40000073
 
 /* Define synthetic interrupt controller model specific registers. */
-#define HV_REGISTER_SCONTROL                   0x40000080
-#define HV_REGISTER_SVERSION                   0x40000081
-#define HV_REGISTER_SIEFP                      0x40000082
-#define HV_REGISTER_SIMP                       0x40000083
-#define HV_REGISTER_EOM                                0x40000084
-#define HV_REGISTER_SINT0                      0x40000090
-#define HV_REGISTER_SINT1                      0x40000091
-#define HV_REGISTER_SINT2                      0x40000092
-#define HV_REGISTER_SINT3                      0x40000093
-#define HV_REGISTER_SINT4                      0x40000094
-#define HV_REGISTER_SINT5                      0x40000095
-#define HV_REGISTER_SINT6                      0x40000096
-#define HV_REGISTER_SINT7                      0x40000097
-#define HV_REGISTER_SINT8                      0x40000098
-#define HV_REGISTER_SINT9                      0x40000099
-#define HV_REGISTER_SINT10                     0x4000009A
-#define HV_REGISTER_SINT11                     0x4000009B
-#define HV_REGISTER_SINT12                     0x4000009C
-#define HV_REGISTER_SINT13                     0x4000009D
-#define HV_REGISTER_SINT14                     0x4000009E
-#define HV_REGISTER_SINT15                     0x4000009F
+#define HV_X64_MSR_SCONTROL                    0x40000080
+#define HV_X64_MSR_SVERSION                    0x40000081
+#define HV_X64_MSR_SIEFP                       0x40000082
+#define HV_X64_MSR_SIMP                                0x40000083
+#define HV_X64_MSR_EOM                         0x40000084
+#define HV_X64_MSR_SINT0                       0x40000090
+#define HV_X64_MSR_SINT1                       0x40000091
+#define HV_X64_MSR_SINT2                       0x40000092
+#define HV_X64_MSR_SINT3                       0x40000093
+#define HV_X64_MSR_SINT4                       0x40000094
+#define HV_X64_MSR_SINT5                       0x40000095
+#define HV_X64_MSR_SINT6                       0x40000096
+#define HV_X64_MSR_SINT7                       0x40000097
+#define HV_X64_MSR_SINT8                       0x40000098
+#define HV_X64_MSR_SINT9                       0x40000099
+#define HV_X64_MSR_SINT10                      0x4000009A
+#define HV_X64_MSR_SINT11                      0x4000009B
+#define HV_X64_MSR_SINT12                      0x4000009C
+#define HV_X64_MSR_SINT13                      0x4000009D
+#define HV_X64_MSR_SINT14                      0x4000009E
+#define HV_X64_MSR_SINT15                      0x4000009F
 
 /*
  * Define synthetic interrupt controller model specific registers for
  * nested hypervisor.
  */
-#define HV_REGISTER_NESTED_SCONTROL            0x40001080
-#define HV_REGISTER_NESTED_SVERSION            0x40001081
-#define HV_REGISTER_NESTED_SIEFP               0x40001082
-#define HV_REGISTER_NESTED_SIMP                0x40001083
-#define HV_REGISTER_NESTED_EOM                 0x40001084
-#define HV_REGISTER_NESTED_SINT0               0x40001090
+#define HV_X64_MSR_NESTED_SCONTROL             0x40001080
+#define HV_X64_MSR_NESTED_SVERSION             0x40001081
+#define HV_X64_MSR_NESTED_SIEFP                        0x40001082
+#define HV_X64_MSR_NESTED_SIMP                 0x40001083
+#define HV_X64_MSR_NESTED_EOM                  0x40001084
+#define HV_X64_MSR_NESTED_SINT0                        0x40001090
 
 /*
  * Synthetic Timer MSRs. Four timers per vcpu.
  */
-#define HV_REGISTER_STIMER0_CONFIG             0x400000B0
-#define HV_REGISTER_STIMER0_COUNT              0x400000B1
-#define HV_REGISTER_STIMER1_CONFIG             0x400000B2
-#define HV_REGISTER_STIMER1_COUNT              0x400000B3
-#define HV_REGISTER_STIMER2_CONFIG             0x400000B4
-#define HV_REGISTER_STIMER2_COUNT              0x400000B5
-#define HV_REGISTER_STIMER3_CONFIG             0x400000B6
-#define HV_REGISTER_STIMER3_COUNT              0x400000B7
+#define HV_X64_MSR_STIMER0_CONFIG              0x400000B0
+#define HV_X64_MSR_STIMER0_COUNT               0x400000B1
+#define HV_X64_MSR_STIMER1_CONFIG              0x400000B2
+#define HV_X64_MSR_STIMER1_COUNT               0x400000B3
+#define HV_X64_MSR_STIMER2_CONFIG              0x400000B4
+#define HV_X64_MSR_STIMER2_COUNT               0x400000B5
+#define HV_X64_MSR_STIMER3_CONFIG              0x400000B6
+#define HV_X64_MSR_STIMER3_COUNT               0x400000B7
 
 /* Hyper-V guest idle MSR */
 #define HV_X64_MSR_GUEST_IDLE                  0x400000F0
 
 /* Hyper-V guest crash notification MSR's */
-#define HV_REGISTER_CRASH_P0                   0x40000100
-#define HV_REGISTER_CRASH_P1                   0x40000101
-#define HV_REGISTER_CRASH_P2                   0x40000102
-#define HV_REGISTER_CRASH_P3                   0x40000103
-#define HV_REGISTER_CRASH_P4                   0x40000104
-#define HV_REGISTER_CRASH_CTL                  0x40000105
+#define HV_X64_MSR_CRASH_P0                    0x40000100
+#define HV_X64_MSR_CRASH_P1                    0x40000101
+#define HV_X64_MSR_CRASH_P2                    0x40000102
+#define HV_X64_MSR_CRASH_P3                    0x40000103
+#define HV_X64_MSR_CRASH_P4                    0x40000104
+#define HV_X64_MSR_CRASH_CTL                   0x40000105
 
 /* TSC emulation after migration */
 #define HV_X64_MSR_REENLIGHTENMENT_CONTROL     0x40000106
@@ -276,31 +276,38 @@ enum hv_isolation_type {
 /* HV_X64_MSR_TSC_INVARIANT_CONTROL bits */
 #define HV_EXPOSE_INVARIANT_TSC                BIT_ULL(0)
 
-/* Register name aliases for temporary compatibility */
-#define HV_X64_MSR_STIMER0_COUNT       HV_REGISTER_STIMER0_COUNT
-#define HV_X64_MSR_STIMER0_CONFIG      HV_REGISTER_STIMER0_CONFIG
-#define HV_X64_MSR_STIMER1_COUNT       HV_REGISTER_STIMER1_COUNT
-#define HV_X64_MSR_STIMER1_CONFIG      HV_REGISTER_STIMER1_CONFIG
-#define HV_X64_MSR_STIMER2_COUNT       HV_REGISTER_STIMER2_COUNT
-#define HV_X64_MSR_STIMER2_CONFIG      HV_REGISTER_STIMER2_CONFIG
-#define HV_X64_MSR_STIMER3_COUNT       HV_REGISTER_STIMER3_COUNT
-#define HV_X64_MSR_STIMER3_CONFIG      HV_REGISTER_STIMER3_CONFIG
-#define HV_X64_MSR_SCONTROL            HV_REGISTER_SCONTROL
-#define HV_X64_MSR_SVERSION            HV_REGISTER_SVERSION
-#define HV_X64_MSR_SIMP                        HV_REGISTER_SIMP
-#define HV_X64_MSR_SIEFP               HV_REGISTER_SIEFP
-#define HV_X64_MSR_VP_INDEX            HV_REGISTER_VP_INDEX
-#define HV_X64_MSR_EOM                 HV_REGISTER_EOM
-#define HV_X64_MSR_SINT0               HV_REGISTER_SINT0
-#define HV_X64_MSR_SINT15              HV_REGISTER_SINT15
-#define HV_X64_MSR_CRASH_P0            HV_REGISTER_CRASH_P0
-#define HV_X64_MSR_CRASH_P1            HV_REGISTER_CRASH_P1
-#define HV_X64_MSR_CRASH_P2            HV_REGISTER_CRASH_P2
-#define HV_X64_MSR_CRASH_P3            HV_REGISTER_CRASH_P3
-#define HV_X64_MSR_CRASH_P4            HV_REGISTER_CRASH_P4
-#define HV_X64_MSR_CRASH_CTL           HV_REGISTER_CRASH_CTL
-#define HV_X64_MSR_TIME_REF_COUNT      HV_REGISTER_TIME_REF_COUNT
-#define HV_X64_MSR_REFERENCE_TSC       HV_REGISTER_REFERENCE_TSC
+/*
+ * To support arch-generic code calling hv_set/get_register:
+ * - On x86, HV_MSR_ indicates an MSR accessed via rdmsrl/wrmsrl
+ * - On ARM, HV_MSR_ indicates a VP register accessed via hypercall
+ */
+#define HV_MSR_CRASH_P0                (HV_X64_MSR_CRASH_P0)
+#define HV_MSR_CRASH_P1                (HV_X64_MSR_CRASH_P1)
+#define HV_MSR_CRASH_P2                (HV_X64_MSR_CRASH_P2)
+#define HV_MSR_CRASH_P3                (HV_X64_MSR_CRASH_P3)
+#define HV_MSR_CRASH_P4                (HV_X64_MSR_CRASH_P4)
+#define HV_MSR_CRASH_CTL       (HV_X64_MSR_CRASH_CTL)
+
+#define HV_MSR_VP_INDEX                (HV_X64_MSR_VP_INDEX)
+#define HV_MSR_TIME_REF_COUNT  (HV_X64_MSR_TIME_REF_COUNT)
+#define HV_MSR_REFERENCE_TSC   (HV_X64_MSR_REFERENCE_TSC)
+
+#define HV_MSR_SINT0           (HV_X64_MSR_SINT0)
+#define HV_MSR_SVERSION                (HV_X64_MSR_SVERSION)
+#define HV_MSR_SCONTROL                (HV_X64_MSR_SCONTROL)
+#define HV_MSR_SIEFP           (HV_X64_MSR_SIEFP)
+#define HV_MSR_SIMP            (HV_X64_MSR_SIMP)
+#define HV_MSR_EOM             (HV_X64_MSR_EOM)
+
+#define HV_MSR_NESTED_SCONTROL (HV_X64_MSR_NESTED_SCONTROL)
+#define HV_MSR_NESTED_SVERSION (HV_X64_MSR_NESTED_SVERSION)
+#define HV_MSR_NESTED_SIEFP    (HV_X64_MSR_NESTED_SIEFP)
+#define HV_MSR_NESTED_SIMP     (HV_X64_MSR_NESTED_SIMP)
+#define HV_MSR_NESTED_EOM      (HV_X64_MSR_NESTED_EOM)
+#define HV_MSR_NESTED_SINT0    (HV_X64_MSR_NESTED_SINT0)
+
+#define HV_MSR_STIMER0_CONFIG  (HV_X64_MSR_STIMER0_CONFIG)
+#define HV_MSR_STIMER0_COUNT   (HV_X64_MSR_STIMER0_COUNT)
 
 /*
  * Registers are only accessible via HVCALL_GET_VP_REGISTERS hvcall and