[virt-manager PATCH] Fix checking for graphics spice for Xen
Charles Arnold
carnold at suse.com
Wed Feb 9 21:53:29 UTC 2022
On 2/9/22 11:32 AM, Charles Arnold wrote:
> On 2/9/22 10:32 AM, Cole Robinson wrote:
>> On 2/9/22 9:50 AM, Charles Arnold wrote:
>>> Advertising graphics support doesn't necessarily mean spice support.
>>> self.devices.graphics.supported seems to not be spice specific
>>> but rather more generic in indicating whether graphics are supported.
>>> For Xen, spice is not supported so fallback to the old logic.
>>>
>>> Signed-off-by: Charles Arnold <carnold at suse.com>
>>>
>>> diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
>>> index 67bceaa3..ad6e3363 100644
>>> --- a/virtinst/domcapabilities.py
>>> +++ b/virtinst/domcapabilities.py
>>> @@ -382,7 +382,7 @@ class DomainCapabilities(XMLBuilder):
>>> return len(models) > 0 and bool("emulator" in backends)
>>>
>>> def supports_graphics_spice(self):
>>> - if not self.devices.graphics.supported:
>>> + if not self.devices.graphics.supported or self.conn.is_xen():
>>> # domcaps is too old, or the driver doesn't advertise
>>> graphics
>>> # support. Use our pre-existing logic
>>> if not self.conn.is_qemu() and not self.conn.is_test():
>>>
>>>
>> Hmm but does that mean domcapabilities for xen is reporting that spice
>> is available? If that's the case, seems like a domcapabilities bug in
>> libvirt xen driver. Or am I missing something?
>>
>> Thanks,
>> Cole
>>
>
> Booted into Xen, virsh domcapabilities reports,
>
> <domainCapabilities>
> <path>/usr/bin/qemu-system-x86_64</path>
> <domain>xen</domain>
> <machine>xenpv</machine>
> <arch>x86_64</arch>
> <vcpu max='512'/>
> <iothreads supported='no'/>
> <os supported='yes'>
> <loader supported='no'/>
> </os>
> <cpu>
> <mode name='host-passthrough' supported='no'/>
> <mode name='maximum' supported='no'/>
> <mode name='host-model' supported='no'/>
> <mode name='custom' supported='no'/>
> </cpu>
> <devices>
> <disk supported='yes'>
> <enum name='diskDevice'>
> <value>disk</value>
> <value>cdrom</value>
> </enum>
> <enum name='bus'>
> <value>ide</value>
> <value>scsi</value>
> <value>xen</value>
> </enum>
> <enum name='model'/>
> </disk>
> <graphics supported='yes'>
> <enum name='type'>
> <value>sdl</value>
> <value>vnc</value>
> <value>spice</value>
> </enum>
> </graphics>
> <video supported='yes'>
> <enum name='modelType'>
> <value>vga</value>
> <value>cirrus</value>
> <value>xen</value>
> </enum>
> </video>
> <hostdev supported='yes'>
> <enum name='mode'>
> <value>subsystem</value>
> </enum>
> <enum name='startupPolicy'>
> <value>default</value>
> <value>mandatory</value>
> <value>requisite</value>
> <value>optional</value>
> </enum>
> <enum name='subsysType'>
> <value>usb</value>
> <value>pci</value>
> </enum>
> <enum name='capsType'/>
> <enum name='pciBackend'>
> <value>xen</value>
> </enum>
> </hostdev>
> </devices>
> <features>
> <gic supported='no'/>
> <vmcoreinfo supported='no'/>
> <genid supported='no'/>
> <sev supported='no'/>
> </features>
> </domainCapabilities>
>
The more precise error I'm trying to fix is while attempting to install
a Xen HVM guest it reports,
details=Traceback (most recent call last):
File "./virtManager/asyncjob.py", line 72, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "./virtManager/createvm.py", line 2008, in _do_async_install
installer.start_install(guest, meter=meter)
File "./virtinst/install/installer.py", line 704, in start_install
doboot, transient)
File "./virtinst/install/installer.py", line 649, in _create_guest
domain = self.conn.createXML(install_xml or final_xml, 0)
File "/usr/lib64/python3.6/site-packages/libvirt.py", line 4393, in
createXML
raise libvirtError('virDomainCreateXML() failed')
libvirt.libvirtError: unsupported configuration: cannot add redirected
USB device: USB is disabled for this domain
So in the latest code the VM is marked as supporting spice and later
wants to add a DeviceRedirdev. The 3.2.0 code always just failed for
spice if 'is_qemu()' was false.
- Charles
More information about the virt-tools-list
mailing list