qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Subject: [PATCH 05/86] machine: alias -mem-path and -mem-prealloc into memory-foo backend
Date: Tue, 31 Dec 2019 14:02:49 +0100	[thread overview]
Message-ID: <1577797450-88458-6-git-send-email-imammedo@redhat.com> (raw)
In-Reply-To: <1577797450-88458-1-git-send-email-imammedo@redhat.com>

Allow a machine to opt in for hostmem backend based initial
RAM even if user used 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>
---
 include/hw/boards.h      |  5 +++++
 include/sysemu/hostmem.h | 16 ++++++++++++++++
 backends/hostmem-file.c  |  7 -------
 backends/hostmem-ram.c   |  2 --
 vl.c                     | 25 +++++++++++++++++++++++++
 5 files changed, 46 insertions(+), 9 deletions(-)

diff --git a/include/hw/boards.h b/include/hw/boards.h
index 8e2bf2b..65da7f0 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -170,6 +170,10 @@ 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 "ram-memdev"
+ *    property.
  */
 struct MachineClass {
     /*< private >*/
@@ -226,6 +230,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 4dbdadd..5db0d66 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 be64020..cb319a9 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 6aab8d3..5cc53e7 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 86474a5..579ae44 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"
@@ -2814,6 +2815,25 @@ 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_link(OBJECT(ms), obj, "ram-memdev", &error_fatal);
+}
+
 int main(int argc, char **argv, char **envp)
 {
     int i;
@@ -4274,6 +4294,11 @@ int main(int argc, char **argv, char **envp)
     }
     parse_numa_opts(current_machine);
 
+    if (!current_machine->ram_memdev &&
+         machine_class->default_ram_size &&
+         machine_class->default_ram_id) {
+        create_default_memdev(current_machine, mem_path, mem_prealloc);
+    }
     /* do monitor/qmp handling at preconfig state if requested */
     main_loop();
 
-- 
2.7.4



  parent reply	other threads:[~2019-12-31 13:06 UTC|newest]

Thread overview: 148+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-31 13:02 [PATCH 00/86] refactor main RAM allocation to use hostmem backend Igor Mammedov
2019-12-31 13:02 ` [PATCH 01/86] numa: remove not needed check Igor Mammedov
2019-12-31 13:02 ` [PATCH 02/86] numa: properly check if numa is supported Igor Mammedov
2019-12-31 13:02 ` [PATCH 03/86] numa: remove deprecated -mem-path fallback to anonymous RAM Igor Mammedov
2019-12-31 13:02 ` [PATCH 04/86] machine: introduce ram-memdev property Igor Mammedov
2019-12-31 13:02 ` Igor Mammedov [this message]
2019-12-31 13:02 ` [PATCH 06/86] machine: introduce convenience MachineState::ram Igor Mammedov
2019-12-31 13:02 ` [PATCH 07/86] initialize MachineState::ram in NUMA case Igor Mammedov
2019-12-31 13:02 ` [PATCH 08/86] alpha:dp264: use memdev for RAM Igor Mammedov
2019-12-31 16:11   ` Philippe Mathieu-Daudé
2020-01-06  0:37   ` Richard Henderson
2019-12-31 13:02 ` [PATCH 09/86] arm:aspeed: convert valid RAM sizes to data Igor Mammedov
2019-12-31 13:02 ` [PATCH 10/86] arm:aspeed: actually check RAM size Igor Mammedov
2019-12-31 13:02 ` [PATCH 11/86] hw:aspeed: drop warning and bogus ram_size fixup Igor Mammedov
2019-12-31 13:02 ` [PATCH 12/86] arm:aspeed: use memdev for RAM Igor Mammedov
2019-12-31 13:02 ` [PATCH 13/86] arm:collie: " Igor Mammedov
2019-12-31 13:02 ` [PATCH 14/86] arm:cubieboard: " Igor Mammedov
2019-12-31 13:02 ` [PATCH 15/86] arm:digic_boards: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 16/86] arm:highbank: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 17/86] arm:imx25_pdk: drop RAM size fixup Igor Mammedov
2019-12-31 13:03 ` [PATCH 18/86] arm:imx25_pdk: use memdev for RAM Igor Mammedov
2019-12-31 13:03 ` [PATCH 19/86] arm:integratorcp: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 20/86] arm:kzm: drop RAM size fixup Igor Mammedov
2019-12-31 13:03 ` [PATCH 21/86] arm:kzm: use memdev for RAM Igor Mammedov
2019-12-31 16:10   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 22/86] arm:mcimx6ul-evk: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 23/86] arm:mcimx7d-sabre: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 24/86] arm:mps2-tz: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 25/86] arm:mps2: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 26/86] arm:musicpal: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 27/86] arm:nseries: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 28/86] arm:omap_sx1: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 29/86] arm:palm: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 30/86] arm:raspi: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 31/86] arm:sabrelite: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 32/86] arm:sbsa-ref: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 33/86] arm:versatilepb: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 34/86] arm:vexpress: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 35/86] arm:virt: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 36/86] arm:xilinx_zynq: drop RAM size fixup Igor Mammedov
2019-12-31 13:03 ` [PATCH 37/86] arm:xilinx_zynq: use memdev for RAM Igor Mammedov
2019-12-31 13:03 ` [PATCH 38/86] arm:xlnx-versal-virt: " Igor Mammedov
2019-12-31 16:05   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 39/86] arm:xlnx-zcu102: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 40/86] s390x:s390-virtio-ccw: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 41/86] null-machine: " Igor Mammedov
2019-12-31 15:32   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 42/86] cris:axis_dev88: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 43/86] hppa: drop RAM size fixup Igor Mammedov
2019-12-31 15:44   ` Philippe Mathieu-Daudé
2020-01-02 11:31     ` Helge Deller
2020-01-02 12:06       ` Philippe Mathieu-Daudé
2020-01-02 13:02         ` Helge Deller
2020-01-02 14:47           ` Igor Mammedov
2020-01-02 14:12         ` Igor Mammedov
2020-01-02 14:17           ` Philippe Mathieu-Daudé
2020-01-02 15:08             ` Igor Mammedov
2020-01-02 15:49               ` Philippe Mathieu-Daudé
2020-01-02 16:50                 ` Igor Mammedov
2020-01-02 17:14                   ` Philippe Mathieu-Daudé
2020-01-02 17:32                     ` Igor Mammedov
2020-01-02 20:09                 ` Helge Deller
2020-01-02 14:41       ` Igor Mammedov
2020-01-02 14:45         ` Philippe Mathieu-Daudé
2020-01-02 15:35           ` Igor Mammedov
2020-01-02 15:40             ` Philippe Mathieu-Daudé
2020-01-02 17:08   ` [PATCH] hppa: allow max ram size upto 4Gb Igor Mammedov
2020-01-02 17:15     ` Philippe Mathieu-Daudé
2020-01-02 17:36       ` Igor Mammedov
2020-01-02 17:46       ` [PATCH v2] " Igor Mammedov
2020-01-02 20:22         ` Helge Deller
2020-01-03  9:54           ` Igor Mammedov
2020-01-04 15:00             ` Philippe Mathieu-Daudé
2020-01-06 10:48               ` Igor Mammedov
2020-01-06 11:05                 ` Philippe Mathieu-Daudé
2020-01-06 11:28                 ` Helge Deller
2020-01-06 16:24                   ` Igor Mammedov
2020-01-06 17:03                     ` Helge Deller
2020-01-07 11:21                       ` Igor Mammedov
2020-01-07 11:53                         ` Helge Deller
2020-01-07 15:17                           ` Igor Mammedov
2020-01-07 15:34   ` [PATCH v3 43/86] " Igor Mammedov
2019-12-31 13:03 ` [PATCH 44/86] hppa: use memdev for RAM Igor Mammedov
2019-12-31 15:45   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 45/86] x86:microvm: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 46/86] x86:pc: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 47/86] lm32:lm32_boards: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 48/86] lm32:milkymist: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 49/86] m68k:an5206: " Igor Mammedov
2020-01-07 16:11   ` Thomas Huth
2019-12-31 13:03 ` [PATCH 50/86] m68k:mcf5208: " Igor Mammedov
2020-01-07 16:11   ` Thomas Huth
2019-12-31 13:03 ` [PATCH 51/86] m68k:next-cube: " Igor Mammedov
2020-01-07 16:12   ` Thomas Huth
2019-12-31 13:03 ` [PATCH 52/86] mips:boston-cube: " Igor Mammedov
2019-12-31 16:08   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 53/86] mips:mips_fulong2e: drop RAM size fixup Igor Mammedov
2019-12-31 13:03 ` [PATCH 54/86] mips:mips_fulong2e: use memdev for RAM Igor Mammedov
2019-12-31 13:03 ` [PATCH 55/86] mips:mips_jazz: " Igor Mammedov
2019-12-31 16:06   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 56/86] mips:mips_malta: " Igor Mammedov
2019-12-31 16:07   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 57/86] mips:mips_mipssim: " Igor Mammedov
2019-12-31 16:07   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 58/86] mips:mips_r4k: " Igor Mammedov
2019-12-31 16:08   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 59/86] ppc:e500: drop RAM size fixup Igor Mammedov
2019-12-31 13:03 ` [PATCH 60/86] ppc:e500: use memdev for RAM Igor Mammedov
2019-12-31 13:03 ` [PATCH 61/86] ppc:mac_newworld: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 62/86] ppc:mac_oldworld: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 63/86] ppc:pnv: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 64/86] ppc:ppc405_boards: add RAM size checks Igor Mammedov
2019-12-31 13:03 ` [PATCH 65/86] ppc:ppc405_boards: use memdev for RAM Igor Mammedov
2019-12-31 13:03 ` [PATCH 66/86] ppc:ppc440_bamboo/sam460ex: drop RAM size fixup Igor Mammedov
2020-01-01 11:54   ` BALATON Zoltan
2020-01-01 15:39     ` Philippe Mathieu-Daudé
2020-01-01 18:45       ` BALATON Zoltan
2020-01-02 11:47     ` Igor Mammedov
2020-01-02 15:52       ` BALATON Zoltan
2020-01-02 17:19         ` Igor Mammedov
2020-01-10 17:14         ` Igor Mammedov
2019-12-31 13:03 ` [PATCH 67/86] ppc:ppc440_bamboo/sam460ex: use memdev for RAM Igor Mammedov
2019-12-31 13:03 ` [PATCH 68/86] ppc:prep: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 69/86] ppc:spapr: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 70/86] ppc:virtex_ml507: remove unused arguments Igor Mammedov
2019-12-31 13:03 ` [PATCH 71/86] ppc:virtex_ml507: use memdev for RAM Igor Mammedov
2019-12-31 13:03 ` [PATCH 72/86] sparc:leon3: " Igor Mammedov
2019-12-31 16:02   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 73/86] sparc:sun4m: " Igor Mammedov
2019-12-31 13:03 ` [PATCH 74/86] sparc:niagara: " Igor Mammedov
2019-12-31 16:02   ` Philippe Mathieu-Daudé
2019-12-31 13:03 ` [PATCH 75/86] remove no longer used memory_region_allocate_system_memory() Igor Mammedov
2019-12-31 13:04 ` [PATCH 76/86] post conversion default_ram_id cleanup Igor Mammedov
2019-12-31 16:04   ` Philippe Mathieu-Daudé
2019-12-31 13:04 ` [PATCH 77/86] exec: cleanup qemu_minrampagesize()/qemu_maxrampagesize() Igor Mammedov
2019-12-31 13:04 ` [PATCH 78/86] exec: drop bogus mem_path from qemu_ram_alloc_from_fd() Igor Mammedov
2019-12-31 13:04 ` [PATCH 79/86] make mem_path local variable Igor Mammedov
2019-12-31 13:04 ` [PATCH 80/86] hostmem: introduce "prealloc-threads" property Igor Mammedov
2019-12-31 13:04 ` [PATCH 81/86] hostmem: fix strict bind policy Igor Mammedov
2019-12-31 13:04 ` [PATCH 82/86] numa: forbid '-numa node, mem' for 5.0 and newer machine types Igor Mammedov
2019-12-31 13:04 ` [PATCH 83/86] tests:numa-test: make top level args dynamic and g_autofree(cli) cleanups Igor Mammedov
2019-12-31 13:04 ` [PATCH 84/86] tests:numa-test: use explicit memdev to specify node RAM Igor Mammedov
2019-12-31 13:04 ` [PATCH 85/86] numa: make exit() usage consistent Igor Mammedov
2019-12-31 13:04 ` [PATCH 86/86] numa: remove deprecated implicit RAM distribution between nodes Igor Mammedov
2019-12-31 15:58 ` [PATCH 00/86] refactor main RAM allocation to use hostmem backend Philippe Mathieu-Daudé
2019-12-31 16:22   ` Igor Mammedov
2020-01-03 13:06   ` Igor Mammedov
2020-01-03 13:15     ` Philippe Mathieu-Daudé

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=1577797450-88458-6-git-send-email-imammedo@redhat.com \
    --to=imammedo@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).