[PATCH virt-manager v2 0/4] Enable MDEV support

Cole Robinson crobinso at redhat.com
Wed Jun 2 17:45:10 UTC 2021


On 6/2/21 9:34 AM, Shalini Chellathurai Saroja wrote:
> 
> On 6/1/21 11:13 PM, Cole Robinson wrote:
>> On 5/31/21 3:54 PM, Shalini Chellathurai Saroja wrote:
>>> Enable support for mediated devices in virt-xml tool and virt-manager
>>> GUI tool.
>>>
>> Thanks! I pushed 1-3 with a small tweak to patch #1 to keep code
>> coverage at 100%.
> 
> Good morning Cole,
> 
> Thank you for reviewing and pushing the virt-xml patch.
> 
>> In order to get the parent naming stuff in addhardware.py to trigger I
>> needed to change things a bit:
>>
>> diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
>> index 2df84bf5..13b899c3 100644
>> --- a/virtManager/addhardware.py
>> +++ b/virtManager/addhardware.py
>> @@ -783,9 +783,10 @@ class vmmAddHardware(vmmGObjectUI):
>>                          prettyname += " (%s)" % subdev.pretty_name()
>>
>>              if devtype == "mdev":
>> -                for subdev in self.conn.filter_nodedevs("mdev"):
>> -                    if dev.xmlobj.name == subdev.xmlobj.parent:
>> -                        prettyname += " (%s)" % subdev.pretty_name()
>> +                for parentdev in self.conn.list_nodedevs():
>> +                    if dev.xmlobj.parent == parentdev.xmlobj.name:
>> +                        prettyname = "%s %s" % (
>> +                                parentdev.pretty_name(), prettyname)
>>
>>              model.append([dev.xmlobj, prettyname])
>>
>>
>> Was it working in your code before that, like on a real system with mdev
>> devices? Or was the Add Hardware->MDEV only listing devices with name
>> `mdev_$UUID` ?
> MDEV devices are listed as mdev_$UUID in my system with MDEV devices.
> I have provided a screenshot with my code below.
> 
>> The point of this code is to give more descriptive names to what we list
>> in the UI, if we can help it. The names for 'mdev' devices are not
>> descriptive. 
> Yes, your code provides a more descriptive name and helps to
> identify the device type (like CCW/PCI/AP device) . We can use it.
> I have provided a screenshot with your code below.
> 
>> Their type id=XXX values are a bit better:
>> vfio_ap-passthrough, nvidia-11, etc. Maybe we can just use that? The
>> parent devices have a bit more info under <capability><type><name> but
>> it's not clear if that's always available. Maybe we can get away with
>> just using the <type id=XXX> value in the mdev pretty_name() definition
> More than one MDEV device can have the same type id as shown below.
> May be, we can use type id in combination with mdev_$uuid.
> I feel like your suggested code is better, as we could identify the parent
> device and MDEV device type with this code.
> 
> # virsh nodedev-dumpxml mdev_8e782fea_e5f4_45fa_a0f9_024cf66e5009
> <device>
>   <name>mdev_8e782fea_e5f4_45fa_a0f9_024cf66e5009</name>
>  
> <path>/sys/devices/css0/0.0.0024/8e782fea-e5f4-45fa-a0f9-024cf66e5009</path>
>   <parent>css_0_0_0024</parent>
>   <driver>
>     <name>vfio_mdev</name>
>   </driver>
>   <capability type='mdev'>
>     *<type id='vfio_ccw-io'/>*
>     <uuid>8e782fea-e5f4-45fa-a0f9-024cf66e5009</uuid>
>     <iommuGroup number='1'/>
>   </capability>
> </device>
> 
> # virsh nodedev-dumpxml mdev_92cc4b96_95d8_47ce_923c_c688d061bc41
> <device>
>   <name>mdev_92cc4b96_95d8_47ce_923c_c688d061bc41</name>
>  
> <path>/sys/devices/css0/0.0.0023/92cc4b96-95d8-47ce-923c-c688d061bc41</path>
>   <parent>css_0_0_0023</parent>
>   <driver>
>     <name>vfio_mdev</name>
>   </driver>
>   <capability type='mdev'>
>     *<type id='vfio_ccw-io'/>*
>     <uuid>92cc4b96-95d8-47ce-923c-c688d061bc41</uuid>
>     <iommuGroup number='2'/>
>   </capability>
> </device>
> 
> Similarly, <capability><type><name> info in MDEV parent device
> can also be same for more than one MDEV device.
> 
> # virsh nodedev-dumpxml css_0_0_0023
> <device>
>   <name>css_0_0_0023</name>
>   <path>/sys/devices/css0/0.0.0023</path>
>   <parent>computer</parent>
>   <driver>
>     <name>vfio_ccw</name>
>   </driver>
>   <capability type='css'>
>     <cssid>0x0</cssid>
>     <ssid>0x0</ssid>
>     <devno>0x0023</devno>
>     <capability type='mdev_types'>
>       <type id='vfio_ccw-io'>
>         *<name>I/O subchannel (Non-QDIO)</name>*
>         <deviceAPI>vfio-ccw</deviceAPI>
>         <availableInstances>0</availableInstances>
>       </type>
>     </capability>
>   </capability>
> </device>
> 
> # virsh nodedev-dumpxml css_0_0_0024
> <device>
>   <name>css_0_0_0024</name>
>   <path>/sys/devices/css0/0.0.0024</path>
>   <parent>computer</parent>
>   <driver>
>     <name>vfio_ccw</name>
>   </driver>
>   <capability type='css'>
>     <cssid>0x0</cssid>
>     <ssid>0x0</ssid>
>     <devno>0x0024</devno>
>     <capability type='mdev_types'>
>       <type id='vfio_ccw-io'>
>         *<name>I/O subchannel (Non-QDIO)</name>*
>         <deviceAPI>vfio-ccw</deviceAPI>
>         <availableInstances>0</availableInstances>
>       </type>
>     </capability>
>   </capability>
> </device>
> 
> Are you ok with using your suggested code (parent name mdev_$uuid)
> for prettyname? Please let me know your feedback.

Yes if you think that's looks good on a real machine, then that works
for me too.

Thanks,
Cole




More information about the virt-tools-list mailing list