Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b792c344 authored by Akinobu Mita's avatar Akinobu Mita Committed by Avi Kivity
Browse files

KVM: x86: use kvm_get_gdt() and kvm_read_ldt()



Use kvm_get_gdt() and kvm_read_ldt() to reduce inline assembly code.

Cc: Avi Kivity <avi@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
parent 46a359e7
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -290,7 +290,7 @@ static void svm_hardware_enable(void *garbage)

	struct svm_cpu_data *svm_data;
	uint64_t efer;
	struct desc_ptr gdt_descr;
	struct descriptor_table gdt_descr;
	struct desc_struct *gdt;
	int me = raw_smp_processor_id();

@@ -310,8 +310,8 @@ static void svm_hardware_enable(void *garbage)
	svm_data->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1;
	svm_data->next_asid = svm_data->max_asid + 1;

	asm volatile ("sgdt %0" : "=m"(gdt_descr));
	gdt = (struct desc_struct *)gdt_descr.address;
	kvm_get_gdt(&gdt_descr);
	gdt = (struct desc_struct *)gdt_descr.base;
	svm_data->tss_desc = (struct kvm_ldttss_desc *)(gdt + GDT_ENTRY_TSS);

	rdmsrl(MSR_EFER, efer);
+2 −3
Original line number Diff line number Diff line
@@ -132,13 +132,12 @@ unsigned long segment_base(u16 selector)
	if (selector == 0)
		return 0;

	asm("sgdt %0" : "=m"(gdt));
	kvm_get_gdt(&gdt);
	table_base = gdt.base;

	if (selector & 4) {           /* from ldt */
		u16 ldt_selector;
		u16 ldt_selector = kvm_read_ldt();

		asm("sldt %0" : "=g"(ldt_selector));
		table_base = segment_base(ldt_selector);
	}
	d = (struct desc_struct *)(table_base + (selector & ~7));