mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 17:42:03 +02:00
KVM: x86: Move "struct kvm_x86_msr_filter" definition to msrs.c
Move the definition of "struct kvm_x86_msr_filter" and its associate, "struct msr_bitmap_range", to msrs.c, as the details of the filters are very much implementation details that can and should be buried in msrs.c. While the _existence_ of filters is public knowledge, almost by definition, the contents don't need to be exposed outside of the MSR code as the filter data is provided by userspace, i.e. it pretty much has to be dynamically allocated, and thus never should be fully embedded in a globally visible structure. Note, this creates a discrepancy with the PMU event filter structure; that will be remedied shortly. No functional change intended. Suggested-by: Kai Huang <kai.huang@intel.com> Signed-off-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Kai Huang <kai.huang@intel.com> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com> Message-ID: <20260613000329.732085-19-seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
159a51a038
commit
765ae5dc6f
|
|
@ -315,6 +315,8 @@ enum x86_intercept_stage;
|
|||
struct kvm_kernel_irqfd;
|
||||
struct kvm_kernel_irq_routing_entry;
|
||||
|
||||
struct kvm_x86_msr_filter;
|
||||
|
||||
struct kvm_caps {
|
||||
/* control of guest tsc rate supported? */
|
||||
bool has_tsc_control;
|
||||
|
|
@ -1290,13 +1292,6 @@ struct kvm_hv {
|
|||
};
|
||||
#endif
|
||||
|
||||
struct msr_bitmap_range {
|
||||
u32 flags;
|
||||
u32 nmsrs;
|
||||
u32 base;
|
||||
unsigned long *bitmap;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_KVM_XEN
|
||||
/* Xen emulation context */
|
||||
struct kvm_xen {
|
||||
|
|
@ -1327,12 +1322,6 @@ enum kvm_suppress_eoi_broadcast_mode {
|
|||
KVM_SUPPRESS_EOI_BROADCAST_DISABLED /* Disable Suppress EOI broadcast */
|
||||
};
|
||||
|
||||
struct kvm_x86_msr_filter {
|
||||
u8 count;
|
||||
bool default_allow:1;
|
||||
struct msr_bitmap_range ranges[16];
|
||||
};
|
||||
|
||||
struct kvm_x86_pmu_event_filter {
|
||||
__u32 action;
|
||||
__u32 nevents;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,19 @@ static u64 __read_mostly efer_reserved_bits = ~((u64)EFER_SCE);
|
|||
|
||||
#define MAX_IO_MSRS 256
|
||||
|
||||
struct msr_bitmap_range {
|
||||
u32 flags;
|
||||
u32 nmsrs;
|
||||
u32 base;
|
||||
unsigned long *bitmap;
|
||||
};
|
||||
|
||||
struct kvm_x86_msr_filter {
|
||||
u8 count;
|
||||
bool default_allow:1;
|
||||
struct msr_bitmap_range ranges[16];
|
||||
};
|
||||
|
||||
/*
|
||||
* Restoring the host value for MSRs that are only consumed when running in
|
||||
* usermode, e.g. SYSCALL MSRs and TSC_AUX, can be deferred until the CPU
|
||||
|
|
|
|||
|
|
@ -9921,7 +9921,7 @@ void kvm_arch_destroy_vm(struct kvm *kvm)
|
|||
if (kvm->arch.created_mediated_pmu)
|
||||
perf_release_mediated_pmu();
|
||||
kvm_destroy_vcpus(kvm);
|
||||
kvm_free_msr_filter(srcu_dereference_check(kvm->arch.msr_filter, &kvm->srcu, 1));
|
||||
kvm_free_msr_filter((void * __force)kvm->arch.msr_filter);
|
||||
#ifdef CONFIG_KVM_IOAPIC
|
||||
kvm_pic_destroy(kvm);
|
||||
kvm_ioapic_destroy(kvm);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user