From: Markus Armbruster <armbru@redhat.com>
To: Stefano Garzarella <sgarzare@redhat.com>
Cc: mst@redhat.com, qemu-devel@nongnu.org, qemu-block@nongnu.org,
"Hanna Reitz" <hreitz@redhat.com>,
"Brad Smith" <brad@comstyle.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Laurent Vivier" <lvivier@redhat.com>,
gmaglione@redhat.com, stefanha@redhat.com,
"Coiby Xu" <Coiby.Xu@gmail.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
slp@redhat.com, "Igor Mammedov" <imammedo@redhat.com>,
"Raphael Norwitz" <raphael@enfabrica.net>,
"Thomas Huth" <thuth@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"David Hildenbrand" <david@redhat.com>,
"Kevin Wolf" <kwolf@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Jason Wang" <jasowang@redhat.com>,
"Eric Blake" <eblake@redhat.com>
Subject: Re: [PATCH RESEND v7 10/12] hostmem: add a new memory backend based on POSIX shm_open()
Date: Wed, 12 Jun 2024 15:20:48 +0200 [thread overview]
Message-ID: <87frtifgb3.fsf@pond.sub.org> (raw)
In-Reply-To: <20240612130140.63004-11-sgarzare@redhat.com> (Stefano Garzarella's message of "Wed, 12 Jun 2024 15:01:38 +0200")
Stefano Garzarella <sgarzare@redhat.com> writes:
> shm_open() creates and opens a new POSIX shared memory object.
> A POSIX shared memory object allows creating memory backend with an
> associated file descriptor that can be shared with external processes
> (e.g. vhost-user).
>
> The new `memory-backend-shm` can be used as an alternative when
> `memory-backend-memfd` is not available (Linux only), since shm_open()
> should be provided by any POSIX-compliant operating system.
>
> This backend mimics memfd, allocating memory that is practically
> anonymous. In theory shm_open() requires a name, but this is allocated
> for a short time interval and shm_unlink() is called right after
> shm_open(). After that, only fd is shared with external processes
> (e.g., vhost-user) as if it were associated with anonymous memory.
>
> In the future we may also allow the user to specify the name to be
> passed to shm_open(), but for now we keep the backend simple, mimicking
> anonymous memory such as memfd.
>
> Acked-by: David Hildenbrand <david@redhat.com>
> Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
[...]
> diff --git a/qapi/qom.json b/qapi/qom.json
> index 9b8f6a7ab5..94e4458288 100644
> --- a/qapi/qom.json
> +++ b/qapi/qom.json
> @@ -601,8 +601,8 @@
> #
> # @share: if false, the memory is private to QEMU; if true, it is
> # shared (default false for backends memory-backend-file and
> -# memory-backend-ram, true for backends memory-backend-epc and
> -# memory-backend-memfd)
> +# memory-backend-ram, true for backends memory-backend-epc,
> +# memory-backend-memfd, and memory-backend-shm)
> #
> # @reserve: if true, reserve swap space (or huge pages) if applicable
> # (default: true) (since 6.1)
> @@ -721,6 +721,22 @@
> '*hugetlbsize': 'size',
> '*seal': 'bool' } }
>
> +##
> +# @MemoryBackendShmProperties:
> +#
> +# Properties for memory-backend-shm objects.
> +#
> +# Setting @share boolean option (defined in the base type) to false
> +# will cause a failure during allocation because it is not
> +# supported by this backend.
This is QMP reference documentation. "Failure during allocation" feels
like unnecessary detail there. Maybe "This memory backend support only
shared memory, which is the default."
> +#
> +# Since: 9.1
> +##
> +{ 'struct': 'MemoryBackendShmProperties',
> + 'base': 'MemoryBackendProperties',
> + 'data': { },
> + 'if': 'CONFIG_POSIX' }
> +
> ##
> # @MemoryBackendEpcProperties:
> #
> @@ -1049,6 +1065,8 @@
> { 'name': 'memory-backend-memfd',
> 'if': 'CONFIG_LINUX' },
> 'memory-backend-ram',
> + { 'name': 'memory-backend-shm',
> + 'if': 'CONFIG_POSIX' },
> 'pef-guest',
> { 'name': 'pr-manager-helper',
> 'if': 'CONFIG_LINUX' },
> @@ -1121,6 +1139,8 @@
> 'memory-backend-memfd': { 'type': 'MemoryBackendMemfdProperties',
> 'if': 'CONFIG_LINUX' },
> 'memory-backend-ram': 'MemoryBackendProperties',
> + 'memory-backend-shm': { 'type': 'MemoryBackendShmProperties',
> + 'if': 'CONFIG_POSIX' },
> 'pr-manager-helper': { 'type': 'PrManagerHelperProperties',
> 'if': 'CONFIG_LINUX' },
> 'qtest': 'QtestProperties',
[...]
Other than that, QAPI schema
Acked-by: Markus Armbruster <armbru@redhat.com>
next prev parent reply other threads:[~2024-06-12 13:21 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-12 13:01 [PATCH RESEND v7 00/12] vhost-user: support any POSIX system (tested on macOS, FreeBSD, OpenBSD) Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 01/12] libvhost-user: set msg.msg_control to NULL when it is empty Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 02/12] libvhost-user: fail vu_message_write() if sendmsg() is failing Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 03/12] libvhost-user: mask F_INFLIGHT_SHMFD if memfd is not supported Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 04/12] vhost-user-server: do not set memory fd non-blocking Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 05/12] contrib/vhost-user-blk: fix bind() using the right size of the address Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 06/12] contrib/vhost-user-*: use QEMU bswap helper functions Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 07/12] vhost-user: enable frontends on any POSIX system Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 08/12] libvhost-user: enable it " Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 09/12] contrib/vhost-user-blk: " Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 10/12] hostmem: add a new memory backend based on POSIX shm_open() Stefano Garzarella
2024-06-12 13:20 ` Markus Armbruster [this message]
2024-06-13 11:31 ` Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 11/12] tests/qtest/vhost-user-blk-test: use memory-backend-shm Stefano Garzarella
2024-06-12 13:01 ` [PATCH RESEND v7 12/12] tests/qtest/vhost-user-test: add a test case for memory-backend-shm Stefano Garzarella
2024-06-17 10:35 ` [PATCH RESEND v7 00/12] vhost-user: support any POSIX system (tested on macOS, FreeBSD, OpenBSD) Stefano Garzarella
2024-06-17 12:02 ` Markus Armbruster
2024-06-17 12:59 ` Stefano Garzarella
2024-06-17 13:42 ` Michael S. Tsirkin
2024-06-17 14:36 ` Stefano Garzarella
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=87frtifgb3.fsf@pond.sub.org \
--to=armbru@redhat.com \
--cc=Coiby.Xu@gmail.com \
--cc=berrange@redhat.com \
--cc=brad@comstyle.com \
--cc=david@redhat.com \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=gmaglione@redhat.com \
--cc=hreitz@redhat.com \
--cc=imammedo@redhat.com \
--cc=jasowang@redhat.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=lvivier@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=raphael@enfabrica.net \
--cc=sgarzare@redhat.com \
--cc=slp@redhat.com \
--cc=stefanha@redhat.com \
--cc=thuth@redhat.com \
/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.