mbox series

[0/4] Add SCMI vhost-user VIRTIO device

Message ID cover.1685476786.git.mzamazal@redhat.com
Headers show
Series Add SCMI vhost-user VIRTIO device | expand

Message

Milan Zamazal May 30, 2023, 7:59 p.m. UTC
This patch series adds a vhost-user VIRTIO device for SCMI.
It's similar to other similar vhost-user VIRTIO devices.

I'm aware of the work in progress by Alex Bennée to simplify similar devices
and avoid excessive code duplication.  I think the SCMI device support
doesn't bring anything special and it can be rebased on the given work
if/once it is merged.

Milan Zamazal (4):
  hw/virtio: Add boilerplate for vhost-user-scmi device
  hw/virtio: Add vhost-user-scmi-pci boilerplate
  tests/qtest: Fix a comment typo in vhost-user-test.c
  tests/qtest: enable tests for virtio-scmi

 MAINTAINERS                         |   7 +
 hw/virtio/Kconfig                   |   5 +
 hw/virtio/meson.build               |   2 +
 hw/virtio/vhost-user-scmi-pci.c     |  68 +++++++
 hw/virtio/vhost-user-scmi.c         | 306 ++++++++++++++++++++++++++++
 include/hw/virtio/vhost-user-scmi.h |  30 +++
 tests/qtest/libqos/meson.build      |   1 +
 tests/qtest/libqos/virtio-scmi.c    | 174 ++++++++++++++++
 tests/qtest/libqos/virtio-scmi.h    |  34 ++++
 tests/qtest/vhost-user-test.c       |  46 ++++-
 10 files changed, 672 insertions(+), 1 deletion(-)
 create mode 100644 hw/virtio/vhost-user-scmi-pci.c
 create mode 100644 hw/virtio/vhost-user-scmi.c
 create mode 100644 include/hw/virtio/vhost-user-scmi.h
 create mode 100644 tests/qtest/libqos/virtio-scmi.c
 create mode 100644 tests/qtest/libqos/virtio-scmi.h

Comments

Alex Bennée May 31, 2023, 11:19 a.m. UTC | #1
Milan Zamazal <mzamazal@redhat.com> writes:

> This patch series adds a vhost-user VIRTIO device for SCMI.
> It's similar to other similar vhost-user VIRTIO devices.
>
> I'm aware of the work in progress by Alex Bennée to simplify similar devices
> and avoid excessive code duplication.  I think the SCMI device support
> doesn't bring anything special and it can be rebased on the given work
> if/once it is merged.

\o/ - I'll try and get the next iteration done in the next few weeks.
Out of interest have you tested your scmi backend with those patches? Oh
and also which backend are you using?

Vincent did a bunch of work over the last year or so on SCMI although in
his case the backend was a RTOS running in a separate domain using some
shared memory between the SCMI domain and a couple of guests.

> Milan Zamazal (4):
>   hw/virtio: Add boilerplate for vhost-user-scmi device
>   hw/virtio: Add vhost-user-scmi-pci boilerplate
>   tests/qtest: Fix a comment typo in vhost-user-test.c
>   tests/qtest: enable tests for virtio-scmi
>
>  MAINTAINERS                         |   7 +
>  hw/virtio/Kconfig                   |   5 +
>  hw/virtio/meson.build               |   2 +
>  hw/virtio/vhost-user-scmi-pci.c     |  68 +++++++
>  hw/virtio/vhost-user-scmi.c         | 306 ++++++++++++++++++++++++++++
>  include/hw/virtio/vhost-user-scmi.h |  30 +++
>  tests/qtest/libqos/meson.build      |   1 +
>  tests/qtest/libqos/virtio-scmi.c    | 174 ++++++++++++++++
>  tests/qtest/libqos/virtio-scmi.h    |  34 ++++
>  tests/qtest/vhost-user-test.c       |  46 ++++-
>  10 files changed, 672 insertions(+), 1 deletion(-)
>  create mode 100644 hw/virtio/vhost-user-scmi-pci.c
>  create mode 100644 hw/virtio/vhost-user-scmi.c
>  create mode 100644 include/hw/virtio/vhost-user-scmi.h
>  create mode 100644 tests/qtest/libqos/virtio-scmi.c
>  create mode 100644 tests/qtest/libqos/virtio-scmi.h
Milan Zamazal May 31, 2023, 11:57 a.m. UTC | #2
Alex Bennée <alex.bennee@linaro.org> writes:

> Milan Zamazal <mzamazal@redhat.com> writes:
>
>> This patch series adds a vhost-user VIRTIO device for SCMI.
>> It's similar to other similar vhost-user VIRTIO devices.
>>
>> I'm aware of the work in progress by Alex Bennée to simplify similar devices
>> and avoid excessive code duplication.  I think the SCMI device support
>> doesn't bring anything special and it can be rebased on the given work
>> if/once it is merged.
>
> \o/ - I'll try and get the next iteration done in the next few weeks.

Great, looking forward.

> Out of interest have you tested your scmi backend with those patches? Oh
> and also which backend are you using?

I have tested the patches with my proof-of-concept SCMI backend
(emulating a fake sensor) based on rust-vmm and a Linux guest OS.  I
plan to change the prototype into something publishable in the next
weeks and to post patches to rust-vmm/vhost-device.

> Vincent did a bunch of work over the last year or so on SCMI although in
> his case the backend was a RTOS running in a separate domain using some
> shared memory between the SCMI domain and a couple of guests.

I have seen recordings of some related presentations.  The work is
primarily based on crosvm, right?  I'd be interested in what kind of
SCMI interface the domain provides and whether it would make sense to be
able to connect it with the QEMU SCMI device via some vhost-user daemon,
an already existing one, if any, and/or the one I work on.

>> Milan Zamazal (4):
>>   hw/virtio: Add boilerplate for vhost-user-scmi device
>>   hw/virtio: Add vhost-user-scmi-pci boilerplate
>>   tests/qtest: Fix a comment typo in vhost-user-test.c
>>   tests/qtest: enable tests for virtio-scmi
>>
>>  MAINTAINERS                         |   7 +
>>  hw/virtio/Kconfig                   |   5 +
>>  hw/virtio/meson.build               |   2 +
>>  hw/virtio/vhost-user-scmi-pci.c     |  68 +++++++
>>  hw/virtio/vhost-user-scmi.c         | 306 ++++++++++++++++++++++++++++
>>  include/hw/virtio/vhost-user-scmi.h |  30 +++
>>  tests/qtest/libqos/meson.build      |   1 +
>>  tests/qtest/libqos/virtio-scmi.c    | 174 ++++++++++++++++
>>  tests/qtest/libqos/virtio-scmi.h    |  34 ++++
>>  tests/qtest/vhost-user-test.c       |  46 ++++-
>>  10 files changed, 672 insertions(+), 1 deletion(-)
>>  create mode 100644 hw/virtio/vhost-user-scmi-pci.c
>>  create mode 100644 hw/virtio/vhost-user-scmi.c
>>  create mode 100644 include/hw/virtio/vhost-user-scmi.h
>>  create mode 100644 tests/qtest/libqos/virtio-scmi.c
>>  create mode 100644 tests/qtest/libqos/virtio-scmi.h
Vincent Guittot May 31, 2023, 12:48 p.m. UTC | #3
On Wed, 31 May 2023 at 13:57, Milan Zamazal <mzamazal@redhat.com> wrote:
>
> Alex Bennée <alex.bennee@linaro.org> writes:
>
> > Milan Zamazal <mzamazal@redhat.com> writes:
> >
> >> This patch series adds a vhost-user VIRTIO device for SCMI.
> >> It's similar to other similar vhost-user VIRTIO devices.
> >>
> >> I'm aware of the work in progress by Alex Bennée to simplify similar devices
> >> and avoid excessive code duplication.  I think the SCMI device support
> >> doesn't bring anything special and it can be rebased on the given work
> >> if/once it is merged.
> >
> > \o/ - I'll try and get the next iteration done in the next few weeks.
>
> Great, looking forward.
>
> > Out of interest have you tested your scmi backend with those patches? Oh
> > and also which backend are you using?
>
> I have tested the patches with my proof-of-concept SCMI backend
> (emulating a fake sensor) based on rust-vmm and a Linux guest OS.  I
> plan to change the prototype into something publishable in the next
> weeks and to post patches to rust-vmm/vhost-device.
>
> > Vincent did a bunch of work over the last year or so on SCMI although in
> > his case the backend was a RTOS running in a separate domain using some
> > shared memory between the SCMI domain and a couple of guests.
>
> I have seen recordings of some related presentations.  The work is
> primarily based on crosvm, right?  I'd be interested in what kind of

I have used qemu for my tests

> SCMI interface the domain provides and whether it would make sense to be
> able to connect it with the QEMU SCMI device via some vhost-user daemon,
> an already existing one, if any, and/or the one I work on.

My PoC is based on the SCP-firmware that is usually running on a
dedicated power coprocessor. We have extended it to run in several
env. The PoC runs the SCP firmware in a VM and uses a vhost user scmi
bridge to connect the guest vm with this virtual power coprocessor.
One reason for using SCP-firmware is that It follows SCMI specs and
its updates so I don't have to re-implement it myself and can leverage
on their devs

For test purpose I also have enabled it as a simple linux vhost user daemon

>
> >> Milan Zamazal (4):
> >>   hw/virtio: Add boilerplate for vhost-user-scmi device
> >>   hw/virtio: Add vhost-user-scmi-pci boilerplate
> >>   tests/qtest: Fix a comment typo in vhost-user-test.c
> >>   tests/qtest: enable tests for virtio-scmi
> >>
> >>  MAINTAINERS                         |   7 +
> >>  hw/virtio/Kconfig                   |   5 +
> >>  hw/virtio/meson.build               |   2 +
> >>  hw/virtio/vhost-user-scmi-pci.c     |  68 +++++++
> >>  hw/virtio/vhost-user-scmi.c         | 306 ++++++++++++++++++++++++++++
> >>  include/hw/virtio/vhost-user-scmi.h |  30 +++
> >>  tests/qtest/libqos/meson.build      |   1 +
> >>  tests/qtest/libqos/virtio-scmi.c    | 174 ++++++++++++++++
> >>  tests/qtest/libqos/virtio-scmi.h    |  34 ++++
> >>  tests/qtest/vhost-user-test.c       |  46 ++++-
> >>  10 files changed, 672 insertions(+), 1 deletion(-)
> >>  create mode 100644 hw/virtio/vhost-user-scmi-pci.c
> >>  create mode 100644 hw/virtio/vhost-user-scmi.c
> >>  create mode 100644 include/hw/virtio/vhost-user-scmi.h
> >>  create mode 100644 tests/qtest/libqos/virtio-scmi.c
> >>  create mode 100644 tests/qtest/libqos/virtio-scmi.h
>