
On 1/24/22 09:04, Peter Krempa wrote:
On Mon, Jan 24, 2022 at 08:57:02 -0300, Daniel Henrique Barboza wrote:
On 1/21/22 11:08, Peter Krempa wrote:
On Thu, Jan 20, 2022 at 10:52:11 -0300, Daniel Henrique Barboza wrote:
We're now able to boot a simple PowerNV8 domain in Libvirt.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- tests/qemuxml2argvdata/powernv8-basic.args | 31 +++++++++++++++++++++ tests/qemuxml2argvdata/powernv8-basic.xml | 16 +++++++++++ tests/qemuxml2argvtest.c | 3 ++ tests/qemuxml2xmloutdata/powernv8-basic.xml | 28 +++++++++++++++++++ tests/qemuxml2xmltest.c | 3 ++ tests/testutilsqemu.c | 2 +- 6 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 tests/qemuxml2argvdata/powernv8-basic.args create mode 100644 tests/qemuxml2argvdata/powernv8-basic.xml create mode 100644 tests/qemuxml2xmloutdata/powernv8-basic.xml
[...]
diff --git a/tests/qemuxml2argvdata/powernv8-basic.xml b/tests/qemuxml2argvdata/powernv8-basic.xml new file mode 100644 index 0000000000..a92fc1282c --- /dev/null +++ b/tests/qemuxml2argvdata/powernv8-basic.xml @@ -0,0 +1,16 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>b20fcfe3-4a0a-4039-8735-9e024256e0f7</uuid> + <memory unit='KiB'>2097152</memory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='ppc64' machine='powernv8'>hvm</type> + </os> + <devices> + <emulator>/usr/bin/qemu-system-ppc64</emulator> + <controller type='pci' index='0' model='pcie-root'/> + <console type='pty'> + <target type='serial' port='0'/> + </console> + </devices> +</domain>
Trying to start this config after this series is applied fails with:
error: internal error: process exited while connecting to monitor: 2022-01-21T14:04:54.119602Z qemu-system-ppc64: -device pnv-phb3,index=0,chip-id=0,id=pcie.0: Parameter 'driver' expects a pluggable device type
qemu-system-ppc-core-6.2.0-2.fc35.x86_64
You'll need QEMU upstream to test it. QEMU 6.2.0 doesn't allow the PHBs to be user created. I think I mentioned in the cover letter that I didn't find a good way to block Libvirt users from doing exactly as you attempted to do because the pnv-phb3 is presented, but it's unusable.
The places where we bother checking QEMU version is on qemu_process.c when creating a log in qemuLogOperation() and in qemu_driver.c in qemuConnectGetVersion. I didn't find any other case where Libvirt checks for QEMU version to check whether a feature is valid or not, because well, Libvirt uses capabilities to avoid doing that in the first place.
In very specific cases when there's absolutely no other possibility to do so we assert certain virQEMUCaps based on version number. Currently there's just one. See: virQEMUCapsInitQMPVersionCaps
Thanks for the pointer. I'll look it up and see if this is possible with these PowerNV capabilities I'm adding in this series. Daniel