Skip to content

Commit

Permalink
KVM: VMX: Use host_gdt variable wherever we need the host gdt
Browse files Browse the repository at this point in the history
Now that we have the host gdt conveniently stored in a variable, make use
of it instead of querying the cpu.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
  • Loading branch information
Avi Kivity committed Oct 24, 2010
1 parent e071edd commit d359192
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions arch/x86/kvm/vmx.c
Original file line number Diff line number Diff line change
Expand Up @@ -706,11 +706,10 @@ static void reload_tss(void)
/*
* VT restores TR but not its size. Useless.
*/
struct desc_ptr gdt;
struct desc_ptr *gdt = &__get_cpu_var(host_gdt);
struct desc_struct *descs;

native_store_gdt(&gdt);
descs = (void *)gdt.address;
descs = (void *)gdt->address;
descs[GDT_ENTRY_TSS].type = 9; /* available TSS */
load_TR_desc();
}
Expand Down Expand Up @@ -753,16 +752,15 @@ static bool update_transition_efer(struct vcpu_vmx *vmx, int efer_offset)

static unsigned long segment_base(u16 selector)
{
struct desc_ptr gdt;
struct desc_ptr *gdt = &__get_cpu_var(host_gdt);
struct desc_struct *d;
unsigned long table_base;
unsigned long v;

if (!(selector & ~3))
return 0;

native_store_gdt(&gdt);
table_base = gdt.address;
table_base = gdt->address;

if (selector & 4) { /* from ldt */
u16 ldt_selector = kvm_read_ldt();
Expand Down Expand Up @@ -897,7 +895,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
}

if (vcpu->cpu != cpu) {
struct desc_ptr dt;
struct desc_ptr *gdt = &__get_cpu_var(host_gdt);
unsigned long sysenter_esp;

kvm_migrate_timers(vcpu);
Expand All @@ -913,8 +911,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
* processors.
*/
vmcs_writel(HOST_TR_BASE, kvm_read_tr_base()); /* 22.2.4 */
native_store_gdt(&dt);
vmcs_writel(HOST_GDTR_BASE, dt.address); /* 22.2.4 */
vmcs_writel(HOST_GDTR_BASE, gdt->address); /* 22.2.4 */

rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp);
vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */
Expand Down

0 comments on commit d359192

Please sign in to comment.