x86_64/entry/xen: Do not invoke espfix64 on Xen
authorAndy Lutomirski <luto@amacapital.net>
Wed, 23 Jul 2014 15:34:11 +0000 (08:34 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 7 Aug 2014 21:52:38 +0000 (14:52 -0700)
commit74020e9499a3df5e5f21d9f22c980e510fa8dfe0
treee5f61f344d1de25d52386fbaf0825358facbcc66
parent345e588e67c56983be11816c8af9b1767b6b4907
x86_64/entry/xen: Do not invoke espfix64 on Xen

commit 7209a75d2009dbf7745e2fd354abf25c3deb3ca3 upstream.

This moves the espfix64 logic into native_iret.  To make this work,
it gets rid of the native patch for INTERRUPT_RETURN:
INTERRUPT_RETURN on native kernels is now 'jmp native_iret'.

This changes the 16-bit SS behavior on Xen from OOPSing to leaking
some bits of the Xen hypervisor's RSP (I think).

[ hpa: this is a nonzero cost on native, but probably not enough to
  measure. Xen needs to fix this in their own code, probably doing
  something equivalent to espfix64. ]

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Link: http://lkml.kernel.org/r/7b8f1d8ef6597cb16ae004a43c56980a7de3cf94.1406129132.git.luto@amacapital.net
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/include/asm/irqflags.h
arch/x86/kernel/entry_64.S
arch/x86/kernel/paravirt_patch_64.c