]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
x86,kvm,vmx: Preserve CR4 across VM entry
authorAndy Lutomirski <luto@amacapital.net>
Wed, 8 Oct 2014 16:02:13 +0000 (09:02 -0700)
committerJiri Slaby <jslaby@suse.cz>
Mon, 9 Feb 2015 09:50:25 +0000 (10:50 +0100)
commit2e70fb5dcbaec195febf1eee3b96e8b47e432c35
tree1c14039b6dd3727e63acc66a889ba5973a01cdf7
parentd51ecc125de8d526f79106d169ab9f6353eab96f
x86,kvm,vmx: Preserve CR4 across VM entry

commit d974baa398f34393db76be45f7d4d04fbdbb4a0a upstream.

CR4 isn't constant; at least the TSD and PCE bits can vary.

TBH, treating CR0 and CR3 as constant scares me a bit, too, but it looks
like it's correct.

This adds a branch and a read from cr4 to each vm entry.  Because it is
extremely likely that consecutive entries into the same vcpu will have
the same host cr4 value, this fixes up the vmcs instead of restoring cr4
after the fact.  A subsequent patch will add a kernel-wide cr4 shadow,
reducing the overhead in the common case to just two memory reads and a
branch.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: Petr Matousek <pmatouse@redhat.com>
Cc: Gleb Natapov <gleb@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[wangkai: Backport to 3.10: adjust context]
Signed-off-by: Wang Kai <morgan.wang@huawei.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
arch/x86/kvm/vmx.c