On Thu, Aug 27, 2020 at 08:50:15 +0000, Wangxin (Alexander) wrote: > Hi, Jiri > > I just compared the cpu features between the 'x86_Cooperlake.xml ' and 'x86_Cascadelake-Server.xml', > the feature 'mpx' seems removed from the Cooperlake model. Is there a reason? mpx was not removed from Cooperlake, it was never enabled there. You can't really look at a new CPU model as a superset of a previous models. Some features may be added and some may even be dropped from new models. > And what rules do we follow to add or remove CPU features? In general, we follow the CPU model definition when QEMU adds it to their sources. Anyway, specifically mpx was even drop from older CPU models (such as Cascadelake-Server) in QEMU with the following commit: commit ecb85fe48cacb2f8740186e81f2f38a2e02bd963 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> AuthorDate: Thu Dec 20 13:11:00 2018 +0100 Commit: Eduardo Habkost <ehabkost@xxxxxxxxxx> CommitDate: Mon Jan 14 12:23:36 2019 -0200 target/i386: Disable MPX support on named CPU models MPX support is being phased out by Intel; GCC has dropped it, Linux is also going to do that. Even though KVM will have special code to support MPX after the kernel proper stops enabling it in XCR0, we probably also want to deprecate that in a few years. As a start, do not enable it by default for any named CPU model starting with the 4.0 machine types; this include Skylake, Icelake and Cascadelake. Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> Message-Id: <20181220121100.21554-1-pbonzini@xxxxxxxxxx> Reviewed-by: Â Wainer dos Santos Moschetta <wainersm@xxxxxxxxxx> Signed-off-by: Eduardo Habkost <ehabkost@xxxxxxxxxx> In libvirt we rarely modify CPU models we already released since we need all libvirt installations to share the same definition of a particular CPU model (this may change in the future), which is why our Cascadelake-Server model still contains mpx. Jirka