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