[libvirt PATCH] cpu_map: Remove intel-pt from x86 CPU models

Tim Wiederhake twiederh at redhat.com
Mon Jan 25 08:33:07 UTC 2021


On Mon, 2021-01-25 at 07:29 +0100, Jiri Denemark wrote:
> As explained in QEMU commit 4c257911dcc7c4189768e9651755c849ce9db4e8
> intel-pt features should never be included in the CPU models as it
> was
> not supported by KVM back then and even once it started to be
> supported,
> users have to enable it by passing pt_mode=1 parameter to kvm_intel
> module. The Icelake-* CPU models with intel-pt included were added to
> QEMU 3.1.0 and removed right in the following 4.0.0 release (and even
> in
> 3.1.1 maintenance release).
> 
> In libvirt 6.10.0 I introduced 'removed' attribute for features
> included
> in our CPU model definitions which we can use to drop intel-pt from
> Icelake-* CPU models. Back then I explained we can safely do so only
> for
> features which could never be enabled, which is not the case of
> intel-pt.
> 
> Theoretically, it could be possible to create an environment in which
> QEMU would enable intel-pt without asking for it explicitly: it would
> need to use a new enough kernel (not available at the time of QEMU
> 3.1.0) and pt_mode KVM parameter in combination with QEMU 3.1.0
> running
> a domain with q35 machine type and all that on a CPU which didn't
> really
> exist at that time.
> 
> Migrating such domain to a host with newer SW stack including libvirt
> with this patch applied would result in incompatible guest ABI (the
> virtual CPU would lose intel-pt). However, QEMU changed its CPU
> models
> unconditionally and thus migration would not work even without this
> patch. That said, it is safe to follow QEMU and remove the feature
> from
> Icelake-* CPU models in our cpu_map.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1853972
> 
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>  src/cpu_map/x86_Icelake-Client-noTSX.xml                        | 2
> +-
>  src/cpu_map/x86_Icelake-Client.xml                              | 2
> +-
>  src/cpu_map/x86_Icelake-Server-noTSX.xml                        | 2
> +-
>  src/cpu_map/x86_Icelake-Server.xml                              | 2
> +-
>  tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml        | 1
> +
>  tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml         | 1
> +
>  .../cpu-Icelake-Server-pconfig.x86_64-3.1.0.args                | 2
> +-
>  .../cpu-Icelake-Server-pconfig.x86_64-latest.args               | 2
> +-
>  8 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/src/cpu_map/x86_Icelake-Client-noTSX.xml
> b/src/cpu_map/x86_Icelake-Client-noTSX.xml
> index 65e648ae21..217adba4f2 100644
> --- a/src/cpu_map/x86_Icelake-Client-noTSX.xml
> +++ b/src/cpu_map/x86_Icelake-Client-noTSX.xml
> @@ -30,7 +30,7 @@
>      <feature name='fsgsbase'/>
>      <feature name='fxsr'/>
>      <feature name='gfni'/>
> -    <feature name='intel-pt'/>
> +    <feature name='intel-pt' removed='yes'/>
>      <feature name='invpcid'/>
>      <feature name='lahf_lm'/>
>      <feature name='lm'/>
> diff --git a/src/cpu_map/x86_Icelake-Client.xml
> b/src/cpu_map/x86_Icelake-Client.xml
> index 5cf32e91fa..b725227f46 100644
> --- a/src/cpu_map/x86_Icelake-Client.xml
> +++ b/src/cpu_map/x86_Icelake-Client.xml
> @@ -31,7 +31,7 @@
>      <feature name='fxsr'/>
>      <feature name='gfni'/>
>      <feature name='hle'/>
> -    <feature name='intel-pt'/>
> +    <feature name='intel-pt' removed='yes'/>
>      <feature name='invpcid'/>
>      <feature name='lahf_lm'/>
>      <feature name='lm'/>
> diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml
> b/src/cpu_map/x86_Icelake-Server-noTSX.xml
> index 34a0f7c18c..7c9c32c977 100644
> --- a/src/cpu_map/x86_Icelake-Server-noTSX.xml
> +++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml
> @@ -37,7 +37,7 @@
>      <feature name='fsgsbase'/>
>      <feature name='fxsr'/>
>      <feature name='gfni'/>
> -    <feature name='intel-pt'/>
> +    <feature name='intel-pt' removed='yes'/>
>      <feature name='invpcid'/>
>      <feature name='la57'/>
>      <feature name='lahf_lm'/>
> diff --git a/src/cpu_map/x86_Icelake-Server.xml
> b/src/cpu_map/x86_Icelake-Server.xml
> index 1ee4ea9cd4..b4685bead0 100644
> --- a/src/cpu_map/x86_Icelake-Server.xml
> +++ b/src/cpu_map/x86_Icelake-Server.xml
> @@ -38,7 +38,7 @@
>      <feature name='fxsr'/>
>      <feature name='gfni'/>
>      <feature name='hle'/>
> -    <feature name='intel-pt'/>
> +    <feature name='intel-pt' removed='yes'/>
>      <feature name='invpcid'/>
>      <feature name='la57'/>
>      <feature name='lahf_lm'/>
> diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml 
> b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
> index 3a71b28cfb..7fcd20d26d 100644
> --- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
> +++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
> @@ -21,6 +21,7 @@
>    <feature policy='require' name='tsc_adjust'/>
>    <feature policy='require' name='cmt'/>
>    <feature policy='require' name='avx512ifma'/>
> +  <feature policy='require' name='intel-pt'/>
>    <feature policy='require' name='sha-ni'/>
>    <feature policy='require' name='ospke'/>
>    <feature policy='require' name='rdpid'/>
> diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
> b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
> index 1582de0422..07e8f8bc24 100644
> --- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
> +++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
> @@ -22,6 +22,7 @@
>    <feature name='tsc_adjust'/>
>    <feature name='cmt'/>
>    <feature name='avx512ifma'/>
> +  <feature name='intel-pt'/>
>    <feature name='sha-ni'/>
>    <feature name='ospke'/>
>    <feature name='rdpid'/>
> diff --git a/tests/qemuxml2argvdata/cpu-Icelake-Server-
> pconfig.x86_64-3.1.0.args b/tests/qemuxml2argvdata/cpu-Icelake-
> Server-pconfig.x86_64-3.1.0.args
> index 96d4306238..b69bfe0f0f 100644
> --- a/tests/qemuxml2argvdata/cpu-Icelake-Server-pconfig.x86_64-
> 3.1.0.args
> +++ b/tests/qemuxml2argvdata/cpu-Icelake-Server-pconfig.x86_64-
> 3.1.0.args
> @@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
>  -object secret,id=masterKey0,format=raw,\
>  file=/tmp/lib/domain--1-test/master-key.aes \
>  -machine pc-i440fx-3.1,accel=kvm,usb=off,dump-guest-core=off \
> --cpu Icelake-Server,pconfig=off \
> +-cpu Icelake-Server,pconfig=off,intel-pt=off \
>  -m 214 \
>  -overcommit mem-lock=off \
>  -smp 1,sockets=1,cores=1,threads=1 \
> diff --git a/tests/qemuxml2argvdata/cpu-Icelake-Server-
> pconfig.x86_64-latest.args b/tests/qemuxml2argvdata/cpu-Icelake-
> Server-pconfig.x86_64-latest.args
> index a512623af6..64f223bee3 100644
> --- a/tests/qemuxml2argvdata/cpu-Icelake-Server-pconfig.x86_64-
> latest.args
> +++ b/tests/qemuxml2argvdata/cpu-Icelake-Server-pconfig.x86_64-
> latest.args
> @@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
>  -object secret,id=masterKey0,format=raw,\
>  file=/tmp/lib/domain--1-test/master-key.aes \
>  -machine pc,accel=kvm,usb=off,dump-guest-core=off,memory-
> backend=pc.ram \
> --cpu Icelake-Server \
> +-cpu Icelake-Server,intel-pt=off \
>  -m 214 \
>  -object memory-backend-ram,id=pc.ram,size=224395264 \
>  -overcommit mem-lock=off \

Reviewed-by: Tim Wiederhake <twiederh at redhat.com>





More information about the libvir-list mailing list