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

Milan Zamazal posted 4 patches 11 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/cover.1685476786.git.mzamazal@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>
There is a newer version of this series
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
[PATCH 0/4] Add SCMI vhost-user VIRTIO device
Posted by Milan Zamazal 11 months, 1 week ago
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

-- 
2.38.5
Re: [PATCH 0/4] Add SCMI vhost-user VIRTIO device
Posted by Alex Bennée 11 months, 1 week ago
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


-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro
Re: [PATCH 0/4] Add SCMI vhost-user VIRTIO device
Posted by Milan Zamazal 11 months, 1 week ago
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
Re: [PATCH 0/4] Add SCMI vhost-user VIRTIO device
Posted by Vincent Guittot 11 months, 1 week ago
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
>