kaiser: use ALTERNATIVE instead of x86_cr3_pcid_noflush
authorHugh Dickins <hughd@google.com>
Wed, 4 Oct 2017 03:49:04 +0000 (20:49 -0700)
committerYves-Alexis Perez <corsac@debian.org>
Thu, 4 Jan 2018 11:12:40 +0000 (11:12 +0000)
commiteab3ed48b405e27929a6b2189336d76d79a9a67e
tree45561e6a67c1ab9ef5b78a5a9189cec9f99acc48
parentbf1bef9147a208c6e71a3c84f4baff20c864f5e5
kaiser: use ALTERNATIVE instead of x86_cr3_pcid_noflush

Now that we're playing the ALTERNATIVE game, use that more efficient
method: instead of user-mapping an extra page, and reading an extra
cacheline each time for x86_cr3_pcid_noflush.

Neel has found that __stringify(bts $X86_CR3_PCID_NOFLUSH_BIT, %rax)
is a working substitute for the "bts $63, %rax" in these ALTERNATIVEs;
but the one line with $63 in looks clearer, so let's stick with that.

Worried about what happens with an ALTERNATIVE between the jump and
jump label in another ALTERNATIVE?  I was, but have checked the
combinations in SWITCH_KERNEL_CR3_NO_STACK at entry_SYSCALL_64,
and it does a good job.

Signed-off-by: Hugh Dickins <hughd@google.com>
Acked-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Gbp-Pq: Topic features/all/kpti
Gbp-Pq: Name kaiser-use-alternative-instead-of-x86_cr3_pcid_noflush.patch
arch/x86/entry/entry_64.S
arch/x86/include/asm/kaiser.h
arch/x86/mm/kaiser.c