[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC][PATCH 0/3] IVSHMEM version 2 device for QEMU
From: |
Liang Yan |
Subject: |
Re: [RFC][PATCH 0/3] IVSHMEM version 2 device for QEMU |
Date: |
Wed, 27 Nov 2019 15:28:27 +0000 |
On 11/11/19 7:57 AM, Jan Kiszka wrote:
> To get the ball rolling after my presentation of the topic at KVM Forum
> [1] and many fruitful discussions around it, this is a first concrete
> code series. As discussed, I'm starting with the IVSHMEM implementation
> of a QEMU device and server. It's RFC because, besides specification and
> implementation details, there will still be some decisions needed about
> how to integrate the new version best into the existing code bases.
>
> If you want to play with this, the basic setup of the shared memory
> device is described in patch 1 and 3. UIO driver and also the
> virtio-ivshmem prototype can be found at
>
> http://git.kiszka.org/?p=linux.git;a=shortlog;h=refs/heads/queues/ivshmem2
>
> Accessing the device via UIO is trivial enough. If you want to use it
> for virtio, this is additionally to the description in patch 3 needed on
> the virtio console backend side:
>
> modprobe uio_ivshmem
> echo "1af4 1110 1af4 1100 ffc003 ffffff" >
> /sys/bus/pci/drivers/uio_ivshmem/new_id
> linux/tools/virtio/virtio-ivshmem-console /dev/uio0
>
> And for virtio block:
>
> echo "1af4 1110 1af4 1100 ffc002 ffffff" >
> /sys/bus/pci/drivers/uio_ivshmem/new_id
> linux/tools/virtio/virtio-ivshmem-console /dev/uio0 /path/to/disk.img
>
> After that, you can start the QEMU frontend instance with the
> virtio-ivshmem driver installed which can use the new /dev/hvc* or
> /dev/vda* as usual.
>
> Any feedback welcome!
Hi, Jan,
I have been playing your code for last few weeks, mostly study and test,
of course. Really nice work. I have a few questions here:
First, qemu part looks good, I tried test between couple VMs, and device
could pop up correctly for all of them, but I had some problems when
trying load driver. For example, if set up two VMs, vm1 and vm2, start
ivshmem server as you suggested. vm1 could load uio_ivshmem and
virtio_ivshmem correctly, vm2 could load uio_ivshmem but could not show
up "/dev/uio0", virtio_ivshmem could not be loaded at all, these still
exist even I switch the load sequence of vm1 and vm2, and sometimes
reset "virtio_ivshmem" could crash both vm1 and vm2. Not quite sure this
is bug or "Ivshmem Mode" issue, but I went through ivshmem-server code,
did not related information.
I started some code work recently, such as fix code style issues and
some work based on above testing, however I know you are also working on
RFC V2, beside the protocol between server-client and client-client is
not finalized yet either, things may change, so much appreciate if you
could squeeze me into your develop schedule and share with me some
plans, :-) Maybe I could send some pull request in your github repo?
I personally like this project a lot, there would be a lot of potential
and user case for it, especially some devices like
ivshmem-net/ivshmem-block. Anyway, thanks for adding me to the list, and
looking forward to your reply.
Best,
Liang
>
> Jan
>
> PS: Let me know if I missed someone potentially interested in this topic
> on CC - or if you would like to be dropped from the list.
>
> PPS: The Jailhouse queues are currently out of sync /wrt minor details
> of this one, primarily the device ID. Will update them when the general
> direction is clear.
>
> [1] https://kvmforum2019.sched.com/event/TmxI
>
> Jan Kiszka (3):
> hw/misc: Add implementation of ivshmem revision 2 device
> docs/specs: Add specification of ivshmem device revision 2
> contrib: Add server for ivshmem revision 2
>
> Makefile | 3 +
> Makefile.objs | 1 +
> configure | 1 +
> contrib/ivshmem2-server/Makefile.objs | 1 +
> contrib/ivshmem2-server/ivshmem2-server.c | 462 ++++++++++++
> contrib/ivshmem2-server/ivshmem2-server.h | 158 +++++
> contrib/ivshmem2-server/main.c | 313 +++++++++
> docs/specs/ivshmem-2-device-spec.md | 333 +++++++++
> hw/misc/Makefile.objs | 2 +-
> hw/misc/ivshmem2.c | 1091
> +++++++++++++++++++++++++++++
> include/hw/misc/ivshmem2.h | 48 ++
> 11 files changed, 2412 insertions(+), 1 deletion(-)
> create mode 100644 contrib/ivshmem2-server/Makefile.objs
> create mode 100644 contrib/ivshmem2-server/ivshmem2-server.c
> create mode 100644 contrib/ivshmem2-server/ivshmem2-server.h
> create mode 100644 contrib/ivshmem2-server/main.c
> create mode 100644 docs/specs/ivshmem-2-device-spec.md
> create mode 100644 hw/misc/ivshmem2.c
> create mode 100644 include/hw/misc/ivshmem2.h
>
[RFC][PATCH 3/3] contrib: Add server for ivshmem revision 2, Jan Kiszka, 2019/11/11
[RFC][PATCH 1/3] hw/misc: Add implementation of ivshmem revision 2 device, Jan Kiszka, 2019/11/11
Re: [RFC][PATCH 0/3] IVSHMEM version 2 device for QEMU, no-reply, 2019/11/11
Re: [RFC][PATCH 0/3] IVSHMEM version 2 device for QEMU,
Liang Yan <=