mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 13:33:30 -04:00
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>
This commit is contained in:
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user