mbox series

[v3,0/3] qmp, vhost-user: Remove virtio_list & update virtio introspection

Message ID 20230803145500.2108691-1-jonah.palmer@oracle.com (mailing list archive)
Headers show
Series qmp, vhost-user: Remove virtio_list & update virtio introspection | expand

Message

Jonah Palmer Aug. 3, 2023, 2:54 p.m. UTC
These patches update a few things related to virtio introspection via.
QMP/HMP commands.

1. Remove 'virtio_list' and instead query the QOM composition tree to
find any active & realized virtio devices.

The 'virtio_list' was duplicating information about virtio devices that
was already available in the QOM composition tree, so there was no need
to keep this list.

2. Add new transport, protocol, and device features as well as support
to introspect vhost-user-gpio devices.

Vhost-user-gpio previously had no support for introspection. Support for
introspecting its vhost-user device is now available in these patches.

3. Move VhostUserProtocolFeature definition to its corresponding header
file (vhost-user.h). Cleanup previous definitions in other files.

VhostUserProtocolFeature was being defined in 3 separate files. Instead
of 3 separate definitions, use one instead and add it to the
vhost-user.h header file.

New virtio transport feature:
-----------------------------
 - VIRTIO_F_RING_RESET

New vhost-user protocol feature:
--------------------------------
 - VHOST_USER_PROTOCOL_F_STATUS

New virtio device features:
---------------------------
virtio-blk:
 - VIRTIO_BLK_F_SECURE_ERASE

virtio-net:
 - VIRTIO_NET_F_NOTF_COAL
 - VIRTIO_NET_F_GUEST_USO4
 - VIRTIO_NET_F_GUEST_USO6
 - VIRTIO_NET_F_HOST_USO

virtio/vhost-user-gpio:
 - VIRTIO_GPIO_F_IRQ
 - VHOST_F_LOG_ALL
 - VHOST_USER_F_PROTOCOL_FEATURES

v3: use recursion and type casting to find realized virtio devices
    remove virtio scmi & bluetooth feature mappings
    revert virtio scmi & bluetooth case changes in qmp_decode_features
    change config define for VIRTIO_GPIO to CONFIG_VHOST_USER_GPIO
    move VhostUserProtocolFeature definition to header file

v2: verify virtio devices via. 'TYPE_VIRTIO_DEVICES'
    verify path is a virtio device before checking if it's realized
    remove 'VIRTIO_BLK_F_ZONED' update (already exists)
    add cover letter

Jonah Palmer (3):
  qmp: remove virtio_list, search QOM tree instead
  qmp: update virtio feature maps, vhost-user-gpio introspection
  vhost-user: move VhostUserProtocolFeature definition to header file

 hw/scsi/vhost-user-scsi.c      |   4 -
 hw/virtio/vhost-user-gpio.c    |   7 ++
 hw/virtio/vhost-user.c         |  21 -----
 hw/virtio/virtio-qmp.c         | 154 ++++++++++++++++-----------------
 hw/virtio/virtio-qmp.h         |   7 --
 hw/virtio/virtio.c             |   6 --
 include/hw/virtio/vhost-user.h |  21 +++++
 7 files changed, 105 insertions(+), 115 deletions(-)

Comments

Michael S. Tsirkin Aug. 3, 2023, 7:50 p.m. UTC | #1
On Thu, Aug 03, 2023 at 10:54:57AM -0400, Jonah Palmer wrote:
> These patches update a few things related to virtio introspection via.
> QMP/HMP commands.
> 
> 1. Remove 'virtio_list' and instead query the QOM composition tree to
> find any active & realized virtio devices.
> 
> The 'virtio_list' was duplicating information about virtio devices that
> was already available in the QOM composition tree, so there was no need
> to keep this list.
> 
> 2. Add new transport, protocol, and device features as well as support
> to introspect vhost-user-gpio devices.
> 
> Vhost-user-gpio previously had no support for introspection. Support for
> introspecting its vhost-user device is now available in these patches.
> 
> 3. Move VhostUserProtocolFeature definition to its corresponding header
> file (vhost-user.h). Cleanup previous definitions in other files.
> 
> VhostUserProtocolFeature was being defined in 3 separate files. Instead
> of 3 separate definitions, use one instead and add it to the
> vhost-user.h header file.
> 
> New virtio transport feature:
> -----------------------------
>  - VIRTIO_F_RING_RESET
> 
> New vhost-user protocol feature:
> --------------------------------
>  - VHOST_USER_PROTOCOL_F_STATUS
> 
> New virtio device features:
> ---------------------------
> virtio-blk:
>  - VIRTIO_BLK_F_SECURE_ERASE
> 
> virtio-net:
>  - VIRTIO_NET_F_NOTF_COAL
>  - VIRTIO_NET_F_GUEST_USO4
>  - VIRTIO_NET_F_GUEST_USO6
>  - VIRTIO_NET_F_HOST_USO
> 
> virtio/vhost-user-gpio:
>  - VIRTIO_GPIO_F_IRQ
>  - VHOST_F_LOG_ALL
>  - VHOST_USER_F_PROTOCOL_FEATURES

VHOST_F_LOG_ALL likely does not make sense.

> v3: use recursion and type casting to find realized virtio devices
>     remove virtio scmi & bluetooth feature mappings
>     revert virtio scmi & bluetooth case changes in qmp_decode_features
>     change config define for VIRTIO_GPIO to CONFIG_VHOST_USER_GPIO
>     move VhostUserProtocolFeature definition to header file
> 
> v2: verify virtio devices via. 'TYPE_VIRTIO_DEVICES'
>     verify path is a virtio device before checking if it's realized
>     remove 'VIRTIO_BLK_F_ZONED' update (already exists)
>     add cover letter
> 
> Jonah Palmer (3):
>   qmp: remove virtio_list, search QOM tree instead
>   qmp: update virtio feature maps, vhost-user-gpio introspection
>   vhost-user: move VhostUserProtocolFeature definition to header file
> 
>  hw/scsi/vhost-user-scsi.c      |   4 -
>  hw/virtio/vhost-user-gpio.c    |   7 ++
>  hw/virtio/vhost-user.c         |  21 -----
>  hw/virtio/virtio-qmp.c         | 154 ++++++++++++++++-----------------
>  hw/virtio/virtio-qmp.h         |   7 --
>  hw/virtio/virtio.c             |   6 --
>  include/hw/virtio/vhost-user.h |  21 +++++
>  7 files changed, 105 insertions(+), 115 deletions(-)
> 
> -- 
> 2.39.3
Jonah Palmer Aug. 4, 2023, 2:27 p.m. UTC | #2
On 8/3/23 15:50, Michael S. Tsirkin wrote:

> On Thu, Aug 03, 2023 at 10:54:57AM -0400, Jonah Palmer wrote:
>> These patches update a few things related to virtio introspection via.
>> QMP/HMP commands.
>>
>> 1. Remove 'virtio_list' and instead query the QOM composition tree to
>> find any active & realized virtio devices.
>>
>> The 'virtio_list' was duplicating information about virtio devices that
>> was already available in the QOM composition tree, so there was no need
>> to keep this list.
>>
>> 2. Add new transport, protocol, and device features as well as support
>> to introspect vhost-user-gpio devices.
>>
>> Vhost-user-gpio previously had no support for introspection. Support for
>> introspecting its vhost-user device is now available in these patches.
>>
>> 3. Move VhostUserProtocolFeature definition to its corresponding header
>> file (vhost-user.h). Cleanup previous definitions in other files.
>>
>> VhostUserProtocolFeature was being defined in 3 separate files. Instead
>> of 3 separate definitions, use one instead and add it to the
>> vhost-user.h header file.
>>
>> New virtio transport feature:
>> -----------------------------
>>   - VIRTIO_F_RING_RESET
>>
>> New vhost-user protocol feature:
>> --------------------------------
>>   - VHOST_USER_PROTOCOL_F_STATUS
>>
>> New virtio device features:
>> ---------------------------
>> virtio-blk:
>>   - VIRTIO_BLK_F_SECURE_ERASE
>>
>> virtio-net:
>>   - VIRTIO_NET_F_NOTF_COAL
>>   - VIRTIO_NET_F_GUEST_USO4
>>   - VIRTIO_NET_F_GUEST_USO6
>>   - VIRTIO_NET_F_HOST_USO
>>
>> virtio/vhost-user-gpio:
>>   - VIRTIO_GPIO_F_IRQ
>>   - VHOST_F_LOG_ALL
>>   - VHOST_USER_F_PROTOCOL_FEATURES
> VHOST_F_LOG_ALL likely does not make sense.
>
Ah, okay. I can remove this in v4.

I'm not very familiar with virtio/vhost-user-gpio other than that
it's a virtual general-purpose I/O controller that maps native
GPIOs to a VM, allowing the VM to perform GPIO operations via. it.

I wasn't sure if the vhost-user version of it would make use of
this feature.

>> v3: use recursion and type casting to find realized virtio devices
>>      remove virtio scmi & bluetooth feature mappings
>>      revert virtio scmi & bluetooth case changes in qmp_decode_features
>>      change config define for VIRTIO_GPIO to CONFIG_VHOST_USER_GPIO
>>      move VhostUserProtocolFeature definition to header file
>>
>> v2: verify virtio devices via. 'TYPE_VIRTIO_DEVICES'
>>      verify path is a virtio device before checking if it's realized
>>      remove 'VIRTIO_BLK_F_ZONED' update (already exists)
>>      add cover letter
>>
>> Jonah Palmer (3):
>>    qmp: remove virtio_list, search QOM tree instead
>>    qmp: update virtio feature maps, vhost-user-gpio introspection
>>    vhost-user: move VhostUserProtocolFeature definition to header file
>>
>>   hw/scsi/vhost-user-scsi.c      |   4 -
>>   hw/virtio/vhost-user-gpio.c    |   7 ++
>>   hw/virtio/vhost-user.c         |  21 -----
>>   hw/virtio/virtio-qmp.c         | 154 ++++++++++++++++-----------------
>>   hw/virtio/virtio-qmp.h         |   7 --
>>   hw/virtio/virtio.c             |   6 --
>>   include/hw/virtio/vhost-user.h |  21 +++++
>>   7 files changed, 105 insertions(+), 115 deletions(-)
>>
>> -- 
>> 2.39.3