All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>
Subject: [PATCH v5 09/79] arm/aspeed: actually check RAM size
Date: Mon, 17 Feb 2020 12:33:42 -0500	[thread overview]
Message-ID: <20200217173452.15243-10-imammedo@redhat.com> (raw)
In-Reply-To: <20200217173452.15243-1-imammedo@redhat.com>

It's supposed that SOC will check if "-m" provided
RAM size is valid by setting "ram-size" property and
then board would read back valid (possibly corrected
value) to map RAM MemoryReging with valid size.
It isn't doing so, since check is called only
indirectly from
  aspeed_sdmc_reset()->asc->compute_conf()
or much later when guest writes to configuration
register.

So depending on "-m" value QEMU end-ups with a warning
and an invalid MemoryRegion size allocated and mapped.
(examples:
 -M ast2500-evb -m 1M
    0000000080000000-000000017ffffffe (prio 0, i/o): aspeed-ram-container
      0000000080000000-00000000800fffff (prio 0, ram): ram
      0000000080100000-00000000bfffffff (prio 0, i/o): max_ram
 -M ast2500-evb -m 3G
    0000000080000000-000000017ffffffe (prio 0, i/o): aspeed-ram-container
      0000000080000000-000000013fffffff (prio 0, ram): ram
      [DETECTED OVERFLOW!] 0000000140000000-00000000bfffffff (prio 0, i/o): max_ram
)
On top of that sdmc falls back and reports to guest
"default" size, it thinks machine should have.

This patch makes ram-size check actually work and
changes behavior from a warning later on during
machine reset to error_fatal at the moment SOC.ram-size
is set so user will have to fix RAM size on CLI
to start machine.

It also gets out of the way mutable ram-size logic,
so we could consolidate RAM allocation logic around
pre-allocated hostmem backend (supplied by user or
auto created by generic machine code depending on
supplied -m/mem-path/mem-prealloc options.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
---
v3:
  * replace
     [PATCH v2 07/86] arm:aspeed: convert valid RAM sizes to data
     [PATCH v2 08/86] arm:aspeed: actually check RAM size
    with a simplified variant that adds ram_size check to sdmc.ram-size
    property
  * use g_assert_not_reached() in default branch
    (Cédric Le Goater <clg@kaod.org>)
---
 include/hw/misc/aspeed_sdmc.h |  1 +
 hw/arm/aspeed.c               | 13 +++---
 hw/misc/aspeed_sdmc.c         | 83 +++++++++++++++++++++++++++--------
 3 files changed, 70 insertions(+), 27 deletions(-)

diff --git a/include/hw/misc/aspeed_sdmc.h b/include/hw/misc/aspeed_sdmc.h
index 5dbde59fe7..cea1e67fe3 100644
--- a/include/hw/misc/aspeed_sdmc.h
+++ b/include/hw/misc/aspeed_sdmc.h
@@ -40,6 +40,7 @@ typedef struct AspeedSDMCClass {
     SysBusDeviceClass parent_class;
 
     uint64_t max_ram_size;
+    const uint64_t *valid_ram_sizes;
     uint32_t (*compute_conf)(AspeedSDMCState *s, uint32_t data);
     void (*write)(AspeedSDMCState *s, uint32_t reg, uint32_t data);
 } AspeedSDMCClass;
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index a17843f0d3..805bebd0d0 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -204,8 +204,12 @@ static void aspeed_machine_init(MachineState *machine)
 
     sc = ASPEED_SOC_GET_CLASS(&bmc->soc);
 
+    /*
+     * This will error out if isize is not supported by memory controller.
+     */
     object_property_set_uint(OBJECT(&bmc->soc), ram_size, "ram-size",
-                             &error_abort);
+                             &error_fatal);
+
     object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap1, "hw-strap1",
                             &error_abort);
     object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap2, "hw-strap2",
@@ -228,13 +232,6 @@ static void aspeed_machine_init(MachineState *machine)
     object_property_set_bool(OBJECT(&bmc->soc), true, "realized",
                              &error_abort);
 
-    /*
-     * Allocate RAM after the memory controller has checked the size
-     * was valid. If not, a default value is used.
-     */
-    ram_size = object_property_get_uint(OBJECT(&bmc->soc), "ram-size",
-                                        &error_abort);
-
     memory_region_allocate_system_memory(&bmc->ram, NULL, "ram", ram_size);
     memory_region_add_subregion(&bmc->ram_container, 0, &bmc->ram);
     memory_region_add_subregion(get_system_memory(),
diff --git a/hw/misc/aspeed_sdmc.c b/hw/misc/aspeed_sdmc.c
index 9c184790cd..7b466bf19a 100644
--- a/hw/misc/aspeed_sdmc.c
+++ b/hw/misc/aspeed_sdmc.c
@@ -17,6 +17,9 @@
 #include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "trace.h"
+#include "qemu/units.h"
+#include "qemu/cutils.h"
+#include "qapi/visitor.h"
 
 /* Protection Key Register */
 #define R_PROT            (0x00 / 4)
@@ -160,14 +163,9 @@ static int ast2400_rambits(AspeedSDMCState *s)
     case 512:
         return ASPEED_SDMC_DRAM_512MB;
     default:
+        g_assert_not_reached();
         break;
     }
-
-    /* use a common default */
-    warn_report("Invalid RAM size 0x%" PRIx64 ". Using default 256M",
-                s->ram_size);
-    s->ram_size = 256 << 20;
-    return ASPEED_SDMC_DRAM_256MB;
 }
 
 static int ast2500_rambits(AspeedSDMCState *s)
@@ -182,14 +180,9 @@ static int ast2500_rambits(AspeedSDMCState *s)
     case 1024:
         return ASPEED_SDMC_AST2500_1024MB;
     default:
+        g_assert_not_reached();
         break;
     }
-
-    /* use a common default */
-    warn_report("Invalid RAM size 0x%" PRIx64 ". Using default 512M",
-                s->ram_size);
-    s->ram_size = 512 << 20;
-    return ASPEED_SDMC_AST2500_512MB;
 }
 
 static int ast2600_rambits(AspeedSDMCState *s)
@@ -204,14 +197,9 @@ static int ast2600_rambits(AspeedSDMCState *s)
     case 2048:
         return ASPEED_SDMC_AST2600_2048MB;
     default:
+        g_assert_not_reached();
         break;
     }
-
-    /* use a common default */
-    warn_report("Invalid RAM size 0x%" PRIx64 ". Using default 1024M",
-                s->ram_size);
-    s->ram_size = 1024 << 20;
-    return ASPEED_SDMC_AST2600_1024MB;
 }
 
 static void aspeed_sdmc_reset(DeviceState *dev)
@@ -225,6 +213,51 @@ static void aspeed_sdmc_reset(DeviceState *dev)
     s->regs[R_CONF] = asc->compute_conf(s, 0);
 }
 
+static void aspeed_sdmc_get_ram_size(Object *obj, Visitor *v, const char *name,
+                                     void *opaque, Error **errp)
+{
+    AspeedSDMCState *s = ASPEED_SDMC(obj);
+    int64_t value = s->ram_size;
+
+    visit_type_int(v, name, &value, errp);
+}
+
+static void aspeed_sdmc_set_ram_size(Object *obj, Visitor *v, const char *name,
+                                     void *opaque, Error **errp)
+{
+    int i;
+    char *sz;
+    int64_t value;
+    Error *local_err = NULL;
+    AspeedSDMCState *s = ASPEED_SDMC(obj);
+    AspeedSDMCClass *asc = ASPEED_SDMC_GET_CLASS(s);
+
+    visit_type_int(v, name, &value, &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        return;
+    }
+
+    for (i = 0; asc->valid_ram_sizes[i]; i++) {
+        if (value == asc->valid_ram_sizes[i]) {
+            s->ram_size = value;
+            return;
+        }
+    }
+
+    sz = size_to_str(value);
+    error_setg(&local_err, "Invalid RAM size %s", sz);
+    g_free(sz);
+    error_propagate(errp, local_err);
+}
+
+static void aspeed_sdmc_initfn(Object *obj)
+{
+    object_property_add(obj, "ram-size", "int",
+                        aspeed_sdmc_get_ram_size, aspeed_sdmc_set_ram_size,
+                        NULL, NULL, NULL);
+}
+
 static void aspeed_sdmc_realize(DeviceState *dev, Error **errp)
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
@@ -249,7 +282,6 @@ static const VMStateDescription vmstate_aspeed_sdmc = {
 };
 
 static Property aspeed_sdmc_properties[] = {
-    DEFINE_PROP_UINT64("ram-size", AspeedSDMCState, ram_size, 0),
     DEFINE_PROP_UINT64("max-ram-size", AspeedSDMCState, max_ram_size, 0),
     DEFINE_PROP_END_OF_LIST(),
 };
@@ -268,6 +300,7 @@ static const TypeInfo aspeed_sdmc_info = {
     .name = TYPE_ASPEED_SDMC,
     .parent = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(AspeedSDMCState),
+    .instance_init = aspeed_sdmc_initfn,
     .class_init = aspeed_sdmc_class_init,
     .class_size = sizeof(AspeedSDMCClass),
     .abstract   = true,
@@ -298,6 +331,9 @@ static void aspeed_2400_sdmc_write(AspeedSDMCState *s, uint32_t reg,
     s->regs[reg] = data;
 }
 
+static const uint64_t
+aspeed_2400_ram_sizes[] = { 64 * MiB, 128 * MiB, 256 * MiB, 512 * MiB, 0};
+
 static void aspeed_2400_sdmc_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -307,6 +343,7 @@ static void aspeed_2400_sdmc_class_init(ObjectClass *klass, void *data)
     asc->max_ram_size = 512 << 20;
     asc->compute_conf = aspeed_2400_sdmc_compute_conf;
     asc->write = aspeed_2400_sdmc_write;
+    asc->valid_ram_sizes = aspeed_2400_ram_sizes;
 }
 
 static const TypeInfo aspeed_2400_sdmc_info = {
@@ -351,6 +388,9 @@ static void aspeed_2500_sdmc_write(AspeedSDMCState *s, uint32_t reg,
     s->regs[reg] = data;
 }
 
+static const uint64_t
+aspeed_2500_ram_sizes[] = { 128 * MiB, 256 * MiB, 512 * MiB, 1024 * MiB, 0};
+
 static void aspeed_2500_sdmc_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -360,6 +400,7 @@ static void aspeed_2500_sdmc_class_init(ObjectClass *klass, void *data)
     asc->max_ram_size = 1024 << 20;
     asc->compute_conf = aspeed_2500_sdmc_compute_conf;
     asc->write = aspeed_2500_sdmc_write;
+    asc->valid_ram_sizes = aspeed_2500_ram_sizes;
 }
 
 static const TypeInfo aspeed_2500_sdmc_info = {
@@ -404,6 +445,9 @@ static void aspeed_2600_sdmc_write(AspeedSDMCState *s, uint32_t reg,
     s->regs[reg] = data;
 }
 
+static const uint64_t
+aspeed_2600_ram_sizes[] = { 256 * MiB, 512 * MiB, 1024 * MiB, 2048 * MiB, 0};
+
 static void aspeed_2600_sdmc_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -413,6 +457,7 @@ static void aspeed_2600_sdmc_class_init(ObjectClass *klass, void *data)
     asc->max_ram_size = 2048 << 20;
     asc->compute_conf = aspeed_2600_sdmc_compute_conf;
     asc->write = aspeed_2600_sdmc_write;
+    asc->valid_ram_sizes = aspeed_2600_ram_sizes;
 }
 
 static const TypeInfo aspeed_2600_sdmc_info = {
-- 
2.18.1



  parent reply	other threads:[~2020-02-17 17:40 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 ` [PATCH v5 03/79] machine: alias -mem-path and -mem-prealloc into memory-foo backend Igor Mammedov
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 ` Igor Mammedov [this message]
2020-02-17 18:48   ` [PATCH v5 09/79] arm/aspeed: actually check RAM size 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-10-imammedo@redhat.com \
    --to=imammedo@redhat.com \
    --cc=pbonzini@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.