All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: pasic@linux.ibm.com, Paolo Bonzini <pbonzini@redhat.com>,
	philmd@redhat.com, ehabkost@redhat.com
Subject: [PATCH v5 03/79] machine: alias -mem-path and -mem-prealloc into memory-foo backend
Date: Mon, 17 Feb 2020 12:33:36 -0500	[thread overview]
Message-ID: <20200217173452.15243-4-imammedo@redhat.com> (raw)
In-Reply-To: <20200217173452.15243-1-imammedo@redhat.com>

Allow machine to opt in for hostmem backend based initial RAM
even if user uses old -mem-path/prealloc options by providing
  MachineClass::default_ram_id
Follow up patches will incrementally convert machines to new API,
by dropping memory_region_allocate_system_memory() and setting
default_ram_id that board used to use before conversion to keep
migration stream the same.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v3:
   * rename "ram-memdev" property to "memory-backend"
     (Paolo Bonzini <pbonzini@redhat.com>)
v4:
   * previous patch changed memory-backend property from link
     to string to allow for delayed backend creation, when
     backend comes explicitly from CLI.
     So s/object_property_set_link()/object_property_set_str()/
     to account for that.
v5:
   * add comment clarifaing that MachineClass::default_ram_id will
     serve as a way to enable "-m" support

CC: ehabkost@redhat.com
CC: pbonzini@redhat.com
CC: philmd@redhat.com
CC: pasic@linux.ibm.com
---
 include/hw/boards.h      |  8 ++++++++
 include/sysemu/hostmem.h | 16 ++++++++++++++++
 backends/hostmem-file.c  |  7 -------
 backends/hostmem-ram.c   |  2 --
 vl.c                     | 25 +++++++++++++++++++++++++
 5 files changed, 49 insertions(+), 9 deletions(-)

diff --git a/include/hw/boards.h b/include/hw/boards.h
index 7b4b6b79d7..8e536cafb2 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -170,6 +170,13 @@ typedef struct {
  *    false is returned, an error must be set to show the reason of
  *    the rejection.  If the hook is not provided, all hotplug will be
  *    allowed.
+ * @default_ram_id:
+ *    Specifies inital RAM MemoryRegion name to be used for default backend
+ *    creation if user explicitly hasn't specified backend with "memory-backend"
+ *    property.
+ *    It also will be used as a way to optin into "-m" option support.
+ *    If it's not set by board, '-m' will be ignored and generic code will
+ *    not create default RAM MemoryRegion.
  */
 struct MachineClass {
     /*< private >*/
@@ -226,6 +233,7 @@ struct MachineClass {
     bool nvdimm_supported;
     bool numa_mem_supported;
     bool auto_enable_numa;
+    const char *default_ram_id;
 
     HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
                                            DeviceState *dev);
diff --git a/include/sysemu/hostmem.h b/include/sysemu/hostmem.h
index 4dbdadd39e..5db0d668ec 100644
--- a/include/sysemu/hostmem.h
+++ b/include/sysemu/hostmem.h
@@ -27,6 +27,22 @@
 #define MEMORY_BACKEND_CLASS(klass) \
     OBJECT_CLASS_CHECK(HostMemoryBackendClass, (klass), TYPE_MEMORY_BACKEND)
 
+/* hostmem-ram.c */
+/**
+ * @TYPE_MEMORY_BACKEND_RAM:
+ * name of backend that uses mmap on the anonymous RAM
+ */
+
+#define TYPE_MEMORY_BACKEND_RAM "memory-backend-ram"
+
+/* hostmem-file.c */
+/**
+ * @TYPE_MEMORY_BACKEND_FILE:
+ * name of backend that uses mmap on a file descriptor
+ */
+#define TYPE_MEMORY_BACKEND_FILE "memory-backend-file"
+
+typedef struct HostMemoryBackend HostMemoryBackend;
 typedef struct HostMemoryBackendClass HostMemoryBackendClass;
 
 /**
diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c
index be64020746..cb319a9157 100644
--- a/backends/hostmem-file.c
+++ b/backends/hostmem-file.c
@@ -18,13 +18,6 @@
 #include "sysemu/sysemu.h"
 #include "qom/object_interfaces.h"
 
-/* hostmem-file.c */
-/**
- * @TYPE_MEMORY_BACKEND_FILE:
- * name of backend that uses mmap on a file descriptor
- */
-#define TYPE_MEMORY_BACKEND_FILE "memory-backend-file"
-
 #define MEMORY_BACKEND_FILE(obj) \
     OBJECT_CHECK(HostMemoryBackendFile, (obj), TYPE_MEMORY_BACKEND_FILE)
 
diff --git a/backends/hostmem-ram.c b/backends/hostmem-ram.c
index 6aab8d3a73..5cc53e76c9 100644
--- a/backends/hostmem-ram.c
+++ b/backends/hostmem-ram.c
@@ -16,8 +16,6 @@
 #include "qemu/module.h"
 #include "qom/object_interfaces.h"
 
-#define TYPE_MEMORY_BACKEND_RAM "memory-backend-ram"
-
 static void
 ram_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
 {
diff --git a/vl.c b/vl.c
index 794f2e5733..4dc4803611 100644
--- a/vl.c
+++ b/vl.c
@@ -75,6 +75,7 @@ int main(int argc, char **argv)
 #include "ui/input.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/numa.h"
+#include "sysemu/hostmem.h"
 #include "exec/gdbstub.h"
 #include "qemu/timer.h"
 #include "chardev/char.h"
@@ -2805,6 +2806,26 @@ static void configure_accelerators(const char *progname)
     }
 }
 
+static void create_default_memdev(MachineState *ms, const char *path,
+                                  bool prealloc)
+{
+    Object *obj;
+    MachineClass *mc = MACHINE_GET_CLASS(ms);
+
+    obj = object_new(path ? TYPE_MEMORY_BACKEND_FILE : TYPE_MEMORY_BACKEND_RAM);
+    if (path) {
+        object_property_set_str(obj, path, "mem-path", &error_fatal);
+    }
+    object_property_set_bool(obj, prealloc, "prealloc", &error_fatal);
+    object_property_set_int(obj, ms->ram_size, "size", &error_fatal);
+    object_property_add_child(object_get_objects_root(), mc->default_ram_id,
+                              obj, &error_fatal);
+    user_creatable_complete(USER_CREATABLE(obj), &error_fatal);
+    object_unref(obj);
+    object_property_set_str(OBJECT(ms), mc->default_ram_id, "memory-backend",
+                            &error_fatal);
+}
+
 int main(int argc, char **argv, char **envp)
 {
     int i;
@@ -4268,6 +4289,10 @@ int main(int argc, char **argv, char **envp)
     }
     parse_numa_opts(current_machine);
 
+    if (machine_class->default_ram_id && current_machine->ram_size &&
+        !current_machine->ram_memdev_id) {
+        create_default_memdev(current_machine, mem_path, mem_prealloc);
+    }
     /* do monitor/qmp handling at preconfig state if requested */
     main_loop();
 
-- 
2.18.1



  parent reply	other threads:[~2020-02-17 17:36 UTC|newest]

Thread overview: 187+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-17 17:33 [PATCH v5 00/79] refactor main RAM allocation to use hostmem backend Igor Mammedov
2020-02-17 17:33 ` [PATCH v5 01/79] numa: remove deprecated -mem-path fallback to anonymous RAM Igor Mammedov
2020-02-17 18:42   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 02/79] machine: introduce memory-backend property Igor Mammedov
2020-02-17 18:43   ` Richard Henderson
2020-02-18 17:10   ` Philippe Mathieu-Daudé
2020-02-17 17:33 ` Igor Mammedov [this message]
2020-02-17 17:33 ` [PATCH v5 04/79] machine: introduce convenience MachineState::ram Igor Mammedov
2020-02-17 18:45   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 05/79] initialize MachineState::ram in NUMA case Igor Mammedov
2020-02-17 17:33 ` [PATCH v5 06/79] vl.c: move -m parsing after memory backends has been processed Igor Mammedov
2020-02-17 17:33 ` [PATCH v5 07/79] vl.c: ensure that ram_size matches size of machine.memory-backend Igor Mammedov
2020-02-17 18:47   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 08/79] alpha/dp264: use memdev for RAM Igor Mammedov
2020-02-17 17:33 ` [PATCH v5 09/79] arm/aspeed: actually check RAM size Igor Mammedov
2020-02-17 18:48   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 10/79] arm/aspeed: use memdev for RAM Igor Mammedov
2020-02-17 18:48   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 11/79] arm/collie: " Igor Mammedov
2020-02-17 18:49   ` Richard Henderson
2020-02-18 17:16   ` Philippe Mathieu-Daudé
2020-02-19 13:44     ` Igor Mammedov
2020-02-19 14:05       ` Philippe Mathieu-Daudé
2020-02-17 17:33 ` [PATCH v5 12/79] arm/cubieboard: " Igor Mammedov
2020-02-17 18:50   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 13/79] arm/digic_boards: " Igor Mammedov
2020-02-17 18:51   ` Richard Henderson
2020-02-18 17:18   ` Philippe Mathieu-Daudé
2020-02-17 17:33 ` [PATCH v5 14/79] arm/highbank: " Igor Mammedov
2020-02-17 18:52   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 15/79] arm/imx25_pdk: drop RAM size fixup Igor Mammedov
2020-02-17 18:56   ` Richard Henderson
2020-02-18  6:51     ` Philippe Mathieu-Daudé
2020-02-18 15:42   ` [PATCH v6 " Igor Mammedov
2020-02-17 17:33 ` [PATCH v5 16/79] arm/imx25_pdk: use memdev for RAM Igor Mammedov
2020-02-17 18:57   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 17/79] arm/integratorcp: " Igor Mammedov
2020-02-17 18:58   ` Richard Henderson
2020-02-18  6:55   ` Philippe Mathieu-Daudé
2020-02-18  8:04     ` Igor Mammedov
2020-02-18 16:41     ` Igor Mammedov
2020-02-18 17:09       ` Philippe Mathieu-Daudé
2020-02-17 17:33 ` [PATCH v5 18/79] arm/kzm: drop RAM size fixup Igor Mammedov
2020-02-17 18:58   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 19/79] arm/kzm: use memdev for RAM Igor Mammedov
2020-02-17 18:59   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 20/79] arm/mcimx6ul-evk: " Igor Mammedov
2020-02-17 19:00   ` Richard Henderson
2020-02-18 17:18   ` Philippe Mathieu-Daudé
2020-02-17 17:33 ` [PATCH v5 21/79] arm/mcimx7d-sabre: " Igor Mammedov
2020-02-17 19:01   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 22/79] arm/mps2-tz: " Igor Mammedov
2020-02-17 19:02   ` Richard Henderson
2020-02-18  6:56   ` Philippe Mathieu-Daudé
2020-02-17 17:33 ` [PATCH v5 23/79] arm/mps2: " Igor Mammedov
2020-02-17 19:03   ` Richard Henderson
2020-02-18  6:57   ` Philippe Mathieu-Daudé
2020-02-17 17:33 ` [PATCH v5 24/79] arm/musicpal: " Igor Mammedov
2020-02-17 19:11   ` Richard Henderson
2020-02-18  6:58     ` Philippe Mathieu-Daudé
2020-02-18  8:59     ` Igor Mammedov
2020-02-18 17:29       ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 25/79] arm/nseries: " Igor Mammedov
2020-02-17 19:12   ` Richard Henderson
2020-02-17 17:33 ` [PATCH v5 26/79] arm/omap_sx1: " Igor Mammedov
2020-02-17 19:13   ` Richard Henderson
2020-02-18 17:20   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 27/79] arm/palm: " Igor Mammedov
2020-02-17 19:14   ` Richard Henderson
2020-02-18 17:22   ` Philippe Mathieu-Daudé
2020-02-19 13:44     ` Igor Mammedov
2020-02-19 14:05       ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 28/79] arm/sabrelite: " Igor Mammedov
2020-02-17 19:17   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 29/79] arm/raspi: " Igor Mammedov
2020-02-17 18:06   ` Philippe Mathieu-Daudé
2020-02-17 19:17   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 30/79] arm/sbsa-ref: " Igor Mammedov
2020-02-17 19:18   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 31/79] arm/versatilepb: " Igor Mammedov
2020-02-17 19:18   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 32/79] arm/vexpress: " Igor Mammedov
2020-02-17 19:20   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 33/79] arm/virt: " Igor Mammedov
2020-02-17 19:20   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 34/79] arm/xilinx_zynq: drop RAM size fixup Igor Mammedov
2020-02-17 19:23   ` Richard Henderson
2020-02-18 17:23   ` Philippe Mathieu-Daudé
2020-02-19 13:44     ` Igor Mammedov
2020-02-19 14:07       ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 35/79] arm/xilinx_zynq: use memdev for RAM Igor Mammedov
2020-02-17 19:24   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 36/79] arm/xlnx-versal-virt: " Igor Mammedov
2020-02-17 19:25   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 37/79] arm/xlnx-zcu102: " Igor Mammedov
2020-02-17 19:25   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 38/79] s390x/s390-virtio-ccw: " Igor Mammedov
2020-02-17 19:26   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 39/79] null-machine: " Igor Mammedov
2020-02-17 19:26   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 40/79] cris/axis_dev88: " Igor Mammedov
2020-02-17 19:27   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 41/79] hppa: " Igor Mammedov
2020-02-17 18:33   ` Richard Henderson
2020-02-18  7:00   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 42/79] x86/microvm: " Igor Mammedov
2020-02-17 19:27   ` Richard Henderson
2020-02-18 17:25   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 43/79] x86/pc: " Igor Mammedov
2020-02-17 19:28   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 44/79] lm32/lm32_boards: " Igor Mammedov
2020-02-17 19:29   ` Richard Henderson
2020-02-18 17:26   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 45/79] lm32/milkymist: " Igor Mammedov
2020-02-17 19:29   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 46/79] m68k/an5206: " Igor Mammedov
2020-02-17 19:30   ` Richard Henderson
2020-02-18 17:44   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 47/79] m68k/q800: " Igor Mammedov
2020-02-17 19:30   ` Richard Henderson
2020-02-18  7:05   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 48/79] m68k/mcf5208: " Igor Mammedov
2020-02-17 19:30   ` Richard Henderson
2020-02-18 17:44   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 49/79] m68k/next-cube: " Igor Mammedov
2020-02-17 19:31   ` Richard Henderson
2020-02-18  7:04   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 50/79] mips/boston: " Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 51/79] mips/mips_fulong2e: drop RAM size fixup Igor Mammedov
2020-02-18 17:29   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 52/79] mips/mips_fulong2e: use memdev for RAM Igor Mammedov
2020-02-18 17:28   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 53/79] mips/mips_jazz: " Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 54/79] mips/mips_jazz: add max ram size check Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 55/79] mips/mips_malta: use memdev for RAM Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 56/79] mips/mips_mipssim: " Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 57/79] mips/mips_r4k: " Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 58/79] ppc/e500: drop RAM size fixup Igor Mammedov
2020-02-17 19:32   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 59/79] ppc/e500: use memdev for RAM Igor Mammedov
2020-02-17 19:32   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 60/79] ppc/mac_newworld: " Igor Mammedov
2020-02-17 19:32   ` Richard Henderson
2020-02-18 17:46   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 61/79] ppc/mac_oldworld: " Igor Mammedov
2020-02-17 19:32   ` Richard Henderson
2020-02-18 17:46   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 62/79] ppc/pnv: " Igor Mammedov
2020-02-17 19:33   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 63/79] ppc/ppc405_boards: add RAM size checks Igor Mammedov
2020-02-17 19:34   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 64/79] ppc/ppc405_boards: use memdev for RAM Igor Mammedov
2020-02-17 19:37   ` Richard Henderson
2020-02-18 15:43   ` [PATCH v6 " Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 65/79] ppc/{ppc440_bamboo, sam460ex}: drop RAM size fixup Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 66/79] ppc/{ppc440_bamboo, sam460ex}: use memdev for RAM Igor Mammedov
2020-02-18 15:45   ` [PATCH v6 " Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 67/79] ppc/spapr: " Igor Mammedov
2020-02-17 19:39   ` Richard Henderson
2020-02-18 17:30   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 68/79] ppc/virtex_ml507: " Igor Mammedov
2020-02-17 19:40   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 69/79] sparc/leon3: " Igor Mammedov
2020-02-17 19:40   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 70/79] sparc/sun4m: " Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 71/79] sparc/niagara: " Igor Mammedov
2020-02-17 19:42   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 72/79] remove no longer used memory_region_allocate_system_memory() Igor Mammedov
2020-02-17 18:37   ` Richard Henderson
2020-02-18 17:40   ` Philippe Mathieu-Daudé
2020-02-17 17:34 ` [PATCH v5 73/79] exec: cleanup qemu_minrampagesize()/qemu_maxrampagesize() Igor Mammedov
2020-02-17 18:39   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 74/79] exec: drop bogus mem_path from qemu_ram_alloc_from_fd() Igor Mammedov
2020-02-17 18:40   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 75/79] make mem_path local variable Igor Mammedov
2020-02-17 18:40   ` Richard Henderson
2020-02-17 17:34 ` [PATCH v5 76/79] hostmem: introduce "prealloc-threads" property Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 77/79] hostmem: fix strict bind policy Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 78/79] tests/numa-test: make top level args dynamic and g_autofree(cli) cleanups Igor Mammedov
2020-02-17 17:34 ` [PATCH v5 79/79] tests:numa-test: use explicit memdev to specify node RAM Igor Mammedov
2020-02-18 17:51   ` Philippe Mathieu-Daudé
2020-02-19 13:00     ` Igor Mammedov
2020-02-19 14:06       ` Philippe Mathieu-Daudé
2020-02-19 14:30         ` Igor Mammedov
2020-02-17 20:44 ` [PATCH v5 00/79] refactor main RAM allocation to use hostmem backend no-reply
2020-02-18 15:47   ` Igor Mammedov
2020-02-18 15:50 ` Igor Mammedov

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=20200217173452.15243-4-imammedo@redhat.com \
    --to=imammedo@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.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.