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:30:26 +0000 (14:30 -0700)
commite824880110a452575e28a1547b95c5eb2bbb90e8
tree174f9448ddd87e4beab813833b75cfaccbea9d05
parent044f72e1163f83cab78e92411033c8b6bf06d3de
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