Skip to content

Commit 5c9c084

Browse files
committed
KVM: SVM: Move svm_msrpm_offset() to nested.c
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>
1 parent 2f89888 commit 5c9c084

3 files changed

Lines changed: 23 additions & 24 deletions

File tree

arch/x86/kvm/svm/nested.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,29 @@ void recalc_intercepts(struct vcpu_svm *svm)
197197
static int nested_svm_msrpm_merge_offsets[6] __ro_after_init;
198198
static int nested_svm_nr_msrpm_merge_offsets __ro_after_init;
199199

200+
static const u32 msrpm_ranges[] = {0, 0xc0000000, 0xc0010000};
201+
202+
static u32 svm_msrpm_offset(u32 msr)
203+
{
204+
u32 offset;
205+
int i;
206+
207+
for (i = 0; i < ARRAY_SIZE(msrpm_ranges); i++) {
208+
if (msr < msrpm_ranges[i] ||
209+
msr >= msrpm_ranges[i] + SVM_MSRS_PER_RANGE)
210+
continue;
211+
212+
offset = (msr - msrpm_ranges[i]) / SVM_MSRS_PER_BYTE;
213+
offset += (i * SVM_MSRPM_BYTES_PER_RANGE); /* add range offset */
214+
215+
/* Now we have the u8 offset - but need the u32 offset */
216+
return offset / 4;
217+
}
218+
219+
/* MSR not in any range */
220+
return MSR_INVALID;
221+
}
222+
200223
int __init nested_svm_init_msrpm_merge_offsets(void)
201224
{
202225
static const u32 merge_msrs[] __initconst = {

arch/x86/kvm/svm/svm.c

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -196,29 +196,6 @@ static DEFINE_MUTEX(vmcb_dump_mutex);
196196
*/
197197
static int tsc_aux_uret_slot __read_mostly = -1;
198198

199-
static const u32 msrpm_ranges[] = {0, 0xc0000000, 0xc0010000};
200-
201-
u32 svm_msrpm_offset(u32 msr)
202-
{
203-
u32 offset;
204-
int i;
205-
206-
for (i = 0; i < ARRAY_SIZE(msrpm_ranges); i++) {
207-
if (msr < msrpm_ranges[i] ||
208-
msr >= msrpm_ranges[i] + SVM_MSRS_PER_RANGE)
209-
continue;
210-
211-
offset = (msr - msrpm_ranges[i]) / SVM_MSRS_PER_BYTE;
212-
offset += (i * SVM_MSRPM_BYTES_PER_RANGE); /* add range offset */
213-
214-
/* Now we have the u8 offset - but need the u32 offset */
215-
return offset / 4;
216-
}
217-
218-
/* MSR not in any range */
219-
return MSR_INVALID;
220-
}
221-
222199
static int get_npt_level(void)
223200
{
224201
#ifdef CONFIG_X86_64

arch/x86/kvm/svm/svm.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,6 @@ BUILD_SVM_MSR_BITMAP_HELPERS(void, set, __set)
666666
/* svm.c */
667667
extern bool dump_invalid_vmcb;
668668

669-
u32 svm_msrpm_offset(u32 msr);
670669
u32 *svm_vcpu_alloc_msrpm(void);
671670
void svm_vcpu_free_msrpm(u32 *msrpm);
672671
void svm_copy_lbrs(struct vmcb *to_vmcb, struct vmcb *from_vmcb);

0 commit comments

Comments
 (0)