Add support for the POWER11 CPU model in libvirt ppc64 CPU map. This allows libvirt to recognize and handle guests that specify POWER11 as the target CPU model when running on recent Power systems supporting this architecture.
The addition includes: - A new src/cpu_map/ppc64_POWER11.xml definition file describing the features and flags for POWER11 CPUs. - Updates to src/cpu_map/index.xml and build system (meson) to include the new model. - Test updates to qemucapabilitiesdata and qemuxmlconfdata to reflect the presence of POWER11 in supported CPU models. - Adjustments to existing test XMLs to fix CPU model expectations and avoid mismatches during validation against QEMU output. With this change, users can specify <model>POWER11</model> in guest CPU configuration and have libvirt map it correctly to the corresponding QEMU CPU model and capabilities. Tested with: - QEMU 10.0.0 on POWER11 host system - Validated with updated domain capabilities and qemu capabilities tests Signed-off-by: Narayana Murty N <nnmli...@linux.ibm.com> --- src/cpu_map/index.xml | 1 + src/cpu_map/meson.build | 1 + src/cpu_map/ppc64_POWER11.xml | 6 ++++++ tests/domaincapsdata/qemu_10.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml | 4 ++-- .../ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args | 2 +- .../ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.xml | 2 +- .../ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args | 2 +- .../ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.xml | 2 +- tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.args | 2 +- tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.xml | 2 +- 11 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 src/cpu_map/ppc64_POWER11.xml diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml index 87db338cee..790c3b2f83 100644 --- a/src/cpu_map/index.xml +++ b/src/cpu_map/index.xml @@ -181,6 +181,7 @@ <include filename='ppc64_POWER8.xml'/> <include filename='ppc64_POWER9.xml'/> <include filename='ppc64_POWER10.xml'/> + <include filename='ppc64_POWER11.xml'/> </group> <group name='Freescale-based CPU models'> diff --git a/src/cpu_map/meson.build b/src/cpu_map/meson.build index dee8441a13..abf9c21e4f 100644 --- a/src/cpu_map/meson.build +++ b/src/cpu_map/meson.build @@ -17,6 +17,7 @@ cpumap_data = [ 'arm_vendors.xml', 'index.xml', 'ppc64_POWER10.xml', + 'ppc64_POWER11.xml', 'ppc64_POWER6.xml', 'ppc64_POWER7.xml', 'ppc64_POWER8.xml', diff --git a/src/cpu_map/ppc64_POWER11.xml b/src/cpu_map/ppc64_POWER11.xml new file mode 100644 index 0000000000..6e8ae715c6 --- /dev/null +++ b/src/cpu_map/ppc64_POWER11.xml @@ -0,0 +1,6 @@ +<cpus> + <model name='POWER11'> + <vendor name='IBM'/> + <pvr value='0x00820000' mask='0xffff0000'/> + </model> +</cpus> diff --git a/tests/domaincapsdata/qemu_10.0.0.ppc64.xml b/tests/domaincapsdata/qemu_10.0.0.ppc64.xml index 3c864146eb..ccedde63d1 100644 --- a/tests/domaincapsdata/qemu_10.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_10.0.0.ppc64.xml @@ -36,6 +36,7 @@ </mode> <mode name='custom' supported='yes'> <model usable='unknown' vendor='IBM'>POWER10</model> + <model usable='unknown' vendor='IBM'>POWER11</model> <model usable='unknown' vendor='IBM'>POWER7</model> <model usable='unknown' vendor='IBM'>POWER8</model> <model usable='unknown' vendor='IBM'>POWER9</model> diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml index bd65a038f9..1afe4ff7f3 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_ppc64.xml @@ -175,7 +175,7 @@ <cpu type='kvm' name='ppc' typename='604-powerpc64-cpu'/> <cpu type='kvm' name='ppc32' typename='604-powerpc64-cpu'/> <cpu type='kvm' name='ppc64' typename='970fx_v3.1-powerpc64-cpu'/> - <cpu type='kvm' name='power11' typename='host-powerpc64-cpu'/> + <cpu type='kvm' name='POWER11' typename='host-powerpc64-cpu'/> <cpu type='kvm' name='POWER10' typename='power10_v2.0-powerpc64-cpu'/> <cpu type='kvm' name='POWER9' typename='power9_v2.2-powerpc64-cpu'/> <cpu type='kvm' name='power8nvl' typename='power8nvl_v1.0-powerpc64-cpu'/> @@ -632,7 +632,7 @@ <cpu type='tcg' name='ppc' typename='604-powerpc64-cpu'/> <cpu type='tcg' name='ppc32' typename='604-powerpc64-cpu'/> <cpu type='tcg' name='ppc64' typename='970fx_v3.1-powerpc64-cpu'/> - <cpu type='tcg' name='power11' typename='power11_v2.0-powerpc64-cpu'/> + <cpu type='tcg' name='POWER11' typename='power11_v2.0-powerpc64-cpu'/> <cpu type='tcg' name='POWER10' typename='power10_v2.0-powerpc64-cpu'/> <cpu type='tcg' name='POWER9' typename='power9_v2.2-powerpc64-cpu'/> <cpu type='tcg' name='power8nvl' typename='power8nvl_v1.0-powerpc64-cpu'/> diff --git a/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args b/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args index a98dd05b5b..6390322e8c 100644 --- a/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args +++ b/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \ -machine pseries-3.1,usb=off,dump-guest-core=off,memory-backend=ppc_spapr.ram \ -accel kvm \ --cpu power11 \ +-cpu POWER11 \ -m size=4194304k \ -object '{"qom-type":"memory-backend-ram","id":"ppc_spapr.ram","size":4294967296}' \ -overcommit mem-lock=off \ diff --git a/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.xml b/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.xml index b4d23bbe57..a751a64e11 100644 --- a/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.xml +++ b/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.xml @@ -9,7 +9,7 @@ <boot dev='hd'/> </os> <cpu mode='custom' match='exact' check='none'> - <model fallback='forbid'>power11</model> + <model fallback='forbid'>POWER11</model> </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> diff --git a/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args b/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args index 21b51e76f6..130c801fa6 100644 --- a/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args +++ b/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \ -machine pseries-4.2,usb=off,dump-guest-core=off,memory-backend=ppc_spapr.ram \ -accel kvm \ --cpu power11 \ +-cpu POWER11 \ -m size=4194304k \ -object '{"qom-type":"memory-backend-ram","id":"ppc_spapr.ram","size":4294967296}' \ -overcommit mem-lock=off \ diff --git a/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.xml b/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.xml index ff3ad5f9d4..168006a3dc 100644 --- a/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.xml +++ b/tests/qemuxmlconfdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.xml @@ -9,7 +9,7 @@ <boot dev='hd'/> </os> <cpu mode='custom' match='exact' check='none'> - <model fallback='forbid'>power11</model> + <model fallback='forbid'>POWER11</model> </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> diff --git a/tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.args b/tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.args index 351702dcfd..7dbdc20359 100644 --- a/tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.args +++ b/tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ -machine pseries,usb=off,dump-guest-core=off,memory-backend=ppc_spapr.ram \ -accel kvm \ --cpu power11 \ +-cpu POWER11 \ -m size=524288k \ -object '{"qom-type":"memory-backend-ram","id":"ppc_spapr.ram","size":536870912}' \ -overcommit mem-lock=off \ diff --git a/tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.xml b/tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.xml index 1e67592876..c6f4f95690 100644 --- a/tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.xml +++ b/tests/qemuxmlconfdata/pseries-cpu-le.ppc64-latest.xml @@ -9,7 +9,7 @@ <boot dev='hd'/> </os> <cpu mode='custom' match='exact' check='none'> - <model fallback='forbid'>power11</model> + <model fallback='forbid'>POWER11</model> </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> -- 2.48.1