Most of the bits that make "enforce" breaks were introduced in 2010 by commit 8560efed6a72a816c0115f41ddb9d79f7ce63f28. The intention behind that commit made sense, the only problem is that we can't guarantee guest ABI stability across hosts if we simply rely on trimming of CPU features based on host capabilities.
So, this series remove CPUID bits from the CPU model definitions so they become defaults that: 1) won't unexpectly stop working when we start using the "enforce" flag; 2) won't silently break the guest ABI when TCG or KVM start supporting new features. There's only one non-trivial case left: the qemu32/qemu64 models. The problem with them is that we have conflicting expectations about it, from different users: TCG users expect the default CPU model to contain most TCG-supported features (and it makes sense). See, for example, commit f1e00a9cf326acc1f2386a72525af8859852e1df. KVM users expect the default CPU model to be a conservative choice which will work on most host CPUs (and will only contain features that are supported by KVM). We could solve the qemu32/qemu64 issue by having different defaults for TCG and KVM. But we have existinting management code (libvirt) that already expects qemu32 or qemu64 to be the default, and changing the default would break that code. I will send an RFC to address that later. Cc: Aurelien Jarno <aurel...@aurel32.net> Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: k...@vger.kernel.org Eduardo Habkost (3): target-i386: Disable CPUID_ACPI by default on KVM mode target-i386: Remove unsupported bits from all CPU models target-i386: Don't enable nested VMX by default hw/i386/pc_piix.c | 2 ++ hw/i386/pc_q35.c | 2 ++ target-i386/cpu.c | 34 +++++++++++++++++++++------------- 3 files changed, 25 insertions(+), 13 deletions(-) -- 1.9.3