KVM: MTRR: observe maxphyaddr from guest CPUID, not host
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 14 Dec 2015 15:57:31 +0000 (16:57 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 22 Dec 2015 14:28:56 +0000 (15:28 +0100)
commitfa7c4ebd5ae0c22f9908436303106a9ffcf0cf42
tree62ffda16edba07ab21f4a7b486a00472ac174869
parenta7f2d7865720ff13d5b0f2a3bb1fd80dc3d7a73f
KVM: MTRR: observe maxphyaddr from guest CPUID, not host

Conversion of MTRRs to ranges used the maxphyaddr from the boot CPU.
This is wrong, because var_mtrr_range's mask variable then is discontiguous
(like FF00FFFF000, where the first run of 0s corresponds to the bits
between host and guest maxphyaddr).  Instead always set up the masks
to be full 64-bit values---we know that the reserved bits at the top
are zero, and we can restore them when reading the MSR.  This way
var_mtrr_range gets a mask that just works.

Fixes: a13842dc668b40daef4327294a6d3bdc8bd30276
Cc: qemu-stable@nongnu.org
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=107561
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mtrr.c