diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2021-01-25 23:04:01 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2021-02-08 14:43:54 +0100 |
commit | 5ea9e9e239db83391a39c09f1de63c4099c20df5 (patch) | |
tree | 88c60ad04c9f24c19444f06fa39873ba4b9711b8 /target/i386 | |
parent | fff7111fb90e93b148b2196175fd656b2bfea4cd (diff) | |
download | qemu-5ea9e9e239db83391a39c09f1de63c4099c20df5.zip qemu-5ea9e9e239db83391a39c09f1de63c4099c20df5.tar.gz qemu-5ea9e9e239db83391a39c09f1de63c4099c20df5.tar.bz2 |
target/i386: do not set LM for 32-bit emulation "-cpu host/max"
32-bit targets by definition do not support long mode; therefore, the
bit must be masked in the features supported by the accelerator.
As a side effect, this avoids setting up the 0x80000008 CPUID leaf
for
qemu-system-i386 -cpu host
which since commit 5a140b255d ("x86/cpu: Use max host physical address
if -cpu max option is applied") would have printed this error:
qemu-system-i386: phys-bits should be between 32 and 36 (but is 48)
Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Tested-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'target/i386')
-rw-r--r-- | target/i386/cpu.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/target/i386/cpu.c b/target/i386/cpu.c index ae89024..e775e9a 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -5073,6 +5073,11 @@ static uint64_t x86_cpu_get_supported_feature_word(FeatureWord w, } else { return ~0; } +#ifndef TARGET_X86_64 + if (w == FEAT_8000_0001_EDX) { + r &= ~CPUID_EXT2_LM; + } +#endif if (migratable_only) { r &= x86_cpu_get_migratable_flags(w); } |