From ba222e201e070d95e282762e890cf8e86251e84c Mon Sep 17 00:00:00 2001 From: Eduardo Habkost Date: Wed, 21 Aug 2019 22:28:26 +0200 Subject: [PATCH 3/3] i386: Don't copy host virtual address limit RH-Author: Eduardo Habkost Message-id: <20190821222826.11853-1-ehabkost@redhat.com> Patchwork-id: 90110 O-Subject: [RHEL-7.8 qemu-kvm PATCH] i386: Don't copy host virtual address limit Bugzilla: 1706658 RH-Acked-by: Paolo Bonzini RH-Acked-by: Dr. David Alan Gilbert RH-Acked-by: Bandan Das Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1706658 Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=23157241 Upstream: not applicable The KVM code in RHEL-7 supports only 48-bit virtual addresses. Copying the host virtual address size to the guest is pointless and only makes the VM crash if the host virtual address size is not 48 bits. Change the downstream-only code that copies host CPUID to just copy the physical address limit, and keep the hardcoded virtual address size. Signed-off-by: Eduardo Habkost Signed-off-by: Miroslav Rezanina --- target-i386/cpu.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target-i386/cpu.c b/target-i386/cpu.c index c74f597..ca43268 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -2841,7 +2841,13 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, uint32_t _eax; host_cpuid(0x80000000, 0, &_eax, NULL, NULL, NULL); if (_eax >= 0x80000008) - host_cpuid(0x80000008, 0, eax, NULL, NULL, NULL); + host_cpuid(0x80000008, 0, &_eax, NULL, NULL, NULL); + /* + * Override physical size only, as RHEL-7 KVM only supports + * 48 bits virtual. + */ + *eax &= ~0xff; + *eax |= _eax & 0xff; } } else { if (env->features[FEAT_1_EDX] & CPUID_PSE36) { -- 1.8.3.1