Skip to content
Open
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
703ed3f
pKVM: x86: Add two helpers to manage pkvm_vcpu instances
cxdong Oct 12, 2025
d01a9eb
pKVM: x86: Add IBPB symbols for loading vcpu
cxdong Oct 12, 2025
13b1983
pKVM: VMX: Implement vcpu_load operation
cxdong Nov 10, 2025
7f2352c
pKVM: x86: Add vcpu_load PV interface
cxdong Oct 12, 2025
4706f40
pKVM: VMX: Implement vcpu_put operation
cxdong Nov 10, 2025
db6b274
pKVM: x86: Add vcpu_put PV interface
cxdong Oct 12, 2025
6e1a80c
KVM: pVMX: Implement vcpu_load operation
cxdong Nov 9, 2025
046c74d
KVM: pVMX: Implement vcpu_put operation
cxdong Nov 9, 2025
64a81ea
pKVM: x86: Extend pkvm_fixup_exception to support EX_TYPE_DEFAULT
cxdong Dec 23, 2025
cd33fd9
KVM: VMX: Add helper vmcs_store()
cxdong Oct 27, 2025
b92867e
pKVM: VMX: Ensure the host VMCS is loaded when handling NMI
cxdong Oct 27, 2025
be49475
pKVM: x86: Redefine KVM print macros for the pKVM hypervisor
cxdong Oct 12, 2025
b2a8252
pKVM: x86: Add helper to handle the PV interfaces for a loaded vCPU
cxdong Dec 2, 2025
84fdc72
pKVM: x86: Audit PV interfaces for protected VMs
cxdong Dec 23, 2025
6db8d4b
pKVM: VMX: Implement update_exception_bitmap operation
cxdong Nov 10, 2025
183cf9b
pKVM: x86: Add update_exception_bitmap PV interface
cxdong Dec 23, 2025
99c19ee
KVM: pVMX: Implement update_exception_bitmap operation
cxdong Nov 9, 2025
208a104
pKVM: VMX: Implement set_efer operation
cxdong Nov 10, 2025
17b2cf0
pKVM: x86: Add set_efer PV interface
cxdong Dec 22, 2025
27a4d4a
KVM: pVMX: Implement set_efer operation
cxdong Nov 9, 2025
bc5b30e
pKVM: x86: Import fpu_update_guest_xfd() from kernel x86 fpu
cxdong Dec 18, 2025
729bd52
pKVM: x86: Setup feature MSRs stuff
cxdong Oct 24, 2025
c4886ce
pKVM: x86: Import kvm_set_msr_common() from KVM
cxdong Oct 12, 2025
1193c1c
pKVM: x86: Import kvm_get_msr_common() from KVM
cxdong Oct 12, 2025
12dafd3
pKVM: VMX: Implement set_msr operation
cxdong Nov 10, 2025
63bac6a
pKVM: x86: Add set_msr PV interface
cxdong Dec 24, 2025
2360b99
KVM: pVMX: Implement set_msr operation
cxdong Nov 9, 2025
8cab364
pKVM: VMX: Implement get_msr operation
cxdong Nov 10, 2025
d7876a6
pKVM: x86: Add get_msr PV interface
cxdong Dec 24, 2025
e940008
KVM: pVMX: Implement get_msr operation
cxdong Oct 13, 2025
1047e64
KVM: pVMX: Implement get_feature_msr operation
cxdong Oct 27, 2025
b4d2ee1
pKVM: x86: Enforce initial values of most MSRs
Dec 5, 2025
b9cfe42
pKVM: VMX: Implement cache_reg operation
cxdong Nov 10, 2025
da2ca23
pKVM: x86: Add cache_reg PV interface
cxdong Dec 22, 2025
85305e3
KVM: pVMX: Implement cache_reg operation
cxdong Nov 9, 2025
c346f0f
pKVM: VMX: Implement set_cr4/is_valid_cr4 operations
cxdong Nov 10, 2025
4bbdbac
pKVM: x86: Add set_cr4 PV interface
cxdong Dec 24, 2025
598dd61
KVM: pVMX: Implement CR4 related operations
cxdong Oct 13, 2025
befc262
pKVM: VMX: Implement set_cr0/is_valid_cr0 operations
cxdong Dec 22, 2025
acc97f7
pKVM: x86: Add set_cr0 PV interface
cxdong Dec 24, 2025
c752c9b
KVM: pVMX: Implement CR0 related operations
cxdong Dec 22, 2025
89c0101
pKVM: VMX: Implement rflags related operations
cxdong Nov 10, 2025
1ddddcd
pKVM: x86: Add set/get_rflags PV interfaces
cxdong Dec 24, 2025
246ae20
KVM: pVMX: Implement rflags related operations
cxdong Nov 9, 2025
29885ba
pKVM: VMX: Implement debug registers related operations
cxdong Nov 10, 2025
0b5cafe
pKVM: x86: Add set_dr7 PV interfaces
cxdong Dec 22, 2025
028b40a
KVM: pVMX: Implement set_dr7 operation
cxdong Oct 14, 2025
3a76430
pKVM: VMX: Import the vmenter.S
cxdong Nov 10, 2025
cf988f7
pKVM: VMX: Implement vcpu_reset operation
cxdong Nov 10, 2025
b26ac50
pKVM: x86: Setup xstate cache
cxdong Oct 23, 2025
7301706
pKVM: x86: Import fpstate_clear_xstate_component
cxdong Oct 23, 2025
4c86170
pKVM: x86: Import fpu_swap_kvm_fpstate
cxdong Oct 23, 2025
ffa7844
pKVM: x86: Import kvm_vcpu_reset
cxdong Oct 18, 2025
35819ae
pKVM: x86: Reset vCPU when creating it
Dec 2, 2025
a03ae29
pKVM: x86: Add vcpu_reset PV interface
cxdong Dec 24, 2025
7ce84a5
KVM: pVMX: Implement vcpu_reset operation
cxdong Oct 14, 2025
ce41bc7
pKVM: VMX: Implement segment related ops
cxdong Nov 10, 2025
ca98e84
pKVM: x86: Define pkvm_hypercall_in macro
cxdong Dec 5, 2025
a6455aa
pKVM: x86: Get hypercall inputs from the host
cxdong Dec 3, 2025
f7cb660
pKVM: x86: Add segment PV interfaces
cxdong Dec 24, 2025
6c06aeb
KVM: pVMX: Implement segment related operations
cxdong Oct 14, 2025
b8228a0
pKVM: VMX: Implement idt/gdt related operations
cxdong Nov 10, 2025
d681768
pKVM: x86: Add idt/gdt PV interfaces
cxdong Dec 24, 2025
1b740e0
KVM: pVMX: Implement idt/gdt related operations
cxdong Oct 14, 2025
66bf421
pKVM: VMX: Implement TLB flushing related operations
cxdong Nov 10, 2025
52e2ad5
pKVM: x86: Add TLB flushing PV interfaces
cxdong Dec 24, 2025
d3f45bc
KVM: pVMX: Implement TLB flushing operations
cxdong Nov 9, 2025
20c8f32
pKVM: VMX: Implement interrupt shadow operations
cxdong Nov 10, 2025
a0a467e
pKVM: x86: Add interrupt shadow PV interfaces
cxdong Dec 22, 2025
d751b5d
KVM: pVMX: Implement interrupt shadow operations
cxdong Nov 9, 2025
c6ad710
pKVM: VMX: Implement enable irq/nmi window operations
cxdong Nov 10, 2025
223b811
pKVM: x86: Add enabling irq/nmi window PV interfaces
cxdong Dec 23, 2025
f6a34ce
KVM: pVMX: Implement enabling irq/nmi window operations
cxdong Nov 9, 2025
502b377
pKVM: VMX: Implement irq/nmi mask related operations
cxdong Nov 10, 2025
86067a1
pKVM: x86: Add irq/nmi mask PV interfaces
cxdong Dec 24, 2025
02b4a89
KVM: pVMX: Implement irq/nmi mask related operations
cxdong Oct 14, 2025
0d6aef1
pKVM: VMX: Implement event injection operations
cxdong Nov 10, 2025
60bc35b
pKVM: x86: Add event injection PV interfaces
cxdong Dec 24, 2025
b96feed
KVM: pVMX: Implement event injection operations
cxdong Oct 20, 2025
a4769ed
pKVM: VMX: Implement cancel injection operation
cxdong Nov 10, 2025
797c21a
pKVM: x86 Add cancel injection PV interface
cxdong Dec 24, 2025
7529bdb
KVM: pVMX: Implement cancel injection operation
cxdong Oct 14, 2025
a131bf7
pKVM: VMX: Implement update_cr8_intercept operations
cxdong Nov 10, 2025
a6ed364
pKVM: x86: Add update_cr8_intercept PV interface
cxdong Dec 24, 2025
4c427be
KVM: pVMX: Implement update_cr8_intercept operation
cxdong Nov 9, 2025
f2c5dc3
KVM: pVMX: Implement x2apic_icr_is_split knob
cxdong Oct 27, 2025
9911ef1
pKVM: VMX: Implement set_virtual_apic_mode operation
cxdong Nov 10, 2025
0396bac
pKVM: x86: Add set_virtual_apic_mode PV interface
cxdong Dec 24, 2025
c7b7947
KVM: pVMX: Implement set_virtual_apic_mode operation
cxdong Nov 9, 2025
96cce10
pKVM: VMX: Implement refresh_apicv_exec_ctrl operation
cxdong Nov 10, 2025
f92eb9c
pKVM: x86: Add refresh_apicv_exec_ctrl PV interface
cxdong Dec 24, 2025
bc05d90
KVM: pVMX: Implement refresh_apicv_exec_ctrl operation
cxdong Nov 9, 2025
cd74383
pKVM: VMX: Implement load_eoi_exitmap operation
cxdong Nov 10, 2025
cf343b3
pKVM: x86: Add load_eoi_exitmap PV interface
cxdong Dec 24, 2025
d2b70bf
KVM: pVMX: Implement load_eoi_exitmap operation
cxdong Nov 9, 2025
1a41ed0
KVM: pVMX: Implement apicv_pre_state_restore operation
cxdong Oct 27, 2025
a2b007d
KVM: pVMX: Implement required_apicv_inhibits knob
cxdong Nov 9, 2025
4683aae
pKVM: VMX: Implement hwapic_isr_update operation
cxdong Nov 10, 2025
5c54cd7
pKVM: x86: Add hwapic_isr_update PV interface
cxdong Dec 24, 2025
5999c8a
KVM: pVMX: Implement hwapic_isr_update operation
cxdong Nov 9, 2025
fcdbe73
pKVM: VMX: Implement sync_pir_to_irr operation
cxdong Nov 10, 2025
9fd6b32
pKVM: x86: Add sync_pir_to_irr PV interface
cxdong Dec 24, 2025
6e4e16e
KVM: pVMX: Implement sync_pir_to_irr operation
cxdong Nov 9, 2025
0b05cc1
KVM: pVMX: Implement interrupt delivery/pending operations
cxdong Oct 27, 2025
e30988e
KVM: pVMX: Implement posted interrupt related operations
cxdong Oct 28, 2025
ddbfde0
KVM: pVMX: Implement apic_init_signal_blocked operation
cxdong Nov 9, 2025
c53210f
KVM: pVMX: Implement vcpu_deliver_sipi_vector operation
cxdong Nov 9, 2025
7ae39aa
pKVM: VMX: Implement vcpu_after_set_cpuid operation
cxdong Nov 10, 2025
7a4d805
pKVM: x86: Initialize KVM cpuid_xstate_sizes
cxdong Oct 14, 2025
afc2b00
pKVM: x86: Import fpu_enable_guest_xfd_features
cxdong Oct 23, 2025
7a3f816
pKVM: x86: Import kvm_set_cpuid
cxdong Oct 14, 2025
23d7580
pKVM: x86: Remove KVM PV feature bits for pVM
cxdong Oct 21, 2025
8bbc1fa
pKVM: x86: Add vcpu_after_set_cpuid PV interface
cxdong Dec 24, 2025
5533b90
KVM: pVMX: Implement vcpu_after_set_cpuid operation
cxdong Oct 28, 2025
3c0b6ad
pKVM: x86: Acquire the default cpuid leaves into the per-cpu buffer
ktian1 Dec 5, 2025
08975ea
pKVM: x86: Enforce cpuid for pVM
ktian1 Dec 5, 2025
e5d6664
pKVM: x86: Add vcpu_add_fpstate PV interface
cxdong Dec 24, 2025
bb98b7e
KVM: pVMX: Add new fpstate memory for xfd
cxdong Oct 23, 2025
631bba8
pKVM: VMX: Implement write_tsc_offset/multiplier operations
cxdong Nov 10, 2025
bd8474c
pKVM: x86: Add write_tsc_offset/multiplier PV interfaces
cxdong Dec 24, 2025
59a3309
KVM: pVMX: Implement write_tsc_offset/multiplier operations
cxdong Oct 28, 2025
122f7ca
pKVM: VMX: Implement load_mmu_pgd operation
cxdong Nov 10, 2025
5f62f15
pKVM: x86: Add load_mmu_pgd PV interface
cxdong Dec 29, 2025
cfef1b8
KVM: pVMX: Implement load_mmu_pgd operation
cxdong Oct 28, 2025
aa12f95
KVM: pVMX: Provide stub implementation for nested related operations
cxdong Oct 28, 2025
1b98c61
pKVM: VMX: Implement setup_mce operation
cxdong Nov 10, 2025
d55fab9
pKVM: x86: Add setup_mce PV interface
cxdong Dec 24, 2025
461bf5b
KVM: pVMX: Implement setup_mce operation
cxdong Oct 28, 2025
e1ac2ac
KVM: pVMX: Provide stub implementation for SMM mode operations
cxdong Oct 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions arch/x86/include/asm/kvm_pkvm.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ union pkvm_hc_data {
struct {
struct pkvm_memcache memcache;
} vcpu_free;
struct {
u64 data;
} get_msr;
struct {
u64 data[PKVM_HC_DATA_MAX_NUM];
} raw;
Expand Down Expand Up @@ -222,8 +225,12 @@ extern u64 pkvm_sym(sme_me_mask);
extern struct cpumask pkvm_sym(__cpu_possible_mask);
extern unsigned int pkvm_sym(nr_cpu_ids);
DECLARE_STATIC_KEY_FALSE(pkvm_sym(switch_vcpu_ibpb));
extern u64 pkvm_sym(x86_pred_cmd);
extern struct fpu_state_config pkvm_sym(fpu_kernel_cfg);
extern struct fpu_state_config pkvm_sym(fpu_user_cfg);
#ifdef CONFIG_X86_64
DECLARE_STATIC_KEY_FALSE(pkvm_sym(__fpu_state_size_dynamic));
#endif

u64 pkvm_total_reserve_pages(void);
PKVM_DECLARE(void *, pkvm_early_alloc_page, (void));
Expand Down
6 changes: 6 additions & 0 deletions arch/x86/include/asm/pkvm_hypercalls.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ PKVM_HC(vm_init)
PKVM_HC_OUT(vm_destroy)
PKVM_HC(vcpu_create)
PKVM_HC_OUT(vcpu_free)
PKVM_HC(vcpu_load)
PKVM_HC(vcpu_put)
PKVM_HC(update_exception_bitmap)
PKVM_HC(set_efer)
PKVM_HC(set_msr)
PKVM_HC_OUT(get_msr)

#undef PKVM_HC
#undef PKVM_HC_OUT
1 change: 1 addition & 0 deletions arch/x86/include/asm/pkvm_image_vars.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ PKVM_ALIAS(__trace_bprintk);
PKVM_ALIAS(__dynamic_pr_debug);
PKVM_ALIAS(mem_dump_obj);
PKVM_ALIAS(vmalloc_base);
PKVM_ALIAS(get_cpu_entry_area);
#endif

#endif /* _ASM_x86_PKVM_IMAGE_VARS_H */
14 changes: 13 additions & 1 deletion arch/x86/kernel/fpu/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#define CREATE_TRACE_POINTS
#include <asm/trace/fpu.h>

#if defined(CONFIG_X86_64) && !defined(__PKVM_HYP__)
#ifdef CONFIG_X86_64
DEFINE_STATIC_KEY_FALSE(__fpu_state_size_dynamic);
DEFINE_PER_CPU(u64, xfd_state);
#endif
Expand Down Expand Up @@ -217,8 +217,10 @@ void fpu_reset_from_exception_fixup(void)
{
restore_fpregs_from_fpstate(&init_fpstate, XFEATURE_MASK_FPSTATE);
}
#endif /* !__PKVM_HYP__ */

#if IS_ENABLED(CONFIG_KVM)
#ifndef __PKVM_HYP__
static void __fpstate_reset(struct fpstate *fpstate);

static void fpu_lock_guest_permissions(void)
Expand Down Expand Up @@ -315,18 +317,24 @@ int fpu_enable_guest_xfd_features(struct fpu_guest *guest_fpu, u64 xfeatures)
return __xfd_enable_feature(xfeatures, guest_fpu);
}
EXPORT_SYMBOL_GPL(fpu_enable_guest_xfd_features);
#endif /* !__PKVM_HYP__ */

#ifdef CONFIG_X86_64
void fpu_update_guest_xfd(struct fpu_guest *guest_fpu, u64 xfd)
{
#ifndef __PKVM_HYP__
fpregs_lock();
#endif
guest_fpu->fpstate->xfd = xfd;
if (guest_fpu->fpstate->in_use)
xfd_update_state(guest_fpu->fpstate);
#ifndef __PKVM_HYP__
fpregs_unlock();
#endif
}
EXPORT_SYMBOL_GPL(fpu_update_guest_xfd);

#ifndef __PKVM_HYP__
/**
* fpu_sync_guest_vmexit_xfd_state - Synchronize XFD MSR and software state
*
Expand All @@ -350,8 +358,10 @@ void fpu_sync_guest_vmexit_xfd_state(void)
}
}
EXPORT_SYMBOL_GPL(fpu_sync_guest_vmexit_xfd_state);
#endif /* !__PKVM_HYP__ */
#endif /* CONFIG_X86_64 */

#ifndef __PKVM_HYP__
int fpu_swap_kvm_fpstate(struct fpu_guest *guest_fpu, bool enter_guest)
{
struct fpstate *guest_fps = guest_fpu->fpstate;
Expand Down Expand Up @@ -441,8 +451,10 @@ int fpu_copy_uabi_to_guest_fpstate(struct fpu_guest *gfpu, const void *buf,
return copy_uabi_from_kernel_to_xstate(kstate, ustate, vpkru);
}
EXPORT_SYMBOL_GPL(fpu_copy_uabi_to_guest_fpstate);
#endif /* !__PKVM_HYP__ */
#endif /* CONFIG_KVM */

#ifndef __PKVM_HYP__
void kernel_fpu_begin_mask(unsigned int kfpu_mask)
{
if (!irqs_disabled())
Expand Down
4 changes: 4 additions & 0 deletions arch/x86/kvm/cpuid.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ u32 xstate_required_size(u64 xstate_bv, bool compacted)

return ret;
}
#endif /* !__PKVM_HYP__ */

struct kvm_cpuid_entry2 *kvm_find_cpuid_entry2(
struct kvm_cpuid_entry2 *entries, int nent, u32 function, u64 index)
Expand Down Expand Up @@ -134,6 +135,7 @@ struct kvm_cpuid_entry2 *kvm_find_cpuid_entry2(
}
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_find_cpuid_entry2);

#ifndef __PKVM_HYP__
static int kvm_check_cpuid(struct kvm_vcpu *vcpu)
{
struct kvm_cpuid_entry2 *best;
Expand Down Expand Up @@ -479,6 +481,7 @@ int cpuid_query_maxphyaddr(struct kvm_vcpu *vcpu)
not_found:
return 36;
}
#endif /* !__PKVM_HYP__ */

int cpuid_query_maxguestphyaddr(struct kvm_vcpu *vcpu)
{
Expand All @@ -504,6 +507,7 @@ u64 kvm_vcpu_reserved_gpa_bits_raw(struct kvm_vcpu *vcpu)
return rsvd_bits(cpuid_maxphyaddr(vcpu), 63);
}

#ifndef __PKVM_HYP__
static int kvm_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *e2,
int nent)
{
Expand Down
4 changes: 4 additions & 0 deletions arch/x86/kvm/kvm_cache_regs.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ BUILD_KVM_GPR_ACCESSORS(r14, R14)
BUILD_KVM_GPR_ACCESSORS(r15, R15)
#endif

#ifndef __PKVM_HYP__
/*
* Using the register cache from interrupt context is generally not allowed, as
* caching a register and marking it available/dirty can't be done atomically,
Expand All @@ -55,6 +56,9 @@ BUILD_KVM_GPR_ACCESSORS(r15, R15)
*/
#define kvm_assert_register_caching_allowed(vcpu) \
lockdep_assert_once(in_task() || kvm_arch_pmi_in_guest(vcpu))
#else
#define kvm_assert_register_caching_allowed(vcpu)
#endif

/*
* avail dirty
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/kvm/pkvm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ pkvm-hyp-y += $(kernel-lib)/sort.o $(kernel-lib)/bsearch.o \
$(kernel-lib)/ctype.o

kvm := ..
pkvm-hyp-y += $(kvm)/x86.o $(kvm)/cpuid.o
pkvm-hyp-y += $(kvm)/x86.o $(kvm)/cpuid.o $(kvm)/mtrr.o

pkvm-hyp-$(CONFIG_PKVM_INTEL) += vmx/host_vmentry.o vmx/host_vmx.o \
$(kvm)/vmx/vmx.o vmx/idt.o vmx/ept.o \
Expand Down
1 change: 1 addition & 0 deletions arch/x86/kvm/pkvm/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ struct cpumask __cpu_possible_mask __ro_after_init;
unsigned int nr_cpu_ids;
DEFINE_PER_CPU(u64, x86_spec_ctrl_current);
DEFINE_STATIC_KEY_FALSE(switch_vcpu_ibpb);
u64 x86_pred_cmd = PRED_CMD_IBPB;

/*
* Used to switch the FPU state between the host VM and pVMs. The fpu struct is
Expand Down
14 changes: 14 additions & 0 deletions arch/x86/kvm/pkvm/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include <linux/linkage.h>
#include <asm/asm.h>
#include <asm/cache.h>
#include <asm/nospec-branch.h>
#include <asm/segment.h>
#include <asm/trapnr.h>
#include <asm/unwind_hints.h>
Expand Down Expand Up @@ -83,3 +84,16 @@ SYM_CODE_START_NOALIGN(x86_verw_sel)
SYM_CODE_END(x86_verw_sel);

.popsection

/* Clobbers AX, CX, DX */
SYM_FUNC_START(write_ibpb)
ANNOTATE_NOENDBR
movl $MSR_IA32_PRED_CMD, %ecx
movl _ASM_RIP(x86_pred_cmd), %eax
xorl %edx, %edx
wrmsr

/* Make sure IBPB clears return stack preductions too. */
FILL_RETURN_BUFFER %rax, RSB_CLEAR_LOOPS, X86_BUG_IBPB_NO_RET
RET
SYM_FUNC_END(write_ibpb)
2 changes: 2 additions & 0 deletions arch/x86/kvm/pkvm/idt.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ static bool pkvm_fixup_exception(struct pt_regs *regs)
reg = FIELD_GET(EX_DATA_REG_MASK, e->data);

switch (type) {
case EX_TYPE_DEFAULT:
return ex_handler_default(e, regs);
case EX_TYPE_WRMSR:
return ex_handler_msr(e, regs, true, false, reg);
case EX_TYPE_RDMSR:
Expand Down
Loading