[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH V7 10/29] machine: memfd-alloc option
From: |
Daniel P . Berrangé |
Subject: |
Re: [PATCH V7 10/29] machine: memfd-alloc option |
Date: |
Fri, 11 Mar 2022 10:08:57 +0000 |
User-agent: |
Mutt/2.1.5 (2021-12-30) |
On Mon, Mar 07, 2022 at 09:41:44AM -0500, Steven Sistare wrote:
> On 3/4/2022 5:41 AM, Igor Mammedov wrote:
> > On Thu, 3 Mar 2022 12:21:15 -0500
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >
> >> On Wed, Dec 22, 2021 at 11:05:15AM -0800, Steve Sistare wrote:
> >>> Allocate anonymous memory using memfd_create if the memfd-alloc machine
> >>> option is set.
> >>>
> >>> Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
> >>> ---
> >>> hw/core/machine.c | 19 +++++++++++++++++++
> >>> include/hw/boards.h | 1 +
> >>> qemu-options.hx | 6 ++++++
> >>> softmmu/physmem.c | 47 ++++++++++++++++++++++++++++++++++++++---------
> >>> softmmu/vl.c | 1 +
> >>> trace-events | 1 +
> >>> util/qemu-config.c | 4 ++++
> >>> 7 files changed, 70 insertions(+), 9 deletions(-)
> >>>
> >>> diff --git a/hw/core/machine.c b/hw/core/machine.c
> >>> index 53a99ab..7739d88 100644
> >>> --- a/hw/core/machine.c
> >>> +++ b/hw/core/machine.c
> >>> @@ -392,6 +392,20 @@ static void machine_set_mem_merge(Object *obj, bool
> >>> value, Error **errp)
> >>> ms->mem_merge = value;
> >>> }
> >>>
> >>> +static bool machine_get_memfd_alloc(Object *obj, Error **errp)
> >>> +{
> >>> + MachineState *ms = MACHINE(obj);
> >>> +
> >>> + return ms->memfd_alloc;
> >>> +}
> >>> +
> >>> +static void machine_set_memfd_alloc(Object *obj, bool value, Error
> >>> **errp)
> >>> +{
> >>> + MachineState *ms = MACHINE(obj);
> >>> +
> >>> + ms->memfd_alloc = value;
> >>> +}
> >>> +
> >>> static bool machine_get_usb(Object *obj, Error **errp)
> >>> {
> >>> MachineState *ms = MACHINE(obj);
> >>> @@ -829,6 +843,11 @@ static void machine_class_init(ObjectClass *oc, void
> >>> *data)
> >>> object_class_property_set_description(oc, "mem-merge",
> >>> "Enable/disable memory merge support");
> >>>
> >>> + object_class_property_add_bool(oc, "memfd-alloc",
> >>> + machine_get_memfd_alloc, machine_set_memfd_alloc);
> >>> + object_class_property_set_description(oc, "memfd-alloc",
> >>> + "Enable/disable allocating anonymous memory using memfd_create");
> >>> +
> >>> object_class_property_add_bool(oc, "usb",
> >>> machine_get_usb, machine_set_usb);
> >>> object_class_property_set_description(oc, "usb",
> >>> diff --git a/include/hw/boards.h b/include/hw/boards.h
> >>> index 9c1c190..a57d7a0 100644
> >>> --- a/include/hw/boards.h
> >>> +++ b/include/hw/boards.h
> >>> @@ -327,6 +327,7 @@ struct MachineState {
> >>> char *dt_compatible;
> >>> bool dump_guest_core;
> >>> bool mem_merge;
> >>> + bool memfd_alloc;
> >>> bool usb;
> >>> bool usb_disabled;
> >>> char *firmware;
> >>> diff --git a/qemu-options.hx b/qemu-options.hx
> >>> index 7d47510..33c8173 100644
> >>> --- a/qemu-options.hx
> >>> +++ b/qemu-options.hx
> >>> @@ -30,6 +30,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
> >>> " vmport=on|off|auto controls emulation of vmport
> >>> (default: auto)\n"
> >>> " dump-guest-core=on|off include guest memory in a
> >>> core dump (default=on)\n"
> >>> " mem-merge=on|off controls memory merge support
> >>> (default: on)\n"
> >>> + " memfd-alloc=on|off controls allocating anonymous
> >>> guest RAM using memfd_create (default: off)\n"
> >>
> >> Question: are there any disadvantages associated with using
> >> memfd_create? I guess we are using up an fd, but that seems minor. Any
> >> reason not to set to on by default? maybe with a fallback option to
> >> disable that?
>
> Old Linux host kernels, circa 4.1, do not support huge pages for shared
> memory.
That doesn't matter, as we don't support any distros with kernels that old
https://www.qemu.org/docs/master/about/build-platforms.html
We can assume something around kernel 4.18 I believe.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- Re: [PATCH V7 10/29] machine: memfd-alloc option, (continued)
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Igor Mammedov, 2022/03/04
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Steven Sistare, 2022/03/07
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Michael S. Tsirkin, 2022/03/08
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Igor Mammedov, 2022/03/08
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Steven Sistare, 2022/03/10
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Igor Mammedov, 2022/03/10
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Steven Sistare, 2022/03/10
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Steven Sistare, 2022/03/10
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Igor Mammedov, 2022/03/11
- Re: [PATCH V7 10/29] machine: memfd-alloc option, Steven Sistare, 2022/03/29
- Re: [PATCH V7 10/29] machine: memfd-alloc option,
Daniel P . Berrangé <=
Re: [PATCH V7 10/29] machine: memfd-alloc option, David Hildenbrand, 2022/03/11
Re: [PATCH V7 10/29] machine: memfd-alloc option, David Hildenbrand, 2022/03/11