History

x86/kvm: Rename VMX's segment access rights defines

VMX encodes access rights differently from LAR, and the latter is most likely what x86 people think of when they think of "access rights". Rename them to avoid confusion.

Andy Lutomirski committed 11 years ago

Commit 4d283ec1 parent ae6c0aa2 files · +30 −30Browse files

Unified · Split

2 files
  1. arch/x86/include/asm/vmx.h +23 −23
  2. arch/x86/kvm/vmx.c +7 −7
arch/x86/include/asm/vmx.h+23−23
@@ -368,29 +368,29 @@ enum vmcs_field { · 367 unmodified lines
368368 #define TYPE_PHYSICAL_APIC_EVENT (10 << 12)
369369 #define TYPE_PHYSICAL_APIC_INST (15 << 12)
370370
371−/* segment AR */
372−#define SEGMENT_AR_L_MASK (1 << 13)
373−
374−#define AR_TYPE_ACCESSES_MASK 1
375−#define AR_TYPE_READABLE_MASK (1 << 1)
376−#define AR_TYPE_WRITEABLE_MASK (1 << 2)
377−#define AR_TYPE_CODE_MASK (1 << 3)
378−#define AR_TYPE_MASK 0x0f
379−#define AR_TYPE_BUSY_64_TSS 11
380−#define AR_TYPE_BUSY_32_TSS 11
381−#define AR_TYPE_BUSY_16_TSS 3
382−#define AR_TYPE_LDT 2
383−
384−#define AR_UNUSABLE_MASK (1 << 16)
385−#define AR_S_MASK (1 << 4)
386−#define AR_P_MASK (1 << 7)
387−#define AR_L_MASK (1 << 13)
388−#define AR_DB_MASK (1 << 14)
389−#define AR_G_MASK (1 << 15)
390−#define AR_DPL_SHIFT 5
391−#define AR_DPL(ar) (((ar) >> AR_DPL_SHIFT) & 3)
392−
393−#define AR_RESERVD_MASK 0xfffe0f00
371+/* segment AR in VMCS -- these are different from what LAR reports */
372+#define VMX_SEGMENT_AR_L_MASK (1 << 13)
373+
374+#define VMX_AR_TYPE_ACCESSES_MASK 1
375+#define VMX_AR_TYPE_READABLE_MASK (1 << 1)
376+#define VMX_AR_TYPE_WRITEABLE_MASK (1 << 2)
377+#define VMX_AR_TYPE_CODE_MASK (1 << 3)
378+#define VMX_AR_TYPE_MASK 0x0f
379+#define VMX_AR_TYPE_BUSY_64_TSS 11
380+#define VMX_AR_TYPE_BUSY_32_TSS 11
381+#define VMX_AR_TYPE_BUSY_16_TSS 3
382+#define VMX_AR_TYPE_LDT 2
383+
384+#define VMX_AR_UNUSABLE_MASK (1 << 16)
385+#define VMX_AR_S_MASK (1 << 4)
386+#define VMX_AR_P_MASK (1 << 7)
387+#define VMX_AR_L_MASK (1 << 13)
388+#define VMX_AR_DB_MASK (1 << 14)
389+#define VMX_AR_G_MASK (1 << 15)
390+#define VMX_AR_DPL_SHIFT 5
391+#define VMX_AR_DPL(ar) (((ar) >> VMX_AR_DPL_SHIFT) & 3)
392+
393+#define VMX_AR_RESERVD_MASK 0xfffe0f00
394394
395395 #define TSS_PRIVATE_MEMSLOT (KVM_USER_MEM_SLOTS + 0)
396396 #define APIC_ACCESS_PAGE_PRIVATE_MEMSLOT (KVM_USER_MEM_SLOTS + 1)
arch/x86/kvm/vmx.c+7−7
@@ -3423,12 +3423,12 @@ static void enter_lmode(struct kvm_vcpu *vcpu) · 3422 unmodified lines
34233423 vmx_segment_cache_clear(to_vmx(vcpu));
34243424
34253425 guest_tr_ar = vmcs_read32(GUEST_TR_AR_BYTES);
3426− if ((guest_tr_ar & AR_TYPE_MASK) != AR_TYPE_BUSY_64_TSS) {
3426+ if ((guest_tr_ar & VMX_AR_TYPE_MASK) != VMX_AR_TYPE_BUSY_64_TSS) {
34273427 pr_debug_ratelimited("%s: tss fixup for long mode. \n",
34283428 __func__);
34293429 vmcs_write32(GUEST_TR_AR_BYTES,
3430− (guest_tr_ar & ~AR_TYPE_MASK)
3431− | AR_TYPE_BUSY_64_TSS);
3430+ (guest_tr_ar & ~VMX_AR_TYPE_MASK)
3431+ | VMX_AR_TYPE_BUSY_64_TSS);
34323432 }
34333433 vmx_set_efer(vcpu, vcpu->arch.efer | EFER_LMA);
34343434 }
@@ -3719,7 +3719,7 @@ static int vmx_get_cpl(struct kvm_vcpu *vcpu) · 284 unmodified lines
37193719 return 0;
37203720 else {
37213721 int ar = vmx_read_guest_seg_ar(vmx, VCPU_SREG_SS);
3722− return AR_DPL(ar);
3722+ return VMX_AR_DPL(ar);
37233723 }
37243724 }
37253725
@@ -3847,11 +3847,11 @@ static bool code_segment_valid(struct kvm_vcpu *vcpu) · 121 unmodified lines
38473847
38483848 if (cs.unusable)
38493849 return false;
3850− if (~cs.type & (AR_TYPE_CODE_MASK|AR_TYPE_ACCESSES_MASK))
3850+ if (~cs.type & (VMX_AR_TYPE_CODE_MASK|VMX_AR_TYPE_ACCESSES_MASK))
38513851 return false;
38523852 if (!cs.s)
38533853 return false;
3854− if (cs.type & AR_TYPE_WRITEABLE_MASK) {
3854+ if (cs.type & VMX_AR_TYPE_WRITEABLE_MASK) {
38553855 if (cs.dpl > cs_rpl)
38563856 return false;
38573857 } else {
@@ -3901,7 +3901,7 @@ static bool data_segment_valid(struct kvm_vcpu *vcpu, int seg) · 43 unmodified lines
39013901 return false;
39023902 if (!var.present)
39033903 return false;
3904− if (~var.type & (AR_TYPE_CODE_MASK|AR_TYPE_WRITEABLE_MASK)) {
3904+ if (~var.type & (VMX_AR_TYPE_CODE_MASK|VMX_AR_TYPE_WRITEABLE_MASK)) {
39053905 if (var.dpl < rpl) /* DPL < RPL */
39063906 return false;
39073907 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t