]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: SVM: Move svm_msrpm_offset() to nested.c
authorSean Christopherson <seanjc@google.com>
Tue, 10 Jun 2025 22:57:30 +0000 (15:57 -0700)
committerSean Christopherson <seanjc@google.com>
Fri, 20 Jun 2025 20:07:33 +0000 (13:07 -0700)
Move svm_msrpm_offset() from svm.c to nested.c now that all usage of the
u32-index offsets is nested virtualization specific.

No functional change intended.

Link: https://lore.kernel.org/r/20250610225737.156318-26-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/svm/nested.c
arch/x86/kvm/svm/svm.c
arch/x86/kvm/svm/svm.h

index cf148f7db88765f5bdfa705de30bd94d29699393..13de4f63a9c2e6bb805f753f565adb30e6be0e20 100644 (file)
@@ -197,6 +197,29 @@ void recalc_intercepts(struct vcpu_svm *svm)
 static int nested_svm_msrpm_merge_offsets[6] __ro_after_init;
 static int nested_svm_nr_msrpm_merge_offsets __ro_after_init;
 
+static const u32 msrpm_ranges[] = {0, 0xc0000000, 0xc0010000};
+
+static u32 svm_msrpm_offset(u32 msr)
+{
+       u32 offset;
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(msrpm_ranges); i++) {
+               if (msr < msrpm_ranges[i] ||
+                   msr >= msrpm_ranges[i] + SVM_MSRS_PER_RANGE)
+                       continue;
+
+               offset  = (msr - msrpm_ranges[i]) / SVM_MSRS_PER_BYTE;
+               offset += (i * SVM_MSRPM_BYTES_PER_RANGE);  /* add range offset */
+
+               /* Now we have the u8 offset - but need the u32 offset */
+               return offset / 4;
+       }
+
+       /* MSR not in any range */
+       return MSR_INVALID;
+}
+
 int __init nested_svm_init_msrpm_merge_offsets(void)
 {
        static const u32 merge_msrs[] __initconst = {
index 6a87e684110b6d1ef7e5b540531eb0ea743547b4..2f315fea5cc28e48ca2c52bf41a7507313cb84d3 100644 (file)
@@ -196,29 +196,6 @@ static DEFINE_MUTEX(vmcb_dump_mutex);
  */
 static int tsc_aux_uret_slot __read_mostly = -1;
 
-static const u32 msrpm_ranges[] = {0, 0xc0000000, 0xc0010000};
-
-u32 svm_msrpm_offset(u32 msr)
-{
-       u32 offset;
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(msrpm_ranges); i++) {
-               if (msr < msrpm_ranges[i] ||
-                   msr >= msrpm_ranges[i] + SVM_MSRS_PER_RANGE)
-                       continue;
-
-               offset  = (msr - msrpm_ranges[i]) / SVM_MSRS_PER_BYTE;
-               offset += (i * SVM_MSRPM_BYTES_PER_RANGE);  /* add range offset */
-
-               /* Now we have the u8 offset - but need the u32 offset */
-               return offset / 4;
-       }
-
-       /* MSR not in any range */
-       return MSR_INVALID;
-}
-
 static int get_npt_level(void)
 {
 #ifdef CONFIG_X86_64
index 91c4eb2232e0de12bcdc970d9422dd8fe7b0fcbc..a0c14256cc569330865ae1414dd39aee978f2e6e 100644 (file)
@@ -666,7 +666,6 @@ BUILD_SVM_MSR_BITMAP_HELPERS(void, set, __set)
 /* svm.c */
 extern bool dump_invalid_vmcb;
 
-u32 svm_msrpm_offset(u32 msr);
 u32 *svm_vcpu_alloc_msrpm(void);
 void svm_vcpu_free_msrpm(u32 *msrpm);
 void svm_copy_lbrs(struct vmcb *to_vmcb, struct vmcb *from_vmcb);