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