From: Stefan Hajnoczi <stefanha@redhat.com>
To: Mattias Nissler <mnissler@rivosinc.com>
Cc: qemu-devel@nongnu.org, john.levon@nutanix.com,
"Elena Ufimtseva" <elena.ufimtseva@oracle.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"David Hildenbrand" <david@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Jagannathan Raman" <jag.raman@oracle.com>,
"Peter Xu" <peterx@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [PATCH v3 0/5] Support message-based DMA in vfio-user server
Date: Thu, 14 Sep 2023 10:39:12 -0400 [thread overview]
Message-ID: <20230914143912.GA1066211@fedora> (raw)
In-Reply-To: <20230907130410.498935-1-mnissler@rivosinc.com>
[-- Attachment #1: Type: text/plain, Size: 3374 bytes --]
On Thu, Sep 07, 2023 at 06:04:05AM -0700, Mattias Nissler wrote:
> This series adds basic support for message-based DMA in qemu's vfio-user
> server. This is useful for cases where the client does not provide file
> descriptors for accessing system memory via memory mappings. My motivating use
> case is to hook up device models as PCIe endpoints to a hardware design. This
> works by bridging the PCIe transaction layer to vfio-user, and the endpoint
> does not access memory directly, but sends memory requests TLPs to the hardware
> design in order to perform DMA.
>
> Note that there is some more work required on top of this series to get
> message-based DMA to really work well:
>
> * libvfio-user has a long-standing issue where socket communication gets messed
> up when messages are sent from both ends at the same time. See
> https://github.com/nutanix/libvfio-user/issues/279 for more details. I've
> been engaging there and a fix is in review.
>
> * qemu currently breaks down DMA accesses into chunks of size 8 bytes at
> maximum, each of which will be handled in a separate vfio-user DMA request
> message. This is quite terrible for large DMA accesses, such as when nvme
> reads and writes page-sized blocks for example. Thus, I would like to improve
> qemu to be able to perform larger accesses, at least for indirect memory
> regions. I have something working locally, but since this will likely result
> in more involved surgery and discussion, I am leaving this to be addressed in
> a separate patch.
Have you tried setting mr->ops->valid.max_access_size to something like
64 KB?
Paolo: Any suggestions for increasing DMA transaction sizes?
Stefan
>
> Changes from v1:
>
> * Address Stefan's review comments. In particular, enforce an allocation limit
> and don't drop the map client callbacks given that map requests can fail when
> hitting size limits.
>
> * libvfio-user version bump now included in the series.
>
> * Tested as well on big-endian s390x. This uncovered another byte order issue
> in vfio-user server code that I've included a fix for.
>
> Changes from v2:
>
> * Add a preparatory patch to make bounce buffering an AddressSpace-specific
> concept.
>
> * The total buffer size limit parameter is now per AdressSpace and can be
> configured for PCIDevice via a property.
>
> * Store a magic value in first bytes of bounce buffer struct as a best effort
> measure to detect invalid pointers in address_space_unmap.
>
> Mattias Nissler (5):
> softmmu: Per-AddressSpace bounce buffering
> softmmu: Support concurrent bounce buffers
> Update subprojects/libvfio-user
> vfio-user: Message-based DMA support
> vfio-user: Fix config space access byte order
>
> hw/pci/pci.c | 8 ++
> hw/remote/trace-events | 2 +
> hw/remote/vfio-user-obj.c | 88 +++++++++++++++++--
> include/exec/cpu-common.h | 2 -
> include/exec/memory.h | 39 ++++++++-
> include/hw/pci/pci_device.h | 3 +
> softmmu/dma-helpers.c | 4 +-
> softmmu/memory.c | 4 +
> softmmu/physmem.c | 155 ++++++++++++++++++----------------
> subprojects/libvfio-user.wrap | 2 +-
> 10 files changed, 220 insertions(+), 87 deletions(-)
>
> --
> 2.34.1
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2023-09-14 14:40 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-07 13:04 [PATCH v3 0/5] Support message-based DMA in vfio-user server Mattias Nissler
2023-09-07 13:04 ` [PATCH v3 1/5] softmmu: Per-AddressSpace bounce buffering Mattias Nissler
2023-09-13 18:30 ` Peter Xu
2023-09-15 8:37 ` Mattias Nissler
2023-09-19 15:54 ` Mattias Nissler
2023-09-07 13:04 ` [PATCH v3 2/5] softmmu: Support concurrent bounce buffers Mattias Nissler
2023-09-13 19:11 ` Peter Xu
2023-09-15 9:32 ` Mattias Nissler
2023-09-15 15:57 ` Peter Xu
2023-09-14 18:49 ` Stefan Hajnoczi
2023-09-15 9:54 ` Mattias Nissler
2023-09-15 20:40 ` Stefan Hajnoczi
2023-09-07 13:04 ` [PATCH v3 3/5] Update subprojects/libvfio-user Mattias Nissler
2023-09-07 13:04 ` [PATCH v3 4/5] vfio-user: Message-based DMA support Mattias Nissler
2023-09-14 19:04 ` Stefan Hajnoczi
2023-09-15 9:58 ` Mattias Nissler
2023-09-07 13:04 ` [PATCH v3 5/5] vfio-user: Fix config space access byte order Mattias Nissler
2023-09-14 19:34 ` Stefan Hajnoczi
2023-09-14 20:29 ` Philippe Mathieu-Daudé
2023-09-14 20:32 ` Stefan Hajnoczi
2023-09-15 10:24 ` Mattias Nissler
2023-09-14 14:39 ` Stefan Hajnoczi [this message]
2023-09-15 8:23 ` [PATCH v3 0/5] Support message-based DMA in vfio-user server Mattias Nissler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230914143912.GA1066211@fedora \
--to=stefanha@redhat.com \
--cc=david@redhat.com \
--cc=elena.ufimtseva@oracle.com \
--cc=jag.raman@oracle.com \
--cc=john.levon@nutanix.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mnissler@rivosinc.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.