mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 03:27:03 +02:00
KVM: selftests: Add all (known) EFLAGS bit definitions
Add #defines for all known EFLAGS bit, e.g. so that tests can use things like EFLAGS.TF to validate single-stepping behavior. Opportunistically use X86_EFLAGS_FIXED instead of an open-coded equivalent when stuffing initial vCPU state. No functional change intended. Link: https://patch.msgid.link/20260515222638.1949982-9-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
a1e7aeb1be
commit
35c08038cb
|
|
@ -38,7 +38,24 @@ extern u64 guest_tsc_khz;
|
|||
|
||||
const char *ex_str(int vector);
|
||||
|
||||
#define X86_EFLAGS_FIXED (1u << 1)
|
||||
#define X86_EFLAGS_CF BIT(0) /* Carry Flag */
|
||||
#define X86_EFLAGS_FIXED BIT(1) /* Bit 1 - always on */
|
||||
#define X86_EFLAGS_PF BIT(2) /* Parity Flag */
|
||||
#define X86_EFLAGS_AF BIT(4) /* Auxiliary carry Flag */
|
||||
#define X86_EFLAGS_ZF BIT(6) /* Zero Flag */
|
||||
#define X86_EFLAGS_SF BIT(7) /* Sign Flag */
|
||||
#define X86_EFLAGS_TF BIT(8) /* Trap Flag */
|
||||
#define X86_EFLAGS_IF BIT(9) /* Interrupt Flag */
|
||||
#define X86_EFLAGS_DF BIT(10) /* Direction Flag */
|
||||
#define X86_EFLAGS_OF BIT(11) /* Overflow Flag */
|
||||
#define X86_EFLAGS_IOPL BIT(12) /* I/O Privilege Level (2 bits) */
|
||||
#define X86_EFLAGS_NT BIT(14) /* Nested Task */
|
||||
#define X86_EFLAGS_RF BIT(16) /* Resume Flag */
|
||||
#define X86_EFLAGS_VM BIT(17) /* Virtual Mode */
|
||||
#define X86_EFLAGS_AC BIT(18) /* Alignment Check/Access Control */
|
||||
#define X86_EFLAGS_VIF BIT(19) /* Virtual Interrupt Flag */
|
||||
#define X86_EFLAGS_VIP BIT(20) /* Virtual Interrupt Pending */
|
||||
#define X86_EFLAGS_ID BIT(21) /* CPUID detection */
|
||||
|
||||
#define X86_CR4_VME (1ul << 0)
|
||||
#define X86_CR4_PVI (1ul << 1)
|
||||
|
|
|
|||
|
|
@ -848,7 +848,7 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, u32 vcpu_id)
|
|||
|
||||
/* Setup guest general purpose registers */
|
||||
vcpu_regs_get(vcpu, ®s);
|
||||
regs.rflags = regs.rflags | 0x2;
|
||||
regs.rflags = regs.rflags | X86_EFLAGS_FIXED;
|
||||
regs.rsp = stack_gva;
|
||||
vcpu_regs_set(vcpu, ®s);
|
||||
|
||||
|
|
|
|||
|
|
@ -360,7 +360,7 @@ static inline void init_vmcs_guest_state(void *rip, void *rsp)
|
|||
vmwrite(GUEST_DR7, 0x400);
|
||||
vmwrite(GUEST_RSP, (u64)rsp);
|
||||
vmwrite(GUEST_RIP, (u64)rip);
|
||||
vmwrite(GUEST_RFLAGS, 2);
|
||||
vmwrite(GUEST_RFLAGS, X86_EFLAGS_FIXED);
|
||||
vmwrite(GUEST_PENDING_DBG_EXCEPTIONS, 0);
|
||||
vmwrite(GUEST_SYSENTER_ESP, vmreadz(HOST_IA32_SYSENTER_ESP));
|
||||
vmwrite(GUEST_SYSENTER_EIP, vmreadz(HOST_IA32_SYSENTER_EIP));
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user