diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-03-17 19:37:17 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-24 17:57:31 -0400 |
commit | e2a81baf6604a2e08e10c7405b0349106f77c8af (patch) | |
tree | 3eaf386316be1f499d92fae213493ec3d6b5b576 /arch/x86/xen/enlighten.c | |
parent | aa380c82b83252754a8c11bfc92359bd87cbf710 (diff) |
xen: support sysenter/sysexit if hypervisor does
64-bit Xen supports sysenter for 32-bit guests, so support its
use. (sysenter is faster than int $0x80 in 32-on-64.)
sysexit is still not supported, so we fake it up using iret.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/xen/enlighten.c')
-rw-r--r-- | arch/x86/xen/enlighten.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 36f36e6b0874..943684566ebe 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -155,7 +155,6 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx, | |||
155 | if (*ax == 1) | 155 | if (*ax == 1) |
156 | maskedx = ~((1 << X86_FEATURE_APIC) | /* disable APIC */ | 156 | maskedx = ~((1 << X86_FEATURE_APIC) | /* disable APIC */ |
157 | (1 << X86_FEATURE_ACPI) | /* disable ACPI */ | 157 | (1 << X86_FEATURE_ACPI) | /* disable ACPI */ |
158 | (1 << X86_FEATURE_SEP) | /* disable SEP */ | ||
159 | (1 << X86_FEATURE_ACC)); /* thermal monitoring */ | 158 | (1 << X86_FEATURE_ACC)); /* thermal monitoring */ |
160 | 159 | ||
161 | asm(XEN_EMULATE_PREFIX "cpuid" | 160 | asm(XEN_EMULATE_PREFIX "cpuid" |
@@ -994,7 +993,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = { | |||
994 | .read_pmc = native_read_pmc, | 993 | .read_pmc = native_read_pmc, |
995 | 994 | ||
996 | .iret = xen_iret, | 995 | .iret = xen_iret, |
997 | .irq_enable_syscall_ret = NULL, /* never called */ | 996 | .irq_enable_syscall_ret = xen_sysexit, |
998 | 997 | ||
999 | .load_tr_desc = paravirt_nop, | 998 | .load_tr_desc = paravirt_nop, |
1000 | .set_ldt = xen_set_ldt, | 999 | .set_ldt = xen_set_ldt, |