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 <nnmlinux(a)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