qemu-devel
[Top][All Lists]
Advanced

[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 :|




reply via email to

[Prev in Thread] Current Thread [Next in Thread]