pc-0.13 and older were missing some compat code that is present on newer
machine-types:
* x86_cpu_compat_disable_kvm_features(FEAT_1_ECX, CPUID_EXT_X2APIC);
(pc-i440fx-1.7 and older)
* x86_cpu_compat_set_features("n270", FEAT_1_ECX, 0, CPUID_EXT_MOVBE);
(pc-i440fx-1.4 and older)
* x86_cpu_compat_set_features("Westmere", FEAT_1_ECX, 0, CPUID_EXT_PCLMULQDQ);
(pc-i440fx-1.4 and older)
Add those missing bits to pc_init_pci_no_kvmclock(), to make sure
pc-0.13 and older are compatible with the older QEMU versions. While at
it, reorder pc_init_pci_no_kvmclock() and document where each line is
was copied from.
Signed-off-by: Eduardo Habkost <[email protected]>
---
hw/i386/pc_piix.c | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 2dccb34..802cd1a 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -389,16 +389,31 @@ static void pc_init_pci_1_2(MachineState *machine)
/* PC init function for pc-0.10 to pc-0.13, and reused by xenfv */
static void pc_init_pci_no_kvmclock(MachineState *machine)
{
- has_pci_info = false;
- has_acpi_build = false;
- smbios_defaults = false;
- gigabyte_align = false;
+ /* Copy from pc_compat_2_0(): */
smbios_legacy_mode = true;
has_reserved_memory = false;
+
+ /* Copy from pc_compat_1_7(): */
+ smbios_defaults = false;
+ gigabyte_align = false;
option_rom_has_mr = true;
+ x86_cpu_compat_disable_kvm_features(FEAT_1_ECX, CPUID_EXT_X2APIC);
+
+ /* Copy from pc_compat_1_6(): */
+ has_pci_info = false;
rom_file_has_mr = false;
- x86_cpu_compat_disable_kvm_features(FEAT_KVM, KVM_FEATURE_PV_EOI);
+ has_acpi_build = false;
+
+ /* Copy from pc_compat_1_4(): */
+ x86_cpu_compat_set_features("n270", FEAT_1_ECX, 0, CPUID_EXT_MOVBE);
+ x86_cpu_compat_set_features("Westmere", FEAT_1_ECX, 0,
CPUID_EXT_PCLMULQDQ);
+
+ /* Copy from pc_compat_1_3(): */
enable_compat_apic_id_mode();
+
+ /* Copy from pc_compat_1_2(): */
+ x86_cpu_compat_disable_kvm_features(FEAT_KVM, KVM_FEATURE_PV_EOI);
+
pc_init1(machine, 1, 0);
}
--
1.9.3