All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] microvm: memory config tweaks
@ 2020-05-29  7:39 ` Gerd Hoffmann
  0 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

With more microvm memory config tweaks split this into its owns series,
the microvm acpi patch series is already big enough ...

v2:
 - use 3G split.
 - add patch to move virtio-mmio region.
 - pick up acks & reviews.
v3:
 - fix xen build.
 - pick up acks & reviews.

take care,
  Gerd

Gerd Hoffmann (4):
  microvm: use 3G split unconditionally
  microvm: drop max-ram-below-4g support
  x86: move max-ram-below-4g to pc
  microvm: move virtio base to 0xfeb00000

 include/hw/i386/microvm.h |  2 +-
 include/hw/i386/pc.h      |  2 ++
 include/hw/i386/x86.h     |  4 ----
 hw/i386/microvm.c         | 35 +----------------------------
 hw/i386/pc.c              | 46 +++++++++++++++++++++++++++++++++++++++
 hw/i386/pc_piix.c         | 10 ++++-----
 hw/i386/pc_q35.c          | 10 ++++-----
 hw/i386/x86.c             | 46 ---------------------------------------
 hw/i386/xen/xen-hvm.c     |  2 +-
 9 files changed, 61 insertions(+), 96 deletions(-)

-- 
2.18.4



^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH v3 0/4] microvm: memory config tweaks
@ 2020-05-29  7:39 ` Gerd Hoffmann
  0 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, Marcel Apfelbaum,
	xen-devel, Anthony Perard, Paolo Bonzini, philmd,
	Richard Henderson

With more microvm memory config tweaks split this into its owns series,
the microvm acpi patch series is already big enough ...

v2:
 - use 3G split.
 - add patch to move virtio-mmio region.
 - pick up acks & reviews.
v3:
 - fix xen build.
 - pick up acks & reviews.

take care,
  Gerd

Gerd Hoffmann (4):
  microvm: use 3G split unconditionally
  microvm: drop max-ram-below-4g support
  x86: move max-ram-below-4g to pc
  microvm: move virtio base to 0xfeb00000

 include/hw/i386/microvm.h |  2 +-
 include/hw/i386/pc.h      |  2 ++
 include/hw/i386/x86.h     |  4 ----
 hw/i386/microvm.c         | 35 +----------------------------
 hw/i386/pc.c              | 46 +++++++++++++++++++++++++++++++++++++++
 hw/i386/pc_piix.c         | 10 ++++-----
 hw/i386/pc_q35.c          | 10 ++++-----
 hw/i386/x86.c             | 46 ---------------------------------------
 hw/i386/xen/xen-hvm.c     |  2 +-
 9 files changed, 61 insertions(+), 96 deletions(-)

-- 
2.18.4



^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH v3 1/4] microvm: use 3G split unconditionally
  2020-05-29  7:39 ` Gerd Hoffmann
@ 2020-05-29  7:39   ` Gerd Hoffmann
  -1 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

Looks like the logic was copied over from q35.

q35 does this for backward compatibility, there is no reason to do this
on microvm though.  Also microvm doesn't need much mmio space, 1G is
more than enough.  Using an mmio window smaller than 1G is bad for
gigabyte alignment and hugepages though.  So split @ 3G unconditionally.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/i386/microvm.c | 16 +---------------
 1 file changed, 1 insertion(+), 15 deletions(-)

diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index 937db10ae6a5..44f940813b07 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -170,23 +170,9 @@ static void microvm_memory_init(MicrovmMachineState *mms)
     MemoryRegion *ram_below_4g, *ram_above_4g;
     MemoryRegion *system_memory = get_system_memory();
     FWCfgState *fw_cfg;
-    ram_addr_t lowmem;
+    ram_addr_t lowmem = 0xc0000000; /* 3G */
     int i;
 
-    /*
-     * Check whether RAM fits below 4G (leaving 1/2 GByte for IO memory
-     * and 256 Mbytes for PCI Express Enhanced Configuration Access Mapping
-     * also known as MMCFG).
-     * If it doesn't, we need to split it in chunks below and above 4G.
-     * In any case, try to make sure that guest addresses aligned at
-     * 1G boundaries get mapped to host addresses aligned at 1G boundaries.
-     */
-    if (machine->ram_size >= 0xb0000000) {
-        lowmem = 0x80000000;
-    } else {
-        lowmem = 0xb0000000;
-    }
-
     /*
      * Handle the machine opt max-ram-below-4g.  It is basically doing
      * min(qemu limit, user limit).
-- 
2.18.4



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH v3 1/4] microvm: use 3G split unconditionally
@ 2020-05-29  7:39   ` Gerd Hoffmann
  0 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, Marcel Apfelbaum,
	xen-devel, Anthony Perard, Paolo Bonzini, philmd,
	Richard Henderson

Looks like the logic was copied over from q35.

q35 does this for backward compatibility, there is no reason to do this
on microvm though.  Also microvm doesn't need much mmio space, 1G is
more than enough.  Using an mmio window smaller than 1G is bad for
gigabyte alignment and hugepages though.  So split @ 3G unconditionally.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/i386/microvm.c | 16 +---------------
 1 file changed, 1 insertion(+), 15 deletions(-)

diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index 937db10ae6a5..44f940813b07 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -170,23 +170,9 @@ static void microvm_memory_init(MicrovmMachineState *mms)
     MemoryRegion *ram_below_4g, *ram_above_4g;
     MemoryRegion *system_memory = get_system_memory();
     FWCfgState *fw_cfg;
-    ram_addr_t lowmem;
+    ram_addr_t lowmem = 0xc0000000; /* 3G */
     int i;
 
-    /*
-     * Check whether RAM fits below 4G (leaving 1/2 GByte for IO memory
-     * and 256 Mbytes for PCI Express Enhanced Configuration Access Mapping
-     * also known as MMCFG).
-     * If it doesn't, we need to split it in chunks below and above 4G.
-     * In any case, try to make sure that guest addresses aligned at
-     * 1G boundaries get mapped to host addresses aligned at 1G boundaries.
-     */
-    if (machine->ram_size >= 0xb0000000) {
-        lowmem = 0x80000000;
-    } else {
-        lowmem = 0xb0000000;
-    }
-
     /*
      * Handle the machine opt max-ram-below-4g.  It is basically doing
      * min(qemu limit, user limit).
-- 
2.18.4



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH v3 2/4] microvm: drop max-ram-below-4g support
  2020-05-29  7:39 ` Gerd Hoffmann
@ 2020-05-29  7:39   ` Gerd Hoffmann
  -1 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

Not useful for microvm and allows users to shoot themself
into the foot (make ram + mmio overlap).

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/i386/microvm.c | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index 44f940813b07..5e931975a06d 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -173,25 +173,6 @@ static void microvm_memory_init(MicrovmMachineState *mms)
     ram_addr_t lowmem = 0xc0000000; /* 3G */
     int i;
 
-    /*
-     * Handle the machine opt max-ram-below-4g.  It is basically doing
-     * min(qemu limit, user limit).
-     */
-    if (!x86ms->max_ram_below_4g) {
-        x86ms->max_ram_below_4g = 4 * GiB;
-    }
-    if (lowmem > x86ms->max_ram_below_4g) {
-        lowmem = x86ms->max_ram_below_4g;
-        if (machine->ram_size - lowmem > lowmem &&
-            lowmem & (1 * GiB - 1)) {
-            warn_report("There is possibly poor performance as the ram size "
-                        " (0x%" PRIx64 ") is more then twice the size of"
-                        " max-ram-below-4g (%"PRIu64") and"
-                        " max-ram-below-4g is not a multiple of 1G.",
-                        (uint64_t)machine->ram_size, x86ms->max_ram_below_4g);
-        }
-    }
-
     if (machine->ram_size > lowmem) {
         x86ms->above_4g_mem_size = machine->ram_size - lowmem;
         x86ms->below_4g_mem_size = lowmem;
-- 
2.18.4



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH v3 2/4] microvm: drop max-ram-below-4g support
@ 2020-05-29  7:39   ` Gerd Hoffmann
  0 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, Marcel Apfelbaum,
	xen-devel, Anthony Perard, Paolo Bonzini, philmd,
	Richard Henderson

Not useful for microvm and allows users to shoot themself
into the foot (make ram + mmio overlap).

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/i386/microvm.c | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index 44f940813b07..5e931975a06d 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -173,25 +173,6 @@ static void microvm_memory_init(MicrovmMachineState *mms)
     ram_addr_t lowmem = 0xc0000000; /* 3G */
     int i;
 
-    /*
-     * Handle the machine opt max-ram-below-4g.  It is basically doing
-     * min(qemu limit, user limit).
-     */
-    if (!x86ms->max_ram_below_4g) {
-        x86ms->max_ram_below_4g = 4 * GiB;
-    }
-    if (lowmem > x86ms->max_ram_below_4g) {
-        lowmem = x86ms->max_ram_below_4g;
-        if (machine->ram_size - lowmem > lowmem &&
-            lowmem & (1 * GiB - 1)) {
-            warn_report("There is possibly poor performance as the ram size "
-                        " (0x%" PRIx64 ") is more then twice the size of"
-                        " max-ram-below-4g (%"PRIu64") and"
-                        " max-ram-below-4g is not a multiple of 1G.",
-                        (uint64_t)machine->ram_size, x86ms->max_ram_below_4g);
-        }
-    }
-
     if (machine->ram_size > lowmem) {
         x86ms->above_4g_mem_size = machine->ram_size - lowmem;
         x86ms->below_4g_mem_size = lowmem;
-- 
2.18.4



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH v3 3/4] x86: move max-ram-below-4g to pc
  2020-05-29  7:39 ` Gerd Hoffmann
@ 2020-05-29  7:39   ` Gerd Hoffmann
  -1 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

Move from X86MachineClass to PCMachineClass so it disappears
from microvm machine type property list.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/hw/i386/pc.h  |  2 ++
 include/hw/i386/x86.h |  4 ----
 hw/i386/pc.c          | 46 +++++++++++++++++++++++++++++++++++++++++++
 hw/i386/pc_piix.c     | 10 +++++-----
 hw/i386/pc_q35.c      | 10 +++++-----
 hw/i386/x86.c         | 46 -------------------------------------------
 hw/i386/xen/xen-hvm.c |  2 +-
 7 files changed, 59 insertions(+), 61 deletions(-)

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 5e3b19ab78fc..dce1273c7dad 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -35,6 +35,7 @@ struct PCMachineState {
     PFlashCFI01 *flash[2];
 
     /* Configuration options: */
+    uint64_t max_ram_below_4g;
     OnOffAuto vmport;
 
     bool acpi_build_enabled;
@@ -51,6 +52,7 @@ struct PCMachineState {
 };
 
 #define PC_MACHINE_ACPI_DEVICE_PROP "acpi-device"
+#define PC_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g"
 #define PC_MACHINE_DEVMEM_REGION_SIZE "device-memory-region-size"
 #define PC_MACHINE_VMPORT           "vmport"
 #define PC_MACHINE_SMBUS            "smbus"
diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h
index b52285481687..b79f24e28545 100644
--- a/include/hw/i386/x86.h
+++ b/include/hw/i386/x86.h
@@ -51,9 +51,6 @@ typedef struct {
     qemu_irq *gsi;
     GMappedFile *initrd_mapped_file;
 
-    /* Configuration options: */
-    uint64_t max_ram_below_4g;
-
     /* RAM information (sizes, addresses, configuration): */
     ram_addr_t below_4g_mem_size, above_4g_mem_size;
 
@@ -82,7 +79,6 @@ typedef struct {
     AddressSpace *ioapic_as;
 } X86MachineState;
 
-#define X86_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g"
 #define X86_MACHINE_SMM              "smm"
 #define X86_MACHINE_ACPI             "acpi"
 
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index c5db7be6d8b1..6d6f6decb32c 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1831,6 +1831,45 @@ static void pc_machine_set_pit(Object *obj, bool value, Error **errp)
     pcms->pit_enabled = value;
 }
 
+static void pc_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
+                                            const char *name, void *opaque,
+                                            Error **errp)
+{
+    PCMachineState *pcms = PC_MACHINE(obj);
+    uint64_t value = pcms->max_ram_below_4g;
+
+    visit_type_size(v, name, &value, errp);
+}
+
+static void pc_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
+                                            const char *name, void *opaque,
+                                            Error **errp)
+{
+    PCMachineState *pcms = PC_MACHINE(obj);
+    Error *error = NULL;
+    uint64_t value;
+
+    visit_type_size(v, name, &value, &error);
+    if (error) {
+        error_propagate(errp, error);
+        return;
+    }
+    if (value > 4 * GiB) {
+        error_setg(&error,
+                   "Machine option 'max-ram-below-4g=%"PRIu64
+                   "' expects size less than or equal to 4G", value);
+        error_propagate(errp, error);
+        return;
+    }
+
+    if (value < 1 * MiB) {
+        warn_report("Only %" PRIu64 " bytes of RAM below the 4GiB boundary,"
+                    "BIOS may not work with less than 1MiB", value);
+    }
+
+    pcms->max_ram_below_4g = value;
+}
+
 static void pc_machine_initfn(Object *obj)
 {
     PCMachineState *pcms = PC_MACHINE(obj);
@@ -1840,6 +1879,7 @@ static void pc_machine_initfn(Object *obj)
 #else
     pcms->vmport = ON_OFF_AUTO_OFF;
 #endif /* CONFIG_VMPORT */
+    pcms->max_ram_below_4g = 0; /* use default */
     /* acpi build is enabled by default if machine supports it */
     pcms->acpi_build_enabled = PC_MACHINE_GET_CLASS(pcms)->has_acpi_build;
     pcms->smbus_enabled = true;
@@ -1938,6 +1978,12 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
     mc->numa_mem_supported = true;
     mc->default_ram_id = "pc.ram";
 
+    object_class_property_add(oc, PC_MACHINE_MAX_RAM_BELOW_4G, "size",
+        pc_machine_get_max_ram_below_4g, pc_machine_set_max_ram_below_4g,
+        NULL, NULL);
+    object_class_property_set_description(oc, PC_MACHINE_MAX_RAM_BELOW_4G,
+        "Maximum ram below the 4G boundary (32bit boundary)");
+
     object_class_property_add(oc, PC_MACHINE_DEVMEM_REGION_SIZE, "int",
         pc_machine_get_device_memory_region_size, NULL,
         NULL, NULL);
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index f66e1d73ce0b..503c35f7bf4c 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -127,11 +127,11 @@ static void pc_init1(MachineState *machine,
     if (xen_enabled()) {
         xen_hvm_init(pcms, &ram_memory);
     } else {
-        if (!x86ms->max_ram_below_4g) {
-            x86ms->max_ram_below_4g = 0xe0000000; /* default: 3.5G */
+        if (!pcms->max_ram_below_4g) {
+            pcms->max_ram_below_4g = 0xe0000000; /* default: 3.5G */
         }
-        lowmem = x86ms->max_ram_below_4g;
-        if (machine->ram_size >= x86ms->max_ram_below_4g) {
+        lowmem = pcms->max_ram_below_4g;
+        if (machine->ram_size >= pcms->max_ram_below_4g) {
             if (pcmc->gigabyte_align) {
                 if (lowmem > 0xc0000000) {
                     lowmem = 0xc0000000;
@@ -140,7 +140,7 @@ static void pc_init1(MachineState *machine,
                     warn_report("Large machine and max_ram_below_4g "
                                 "(%" PRIu64 ") not a multiple of 1G; "
                                 "possible bad performance.",
-                                x86ms->max_ram_below_4g);
+                                pcms->max_ram_below_4g);
                 }
             }
         }
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 4ba8ac8774e4..90e8fb2cb737 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -154,18 +154,18 @@ static void pc_q35_init(MachineState *machine)
     /* Handle the machine opt max-ram-below-4g.  It is basically doing
      * min(qemu limit, user limit).
      */
-    if (!x86ms->max_ram_below_4g) {
-        x86ms->max_ram_below_4g = 4 * GiB;
+    if (!pcms->max_ram_below_4g) {
+        pcms->max_ram_below_4g = 4 * GiB;
     }
-    if (lowmem > x86ms->max_ram_below_4g) {
-        lowmem = x86ms->max_ram_below_4g;
+    if (lowmem > pcms->max_ram_below_4g) {
+        lowmem = pcms->max_ram_below_4g;
         if (machine->ram_size - lowmem > lowmem &&
             lowmem & (1 * GiB - 1)) {
             warn_report("There is possibly poor performance as the ram size "
                         " (0x%" PRIx64 ") is more then twice the size of"
                         " max-ram-below-4g (%"PRIu64") and"
                         " max-ram-below-4g is not a multiple of 1G.",
-                        (uint64_t)machine->ram_size, x86ms->max_ram_below_4g);
+                        (uint64_t)machine->ram_size, pcms->max_ram_below_4g);
         }
     }
 
diff --git a/hw/i386/x86.c b/hw/i386/x86.c
index 7a3bc7ab6639..49884e5c1597 100644
--- a/hw/i386/x86.c
+++ b/hw/i386/x86.c
@@ -846,45 +846,6 @@ void x86_bios_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
                                 bios);
 }
 
-static void x86_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
-                                             const char *name, void *opaque,
-                                             Error **errp)
-{
-    X86MachineState *x86ms = X86_MACHINE(obj);
-    uint64_t value = x86ms->max_ram_below_4g;
-
-    visit_type_size(v, name, &value, errp);
-}
-
-static void x86_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
-                                             const char *name, void *opaque,
-                                             Error **errp)
-{
-    X86MachineState *x86ms = X86_MACHINE(obj);
-    Error *error = NULL;
-    uint64_t value;
-
-    visit_type_size(v, name, &value, &error);
-    if (error) {
-        error_propagate(errp, error);
-        return;
-    }
-    if (value > 4 * GiB) {
-        error_setg(&error,
-                   "Machine option 'max-ram-below-4g=%"PRIu64
-                   "' expects size less than or equal to 4G", value);
-        error_propagate(errp, error);
-        return;
-    }
-
-    if (value < 1 * MiB) {
-        warn_report("Only %" PRIu64 " bytes of RAM below the 4GiB boundary,"
-                    "BIOS may not work with less than 1MiB", value);
-    }
-
-    x86ms->max_ram_below_4g = value;
-}
-
 bool x86_machine_is_smm_enabled(X86MachineState *x86ms)
 {
     bool smm_available = false;
@@ -958,7 +919,6 @@ static void x86_machine_initfn(Object *obj)
 
     x86ms->smm = ON_OFF_AUTO_AUTO;
     x86ms->acpi = ON_OFF_AUTO_AUTO;
-    x86ms->max_ram_below_4g = 0; /* use default */
     x86ms->smp_dies = 1;
 
     x86ms->apicid_from_cpu_idx = x86_apicid_from_cpu_idx;
@@ -980,12 +940,6 @@ static void x86_machine_class_init(ObjectClass *oc, void *data)
     x86mc->save_tsc_khz = true;
     nc->nmi_monitor_handler = x86_nmi;
 
-    object_class_property_add(oc, X86_MACHINE_MAX_RAM_BELOW_4G, "size",
-        x86_machine_get_max_ram_below_4g, x86_machine_set_max_ram_below_4g,
-        NULL, NULL);
-    object_class_property_set_description(oc, X86_MACHINE_MAX_RAM_BELOW_4G,
-        "Maximum ram below the 4G boundary (32bit boundary)");
-
     object_class_property_add(oc, X86_MACHINE_SMM, "OnOffAuto",
         x86_machine_get_smm, x86_machine_set_smm,
         NULL, NULL);
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index 82ece6b9e739..d6f4674418e9 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -203,7 +203,7 @@ static void xen_ram_init(PCMachineState *pcms,
     ram_addr_t block_len;
     uint64_t user_lowmem =
         object_property_get_uint(qdev_get_machine(),
-                                 X86_MACHINE_MAX_RAM_BELOW_4G,
+                                 PC_MACHINE_MAX_RAM_BELOW_4G,
                                  &error_abort);
 
     /* Handle the machine opt max-ram-below-4g.  It is basically doing
-- 
2.18.4



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH v3 3/4] x86: move max-ram-below-4g to pc
@ 2020-05-29  7:39   ` Gerd Hoffmann
  0 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, Marcel Apfelbaum,
	xen-devel, Anthony Perard, Paolo Bonzini, philmd,
	Richard Henderson

Move from X86MachineClass to PCMachineClass so it disappears
from microvm machine type property list.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/hw/i386/pc.h  |  2 ++
 include/hw/i386/x86.h |  4 ----
 hw/i386/pc.c          | 46 +++++++++++++++++++++++++++++++++++++++++++
 hw/i386/pc_piix.c     | 10 +++++-----
 hw/i386/pc_q35.c      | 10 +++++-----
 hw/i386/x86.c         | 46 -------------------------------------------
 hw/i386/xen/xen-hvm.c |  2 +-
 7 files changed, 59 insertions(+), 61 deletions(-)

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 5e3b19ab78fc..dce1273c7dad 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -35,6 +35,7 @@ struct PCMachineState {
     PFlashCFI01 *flash[2];
 
     /* Configuration options: */
+    uint64_t max_ram_below_4g;
     OnOffAuto vmport;
 
     bool acpi_build_enabled;
@@ -51,6 +52,7 @@ struct PCMachineState {
 };
 
 #define PC_MACHINE_ACPI_DEVICE_PROP "acpi-device"
+#define PC_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g"
 #define PC_MACHINE_DEVMEM_REGION_SIZE "device-memory-region-size"
 #define PC_MACHINE_VMPORT           "vmport"
 #define PC_MACHINE_SMBUS            "smbus"
diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h
index b52285481687..b79f24e28545 100644
--- a/include/hw/i386/x86.h
+++ b/include/hw/i386/x86.h
@@ -51,9 +51,6 @@ typedef struct {
     qemu_irq *gsi;
     GMappedFile *initrd_mapped_file;
 
-    /* Configuration options: */
-    uint64_t max_ram_below_4g;
-
     /* RAM information (sizes, addresses, configuration): */
     ram_addr_t below_4g_mem_size, above_4g_mem_size;
 
@@ -82,7 +79,6 @@ typedef struct {
     AddressSpace *ioapic_as;
 } X86MachineState;
 
-#define X86_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g"
 #define X86_MACHINE_SMM              "smm"
 #define X86_MACHINE_ACPI             "acpi"
 
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index c5db7be6d8b1..6d6f6decb32c 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1831,6 +1831,45 @@ static void pc_machine_set_pit(Object *obj, bool value, Error **errp)
     pcms->pit_enabled = value;
 }
 
+static void pc_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
+                                            const char *name, void *opaque,
+                                            Error **errp)
+{
+    PCMachineState *pcms = PC_MACHINE(obj);
+    uint64_t value = pcms->max_ram_below_4g;
+
+    visit_type_size(v, name, &value, errp);
+}
+
+static void pc_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
+                                            const char *name, void *opaque,
+                                            Error **errp)
+{
+    PCMachineState *pcms = PC_MACHINE(obj);
+    Error *error = NULL;
+    uint64_t value;
+
+    visit_type_size(v, name, &value, &error);
+    if (error) {
+        error_propagate(errp, error);
+        return;
+    }
+    if (value > 4 * GiB) {
+        error_setg(&error,
+                   "Machine option 'max-ram-below-4g=%"PRIu64
+                   "' expects size less than or equal to 4G", value);
+        error_propagate(errp, error);
+        return;
+    }
+
+    if (value < 1 * MiB) {
+        warn_report("Only %" PRIu64 " bytes of RAM below the 4GiB boundary,"
+                    "BIOS may not work with less than 1MiB", value);
+    }
+
+    pcms->max_ram_below_4g = value;
+}
+
 static void pc_machine_initfn(Object *obj)
 {
     PCMachineState *pcms = PC_MACHINE(obj);
@@ -1840,6 +1879,7 @@ static void pc_machine_initfn(Object *obj)
 #else
     pcms->vmport = ON_OFF_AUTO_OFF;
 #endif /* CONFIG_VMPORT */
+    pcms->max_ram_below_4g = 0; /* use default */
     /* acpi build is enabled by default if machine supports it */
     pcms->acpi_build_enabled = PC_MACHINE_GET_CLASS(pcms)->has_acpi_build;
     pcms->smbus_enabled = true;
@@ -1938,6 +1978,12 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
     mc->numa_mem_supported = true;
     mc->default_ram_id = "pc.ram";
 
+    object_class_property_add(oc, PC_MACHINE_MAX_RAM_BELOW_4G, "size",
+        pc_machine_get_max_ram_below_4g, pc_machine_set_max_ram_below_4g,
+        NULL, NULL);
+    object_class_property_set_description(oc, PC_MACHINE_MAX_RAM_BELOW_4G,
+        "Maximum ram below the 4G boundary (32bit boundary)");
+
     object_class_property_add(oc, PC_MACHINE_DEVMEM_REGION_SIZE, "int",
         pc_machine_get_device_memory_region_size, NULL,
         NULL, NULL);
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index f66e1d73ce0b..503c35f7bf4c 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -127,11 +127,11 @@ static void pc_init1(MachineState *machine,
     if (xen_enabled()) {
         xen_hvm_init(pcms, &ram_memory);
     } else {
-        if (!x86ms->max_ram_below_4g) {
-            x86ms->max_ram_below_4g = 0xe0000000; /* default: 3.5G */
+        if (!pcms->max_ram_below_4g) {
+            pcms->max_ram_below_4g = 0xe0000000; /* default: 3.5G */
         }
-        lowmem = x86ms->max_ram_below_4g;
-        if (machine->ram_size >= x86ms->max_ram_below_4g) {
+        lowmem = pcms->max_ram_below_4g;
+        if (machine->ram_size >= pcms->max_ram_below_4g) {
             if (pcmc->gigabyte_align) {
                 if (lowmem > 0xc0000000) {
                     lowmem = 0xc0000000;
@@ -140,7 +140,7 @@ static void pc_init1(MachineState *machine,
                     warn_report("Large machine and max_ram_below_4g "
                                 "(%" PRIu64 ") not a multiple of 1G; "
                                 "possible bad performance.",
-                                x86ms->max_ram_below_4g);
+                                pcms->max_ram_below_4g);
                 }
             }
         }
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 4ba8ac8774e4..90e8fb2cb737 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -154,18 +154,18 @@ static void pc_q35_init(MachineState *machine)
     /* Handle the machine opt max-ram-below-4g.  It is basically doing
      * min(qemu limit, user limit).
      */
-    if (!x86ms->max_ram_below_4g) {
-        x86ms->max_ram_below_4g = 4 * GiB;
+    if (!pcms->max_ram_below_4g) {
+        pcms->max_ram_below_4g = 4 * GiB;
     }
-    if (lowmem > x86ms->max_ram_below_4g) {
-        lowmem = x86ms->max_ram_below_4g;
+    if (lowmem > pcms->max_ram_below_4g) {
+        lowmem = pcms->max_ram_below_4g;
         if (machine->ram_size - lowmem > lowmem &&
             lowmem & (1 * GiB - 1)) {
             warn_report("There is possibly poor performance as the ram size "
                         " (0x%" PRIx64 ") is more then twice the size of"
                         " max-ram-below-4g (%"PRIu64") and"
                         " max-ram-below-4g is not a multiple of 1G.",
-                        (uint64_t)machine->ram_size, x86ms->max_ram_below_4g);
+                        (uint64_t)machine->ram_size, pcms->max_ram_below_4g);
         }
     }
 
diff --git a/hw/i386/x86.c b/hw/i386/x86.c
index 7a3bc7ab6639..49884e5c1597 100644
--- a/hw/i386/x86.c
+++ b/hw/i386/x86.c
@@ -846,45 +846,6 @@ void x86_bios_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
                                 bios);
 }
 
-static void x86_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
-                                             const char *name, void *opaque,
-                                             Error **errp)
-{
-    X86MachineState *x86ms = X86_MACHINE(obj);
-    uint64_t value = x86ms->max_ram_below_4g;
-
-    visit_type_size(v, name, &value, errp);
-}
-
-static void x86_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
-                                             const char *name, void *opaque,
-                                             Error **errp)
-{
-    X86MachineState *x86ms = X86_MACHINE(obj);
-    Error *error = NULL;
-    uint64_t value;
-
-    visit_type_size(v, name, &value, &error);
-    if (error) {
-        error_propagate(errp, error);
-        return;
-    }
-    if (value > 4 * GiB) {
-        error_setg(&error,
-                   "Machine option 'max-ram-below-4g=%"PRIu64
-                   "' expects size less than or equal to 4G", value);
-        error_propagate(errp, error);
-        return;
-    }
-
-    if (value < 1 * MiB) {
-        warn_report("Only %" PRIu64 " bytes of RAM below the 4GiB boundary,"
-                    "BIOS may not work with less than 1MiB", value);
-    }
-
-    x86ms->max_ram_below_4g = value;
-}
-
 bool x86_machine_is_smm_enabled(X86MachineState *x86ms)
 {
     bool smm_available = false;
@@ -958,7 +919,6 @@ static void x86_machine_initfn(Object *obj)
 
     x86ms->smm = ON_OFF_AUTO_AUTO;
     x86ms->acpi = ON_OFF_AUTO_AUTO;
-    x86ms->max_ram_below_4g = 0; /* use default */
     x86ms->smp_dies = 1;
 
     x86ms->apicid_from_cpu_idx = x86_apicid_from_cpu_idx;
@@ -980,12 +940,6 @@ static void x86_machine_class_init(ObjectClass *oc, void *data)
     x86mc->save_tsc_khz = true;
     nc->nmi_monitor_handler = x86_nmi;
 
-    object_class_property_add(oc, X86_MACHINE_MAX_RAM_BELOW_4G, "size",
-        x86_machine_get_max_ram_below_4g, x86_machine_set_max_ram_below_4g,
-        NULL, NULL);
-    object_class_property_set_description(oc, X86_MACHINE_MAX_RAM_BELOW_4G,
-        "Maximum ram below the 4G boundary (32bit boundary)");
-
     object_class_property_add(oc, X86_MACHINE_SMM, "OnOffAuto",
         x86_machine_get_smm, x86_machine_set_smm,
         NULL, NULL);
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index 82ece6b9e739..d6f4674418e9 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -203,7 +203,7 @@ static void xen_ram_init(PCMachineState *pcms,
     ram_addr_t block_len;
     uint64_t user_lowmem =
         object_property_get_uint(qdev_get_machine(),
-                                 X86_MACHINE_MAX_RAM_BELOW_4G,
+                                 PC_MACHINE_MAX_RAM_BELOW_4G,
                                  &error_abort);
 
     /* Handle the machine opt max-ram-below-4g.  It is basically doing
-- 
2.18.4



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH v3 4/4] microvm: move virtio base to 0xfeb00000
  2020-05-29  7:39 ` Gerd Hoffmann
@ 2020-05-29  7:39   ` Gerd Hoffmann
  -1 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

Place virtio-mmio devices near the other mmio regions,
next ioapic is at @ 0xfec00000.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 include/hw/i386/microvm.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/hw/i386/microvm.h b/include/hw/i386/microvm.h
index ba68d1f22bb3..fd34b78e0d2a 100644
--- a/include/hw/i386/microvm.h
+++ b/include/hw/i386/microvm.h
@@ -26,7 +26,7 @@
 #include "hw/i386/x86.h"
 
 /* Platform virtio definitions */
-#define VIRTIO_MMIO_BASE      0xc0000000
+#define VIRTIO_MMIO_BASE      0xfeb00000
 #define VIRTIO_IRQ_BASE       5
 #define VIRTIO_NUM_TRANSPORTS 8
 #define VIRTIO_CMDLINE_MAXLEN 64
-- 
2.18.4



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH v3 4/4] microvm: move virtio base to 0xfeb00000
@ 2020-05-29  7:39   ` Gerd Hoffmann
  0 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-05-29  7:39 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Gerd Hoffmann, Marcel Apfelbaum,
	xen-devel, Anthony Perard, Paolo Bonzini, philmd,
	Richard Henderson

Place virtio-mmio devices near the other mmio regions,
next ioapic is at @ 0xfec00000.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 include/hw/i386/microvm.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/hw/i386/microvm.h b/include/hw/i386/microvm.h
index ba68d1f22bb3..fd34b78e0d2a 100644
--- a/include/hw/i386/microvm.h
+++ b/include/hw/i386/microvm.h
@@ -26,7 +26,7 @@
 #include "hw/i386/x86.h"
 
 /* Platform virtio definitions */
-#define VIRTIO_MMIO_BASE      0xc0000000
+#define VIRTIO_MMIO_BASE      0xfeb00000
 #define VIRTIO_IRQ_BASE       5
 #define VIRTIO_NUM_TRANSPORTS 8
 #define VIRTIO_CMDLINE_MAXLEN 64
-- 
2.18.4



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* RE: [PATCH v3 3/4] x86: move max-ram-below-4g to pc
  2020-05-29  7:39   ` Gerd Hoffmann
@ 2020-05-29  7:44     ` Paul Durrant
  -1 siblings, 0 replies; 22+ messages in thread
From: Paul Durrant @ 2020-05-29  7:44 UTC (permalink / raw)
  To: 'Gerd Hoffmann', qemu-devel
  Cc: 'Stefano Stabellini', 'Eduardo Habkost',
	'Sergio Lopez', 'Michael S. Tsirkin',
	imammedo, xen-devel, 'Anthony Perard',
	'Paolo Bonzini', philmd, 'Richard Henderson'

> -----Original Message-----
> From: Gerd Hoffmann <kraxel@redhat.com>
> Sent: 29 May 2020 08:40
> To: qemu-devel@nongnu.org
> Cc: Paolo Bonzini <pbonzini@redhat.com>; Eduardo Habkost <ehabkost@redhat.com>; Sergio Lopez
> <slp@redhat.com>; philmd@redhat.com; Marcel Apfelbaum <marcel.apfelbaum@gmail.com>; Stefano Stabellini
> <sstabellini@kernel.org>; Paul Durrant <paul@xen.org>; xen-devel@lists.xenproject.org; Michael S.
> Tsirkin <mst@redhat.com>; Anthony Perard <anthony.perard@citrix.com>; Richard Henderson
> <rth@twiddle.net>; imammedo@redhat.com; Gerd Hoffmann <kraxel@redhat.com>
> Subject: [PATCH v3 3/4] x86: move max-ram-below-4g to pc
> 
> Move from X86MachineClass to PCMachineClass so it disappears
> from microvm machine type property list.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Acked-by: Paolo Bonzini <pbonzini@redhat.com>

Xen change...

Reviewed-by: Paul Durrant <paul@xen.org>

> ---
>  include/hw/i386/pc.h  |  2 ++
>  include/hw/i386/x86.h |  4 ----
>  hw/i386/pc.c          | 46 +++++++++++++++++++++++++++++++++++++++++++
>  hw/i386/pc_piix.c     | 10 +++++-----
>  hw/i386/pc_q35.c      | 10 +++++-----
>  hw/i386/x86.c         | 46 -------------------------------------------
>  hw/i386/xen/xen-hvm.c |  2 +-
>  7 files changed, 59 insertions(+), 61 deletions(-)
> 
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 5e3b19ab78fc..dce1273c7dad 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -35,6 +35,7 @@ struct PCMachineState {
>      PFlashCFI01 *flash[2];
> 
>      /* Configuration options: */
> +    uint64_t max_ram_below_4g;
>      OnOffAuto vmport;
> 
>      bool acpi_build_enabled;
> @@ -51,6 +52,7 @@ struct PCMachineState {
>  };
> 
>  #define PC_MACHINE_ACPI_DEVICE_PROP "acpi-device"
> +#define PC_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g"
>  #define PC_MACHINE_DEVMEM_REGION_SIZE "device-memory-region-size"
>  #define PC_MACHINE_VMPORT           "vmport"
>  #define PC_MACHINE_SMBUS            "smbus"
> diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h
> index b52285481687..b79f24e28545 100644
> --- a/include/hw/i386/x86.h
> +++ b/include/hw/i386/x86.h
> @@ -51,9 +51,6 @@ typedef struct {
>      qemu_irq *gsi;
>      GMappedFile *initrd_mapped_file;
> 
> -    /* Configuration options: */
> -    uint64_t max_ram_below_4g;
> -
>      /* RAM information (sizes, addresses, configuration): */
>      ram_addr_t below_4g_mem_size, above_4g_mem_size;
> 
> @@ -82,7 +79,6 @@ typedef struct {
>      AddressSpace *ioapic_as;
>  } X86MachineState;
> 
> -#define X86_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g"
>  #define X86_MACHINE_SMM              "smm"
>  #define X86_MACHINE_ACPI             "acpi"
> 
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index c5db7be6d8b1..6d6f6decb32c 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1831,6 +1831,45 @@ static void pc_machine_set_pit(Object *obj, bool value, Error **errp)
>      pcms->pit_enabled = value;
>  }
> 
> +static void pc_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
> +                                            const char *name, void *opaque,
> +                                            Error **errp)
> +{
> +    PCMachineState *pcms = PC_MACHINE(obj);
> +    uint64_t value = pcms->max_ram_below_4g;
> +
> +    visit_type_size(v, name, &value, errp);
> +}
> +
> +static void pc_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
> +                                            const char *name, void *opaque,
> +                                            Error **errp)
> +{
> +    PCMachineState *pcms = PC_MACHINE(obj);
> +    Error *error = NULL;
> +    uint64_t value;
> +
> +    visit_type_size(v, name, &value, &error);
> +    if (error) {
> +        error_propagate(errp, error);
> +        return;
> +    }
> +    if (value > 4 * GiB) {
> +        error_setg(&error,
> +                   "Machine option 'max-ram-below-4g=%"PRIu64
> +                   "' expects size less than or equal to 4G", value);
> +        error_propagate(errp, error);
> +        return;
> +    }
> +
> +    if (value < 1 * MiB) {
> +        warn_report("Only %" PRIu64 " bytes of RAM below the 4GiB boundary,"
> +                    "BIOS may not work with less than 1MiB", value);
> +    }
> +
> +    pcms->max_ram_below_4g = value;
> +}
> +
>  static void pc_machine_initfn(Object *obj)
>  {
>      PCMachineState *pcms = PC_MACHINE(obj);
> @@ -1840,6 +1879,7 @@ static void pc_machine_initfn(Object *obj)
>  #else
>      pcms->vmport = ON_OFF_AUTO_OFF;
>  #endif /* CONFIG_VMPORT */
> +    pcms->max_ram_below_4g = 0; /* use default */
>      /* acpi build is enabled by default if machine supports it */
>      pcms->acpi_build_enabled = PC_MACHINE_GET_CLASS(pcms)->has_acpi_build;
>      pcms->smbus_enabled = true;
> @@ -1938,6 +1978,12 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
>      mc->numa_mem_supported = true;
>      mc->default_ram_id = "pc.ram";
> 
> +    object_class_property_add(oc, PC_MACHINE_MAX_RAM_BELOW_4G, "size",
> +        pc_machine_get_max_ram_below_4g, pc_machine_set_max_ram_below_4g,
> +        NULL, NULL);
> +    object_class_property_set_description(oc, PC_MACHINE_MAX_RAM_BELOW_4G,
> +        "Maximum ram below the 4G boundary (32bit boundary)");
> +
>      object_class_property_add(oc, PC_MACHINE_DEVMEM_REGION_SIZE, "int",
>          pc_machine_get_device_memory_region_size, NULL,
>          NULL, NULL);
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index f66e1d73ce0b..503c35f7bf4c 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -127,11 +127,11 @@ static void pc_init1(MachineState *machine,
>      if (xen_enabled()) {
>          xen_hvm_init(pcms, &ram_memory);
>      } else {
> -        if (!x86ms->max_ram_below_4g) {
> -            x86ms->max_ram_below_4g = 0xe0000000; /* default: 3.5G */
> +        if (!pcms->max_ram_below_4g) {
> +            pcms->max_ram_below_4g = 0xe0000000; /* default: 3.5G */
>          }
> -        lowmem = x86ms->max_ram_below_4g;
> -        if (machine->ram_size >= x86ms->max_ram_below_4g) {
> +        lowmem = pcms->max_ram_below_4g;
> +        if (machine->ram_size >= pcms->max_ram_below_4g) {
>              if (pcmc->gigabyte_align) {
>                  if (lowmem > 0xc0000000) {
>                      lowmem = 0xc0000000;
> @@ -140,7 +140,7 @@ static void pc_init1(MachineState *machine,
>                      warn_report("Large machine and max_ram_below_4g "
>                                  "(%" PRIu64 ") not a multiple of 1G; "
>                                  "possible bad performance.",
> -                                x86ms->max_ram_below_4g);
> +                                pcms->max_ram_below_4g);
>                  }
>              }
>          }
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index 4ba8ac8774e4..90e8fb2cb737 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -154,18 +154,18 @@ static void pc_q35_init(MachineState *machine)
>      /* Handle the machine opt max-ram-below-4g.  It is basically doing
>       * min(qemu limit, user limit).
>       */
> -    if (!x86ms->max_ram_below_4g) {
> -        x86ms->max_ram_below_4g = 4 * GiB;
> +    if (!pcms->max_ram_below_4g) {
> +        pcms->max_ram_below_4g = 4 * GiB;
>      }
> -    if (lowmem > x86ms->max_ram_below_4g) {
> -        lowmem = x86ms->max_ram_below_4g;
> +    if (lowmem > pcms->max_ram_below_4g) {
> +        lowmem = pcms->max_ram_below_4g;
>          if (machine->ram_size - lowmem > lowmem &&
>              lowmem & (1 * GiB - 1)) {
>              warn_report("There is possibly poor performance as the ram size "
>                          " (0x%" PRIx64 ") is more then twice the size of"
>                          " max-ram-below-4g (%"PRIu64") and"
>                          " max-ram-below-4g is not a multiple of 1G.",
> -                        (uint64_t)machine->ram_size, x86ms->max_ram_below_4g);
> +                        (uint64_t)machine->ram_size, pcms->max_ram_below_4g);
>          }
>      }
> 
> diff --git a/hw/i386/x86.c b/hw/i386/x86.c
> index 7a3bc7ab6639..49884e5c1597 100644
> --- a/hw/i386/x86.c
> +++ b/hw/i386/x86.c
> @@ -846,45 +846,6 @@ void x86_bios_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
>                                  bios);
>  }
> 
> -static void x86_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
> -                                             const char *name, void *opaque,
> -                                             Error **errp)
> -{
> -    X86MachineState *x86ms = X86_MACHINE(obj);
> -    uint64_t value = x86ms->max_ram_below_4g;
> -
> -    visit_type_size(v, name, &value, errp);
> -}
> -
> -static void x86_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
> -                                             const char *name, void *opaque,
> -                                             Error **errp)
> -{
> -    X86MachineState *x86ms = X86_MACHINE(obj);
> -    Error *error = NULL;
> -    uint64_t value;
> -
> -    visit_type_size(v, name, &value, &error);
> -    if (error) {
> -        error_propagate(errp, error);
> -        return;
> -    }
> -    if (value > 4 * GiB) {
> -        error_setg(&error,
> -                   "Machine option 'max-ram-below-4g=%"PRIu64
> -                   "' expects size less than or equal to 4G", value);
> -        error_propagate(errp, error);
> -        return;
> -    }
> -
> -    if (value < 1 * MiB) {
> -        warn_report("Only %" PRIu64 " bytes of RAM below the 4GiB boundary,"
> -                    "BIOS may not work with less than 1MiB", value);
> -    }
> -
> -    x86ms->max_ram_below_4g = value;
> -}
> -
>  bool x86_machine_is_smm_enabled(X86MachineState *x86ms)
>  {
>      bool smm_available = false;
> @@ -958,7 +919,6 @@ static void x86_machine_initfn(Object *obj)
> 
>      x86ms->smm = ON_OFF_AUTO_AUTO;
>      x86ms->acpi = ON_OFF_AUTO_AUTO;
> -    x86ms->max_ram_below_4g = 0; /* use default */
>      x86ms->smp_dies = 1;
> 
>      x86ms->apicid_from_cpu_idx = x86_apicid_from_cpu_idx;
> @@ -980,12 +940,6 @@ static void x86_machine_class_init(ObjectClass *oc, void *data)
>      x86mc->save_tsc_khz = true;
>      nc->nmi_monitor_handler = x86_nmi;
> 
> -    object_class_property_add(oc, X86_MACHINE_MAX_RAM_BELOW_4G, "size",
> -        x86_machine_get_max_ram_below_4g, x86_machine_set_max_ram_below_4g,
> -        NULL, NULL);
> -    object_class_property_set_description(oc, X86_MACHINE_MAX_RAM_BELOW_4G,
> -        "Maximum ram below the 4G boundary (32bit boundary)");
> -
>      object_class_property_add(oc, X86_MACHINE_SMM, "OnOffAuto",
>          x86_machine_get_smm, x86_machine_set_smm,
>          NULL, NULL);
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index 82ece6b9e739..d6f4674418e9 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -203,7 +203,7 @@ static void xen_ram_init(PCMachineState *pcms,
>      ram_addr_t block_len;
>      uint64_t user_lowmem =
>          object_property_get_uint(qdev_get_machine(),
> -                                 X86_MACHINE_MAX_RAM_BELOW_4G,
> +                                 PC_MACHINE_MAX_RAM_BELOW_4G,
>                                   &error_abort);
> 
>      /* Handle the machine opt max-ram-below-4g.  It is basically doing
> --
> 2.18.4




^ permalink raw reply	[flat|nested] 22+ messages in thread

* RE: [PATCH v3 3/4] x86: move max-ram-below-4g to pc
@ 2020-05-29  7:44     ` Paul Durrant
  0 siblings, 0 replies; 22+ messages in thread
From: Paul Durrant @ 2020-05-29  7:44 UTC (permalink / raw)
  To: 'Gerd Hoffmann', qemu-devel
  Cc: 'Stefano Stabellini', 'Eduardo Habkost',
	'Sergio Lopez', 'Michael S. Tsirkin',
	imammedo, 'Marcel Apfelbaum',
	xen-devel, 'Anthony Perard', 'Paolo Bonzini',
	philmd, 'Richard Henderson'

> -----Original Message-----
> From: Gerd Hoffmann <kraxel@redhat.com>
> Sent: 29 May 2020 08:40
> To: qemu-devel@nongnu.org
> Cc: Paolo Bonzini <pbonzini@redhat.com>; Eduardo Habkost <ehabkost@redhat.com>; Sergio Lopez
> <slp@redhat.com>; philmd@redhat.com; Marcel Apfelbaum <marcel.apfelbaum@gmail.com>; Stefano Stabellini
> <sstabellini@kernel.org>; Paul Durrant <paul@xen.org>; xen-devel@lists.xenproject.org; Michael S.
> Tsirkin <mst@redhat.com>; Anthony Perard <anthony.perard@citrix.com>; Richard Henderson
> <rth@twiddle.net>; imammedo@redhat.com; Gerd Hoffmann <kraxel@redhat.com>
> Subject: [PATCH v3 3/4] x86: move max-ram-below-4g to pc
> 
> Move from X86MachineClass to PCMachineClass so it disappears
> from microvm machine type property list.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Acked-by: Paolo Bonzini <pbonzini@redhat.com>

Xen change...

Reviewed-by: Paul Durrant <paul@xen.org>

> ---
>  include/hw/i386/pc.h  |  2 ++
>  include/hw/i386/x86.h |  4 ----
>  hw/i386/pc.c          | 46 +++++++++++++++++++++++++++++++++++++++++++
>  hw/i386/pc_piix.c     | 10 +++++-----
>  hw/i386/pc_q35.c      | 10 +++++-----
>  hw/i386/x86.c         | 46 -------------------------------------------
>  hw/i386/xen/xen-hvm.c |  2 +-
>  7 files changed, 59 insertions(+), 61 deletions(-)
> 
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 5e3b19ab78fc..dce1273c7dad 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -35,6 +35,7 @@ struct PCMachineState {
>      PFlashCFI01 *flash[2];
> 
>      /* Configuration options: */
> +    uint64_t max_ram_below_4g;
>      OnOffAuto vmport;
> 
>      bool acpi_build_enabled;
> @@ -51,6 +52,7 @@ struct PCMachineState {
>  };
> 
>  #define PC_MACHINE_ACPI_DEVICE_PROP "acpi-device"
> +#define PC_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g"
>  #define PC_MACHINE_DEVMEM_REGION_SIZE "device-memory-region-size"
>  #define PC_MACHINE_VMPORT           "vmport"
>  #define PC_MACHINE_SMBUS            "smbus"
> diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h
> index b52285481687..b79f24e28545 100644
> --- a/include/hw/i386/x86.h
> +++ b/include/hw/i386/x86.h
> @@ -51,9 +51,6 @@ typedef struct {
>      qemu_irq *gsi;
>      GMappedFile *initrd_mapped_file;
> 
> -    /* Configuration options: */
> -    uint64_t max_ram_below_4g;
> -
>      /* RAM information (sizes, addresses, configuration): */
>      ram_addr_t below_4g_mem_size, above_4g_mem_size;
> 
> @@ -82,7 +79,6 @@ typedef struct {
>      AddressSpace *ioapic_as;
>  } X86MachineState;
> 
> -#define X86_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g"
>  #define X86_MACHINE_SMM              "smm"
>  #define X86_MACHINE_ACPI             "acpi"
> 
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index c5db7be6d8b1..6d6f6decb32c 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1831,6 +1831,45 @@ static void pc_machine_set_pit(Object *obj, bool value, Error **errp)
>      pcms->pit_enabled = value;
>  }
> 
> +static void pc_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
> +                                            const char *name, void *opaque,
> +                                            Error **errp)
> +{
> +    PCMachineState *pcms = PC_MACHINE(obj);
> +    uint64_t value = pcms->max_ram_below_4g;
> +
> +    visit_type_size(v, name, &value, errp);
> +}
> +
> +static void pc_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
> +                                            const char *name, void *opaque,
> +                                            Error **errp)
> +{
> +    PCMachineState *pcms = PC_MACHINE(obj);
> +    Error *error = NULL;
> +    uint64_t value;
> +
> +    visit_type_size(v, name, &value, &error);
> +    if (error) {
> +        error_propagate(errp, error);
> +        return;
> +    }
> +    if (value > 4 * GiB) {
> +        error_setg(&error,
> +                   "Machine option 'max-ram-below-4g=%"PRIu64
> +                   "' expects size less than or equal to 4G", value);
> +        error_propagate(errp, error);
> +        return;
> +    }
> +
> +    if (value < 1 * MiB) {
> +        warn_report("Only %" PRIu64 " bytes of RAM below the 4GiB boundary,"
> +                    "BIOS may not work with less than 1MiB", value);
> +    }
> +
> +    pcms->max_ram_below_4g = value;
> +}
> +
>  static void pc_machine_initfn(Object *obj)
>  {
>      PCMachineState *pcms = PC_MACHINE(obj);
> @@ -1840,6 +1879,7 @@ static void pc_machine_initfn(Object *obj)
>  #else
>      pcms->vmport = ON_OFF_AUTO_OFF;
>  #endif /* CONFIG_VMPORT */
> +    pcms->max_ram_below_4g = 0; /* use default */
>      /* acpi build is enabled by default if machine supports it */
>      pcms->acpi_build_enabled = PC_MACHINE_GET_CLASS(pcms)->has_acpi_build;
>      pcms->smbus_enabled = true;
> @@ -1938,6 +1978,12 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
>      mc->numa_mem_supported = true;
>      mc->default_ram_id = "pc.ram";
> 
> +    object_class_property_add(oc, PC_MACHINE_MAX_RAM_BELOW_4G, "size",
> +        pc_machine_get_max_ram_below_4g, pc_machine_set_max_ram_below_4g,
> +        NULL, NULL);
> +    object_class_property_set_description(oc, PC_MACHINE_MAX_RAM_BELOW_4G,
> +        "Maximum ram below the 4G boundary (32bit boundary)");
> +
>      object_class_property_add(oc, PC_MACHINE_DEVMEM_REGION_SIZE, "int",
>          pc_machine_get_device_memory_region_size, NULL,
>          NULL, NULL);
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index f66e1d73ce0b..503c35f7bf4c 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -127,11 +127,11 @@ static void pc_init1(MachineState *machine,
>      if (xen_enabled()) {
>          xen_hvm_init(pcms, &ram_memory);
>      } else {
> -        if (!x86ms->max_ram_below_4g) {
> -            x86ms->max_ram_below_4g = 0xe0000000; /* default: 3.5G */
> +        if (!pcms->max_ram_below_4g) {
> +            pcms->max_ram_below_4g = 0xe0000000; /* default: 3.5G */
>          }
> -        lowmem = x86ms->max_ram_below_4g;
> -        if (machine->ram_size >= x86ms->max_ram_below_4g) {
> +        lowmem = pcms->max_ram_below_4g;
> +        if (machine->ram_size >= pcms->max_ram_below_4g) {
>              if (pcmc->gigabyte_align) {
>                  if (lowmem > 0xc0000000) {
>                      lowmem = 0xc0000000;
> @@ -140,7 +140,7 @@ static void pc_init1(MachineState *machine,
>                      warn_report("Large machine and max_ram_below_4g "
>                                  "(%" PRIu64 ") not a multiple of 1G; "
>                                  "possible bad performance.",
> -                                x86ms->max_ram_below_4g);
> +                                pcms->max_ram_below_4g);
>                  }
>              }
>          }
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index 4ba8ac8774e4..90e8fb2cb737 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -154,18 +154,18 @@ static void pc_q35_init(MachineState *machine)
>      /* Handle the machine opt max-ram-below-4g.  It is basically doing
>       * min(qemu limit, user limit).
>       */
> -    if (!x86ms->max_ram_below_4g) {
> -        x86ms->max_ram_below_4g = 4 * GiB;
> +    if (!pcms->max_ram_below_4g) {
> +        pcms->max_ram_below_4g = 4 * GiB;
>      }
> -    if (lowmem > x86ms->max_ram_below_4g) {
> -        lowmem = x86ms->max_ram_below_4g;
> +    if (lowmem > pcms->max_ram_below_4g) {
> +        lowmem = pcms->max_ram_below_4g;
>          if (machine->ram_size - lowmem > lowmem &&
>              lowmem & (1 * GiB - 1)) {
>              warn_report("There is possibly poor performance as the ram size "
>                          " (0x%" PRIx64 ") is more then twice the size of"
>                          " max-ram-below-4g (%"PRIu64") and"
>                          " max-ram-below-4g is not a multiple of 1G.",
> -                        (uint64_t)machine->ram_size, x86ms->max_ram_below_4g);
> +                        (uint64_t)machine->ram_size, pcms->max_ram_below_4g);
>          }
>      }
> 
> diff --git a/hw/i386/x86.c b/hw/i386/x86.c
> index 7a3bc7ab6639..49884e5c1597 100644
> --- a/hw/i386/x86.c
> +++ b/hw/i386/x86.c
> @@ -846,45 +846,6 @@ void x86_bios_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
>                                  bios);
>  }
> 
> -static void x86_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
> -                                             const char *name, void *opaque,
> -                                             Error **errp)
> -{
> -    X86MachineState *x86ms = X86_MACHINE(obj);
> -    uint64_t value = x86ms->max_ram_below_4g;
> -
> -    visit_type_size(v, name, &value, errp);
> -}
> -
> -static void x86_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
> -                                             const char *name, void *opaque,
> -                                             Error **errp)
> -{
> -    X86MachineState *x86ms = X86_MACHINE(obj);
> -    Error *error = NULL;
> -    uint64_t value;
> -
> -    visit_type_size(v, name, &value, &error);
> -    if (error) {
> -        error_propagate(errp, error);
> -        return;
> -    }
> -    if (value > 4 * GiB) {
> -        error_setg(&error,
> -                   "Machine option 'max-ram-below-4g=%"PRIu64
> -                   "' expects size less than or equal to 4G", value);
> -        error_propagate(errp, error);
> -        return;
> -    }
> -
> -    if (value < 1 * MiB) {
> -        warn_report("Only %" PRIu64 " bytes of RAM below the 4GiB boundary,"
> -                    "BIOS may not work with less than 1MiB", value);
> -    }
> -
> -    x86ms->max_ram_below_4g = value;
> -}
> -
>  bool x86_machine_is_smm_enabled(X86MachineState *x86ms)
>  {
>      bool smm_available = false;
> @@ -958,7 +919,6 @@ static void x86_machine_initfn(Object *obj)
> 
>      x86ms->smm = ON_OFF_AUTO_AUTO;
>      x86ms->acpi = ON_OFF_AUTO_AUTO;
> -    x86ms->max_ram_below_4g = 0; /* use default */
>      x86ms->smp_dies = 1;
> 
>      x86ms->apicid_from_cpu_idx = x86_apicid_from_cpu_idx;
> @@ -980,12 +940,6 @@ static void x86_machine_class_init(ObjectClass *oc, void *data)
>      x86mc->save_tsc_khz = true;
>      nc->nmi_monitor_handler = x86_nmi;
> 
> -    object_class_property_add(oc, X86_MACHINE_MAX_RAM_BELOW_4G, "size",
> -        x86_machine_get_max_ram_below_4g, x86_machine_set_max_ram_below_4g,
> -        NULL, NULL);
> -    object_class_property_set_description(oc, X86_MACHINE_MAX_RAM_BELOW_4G,
> -        "Maximum ram below the 4G boundary (32bit boundary)");
> -
>      object_class_property_add(oc, X86_MACHINE_SMM, "OnOffAuto",
>          x86_machine_get_smm, x86_machine_set_smm,
>          NULL, NULL);
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index 82ece6b9e739..d6f4674418e9 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -203,7 +203,7 @@ static void xen_ram_init(PCMachineState *pcms,
>      ram_addr_t block_len;
>      uint64_t user_lowmem =
>          object_property_get_uint(qdev_get_machine(),
> -                                 X86_MACHINE_MAX_RAM_BELOW_4G,
> +                                 PC_MACHINE_MAX_RAM_BELOW_4G,
>                                   &error_abort);
> 
>      /* Handle the machine opt max-ram-below-4g.  It is basically doing
> --
> 2.18.4




^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 0/4] microvm: memory config tweaks
  2020-05-29  7:39 ` Gerd Hoffmann
@ 2020-06-02  5:30   ` Michael S. Tsirkin
  -1 siblings, 0 replies; 22+ messages in thread
From: Michael S. Tsirkin @ 2020-06-02  5:30 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	qemu-devel, imammedo, xen-devel, Anthony Perard, Paolo Bonzini,
	philmd, Richard Henderson

On Fri, May 29, 2020 at 09:39:53AM +0200, Gerd Hoffmann wrote:
> With more microvm memory config tweaks split this into its owns series,
> the microvm acpi patch series is already big enough ...

Okay.

We might want to add pci to microvm and maybe we'll need more space
then, but let's leave this for another day.

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>


> v2:
>  - use 3G split.
>  - add patch to move virtio-mmio region.
>  - pick up acks & reviews.
> v3:
>  - fix xen build.
>  - pick up acks & reviews.
> 
> take care,
>   Gerd
> 
> Gerd Hoffmann (4):
>   microvm: use 3G split unconditionally
>   microvm: drop max-ram-below-4g support
>   x86: move max-ram-below-4g to pc
>   microvm: move virtio base to 0xfeb00000
> 
>  include/hw/i386/microvm.h |  2 +-
>  include/hw/i386/pc.h      |  2 ++
>  include/hw/i386/x86.h     |  4 ----
>  hw/i386/microvm.c         | 35 +----------------------------
>  hw/i386/pc.c              | 46 +++++++++++++++++++++++++++++++++++++++
>  hw/i386/pc_piix.c         | 10 ++++-----
>  hw/i386/pc_q35.c          | 10 ++++-----
>  hw/i386/x86.c             | 46 ---------------------------------------
>  hw/i386/xen/xen-hvm.c     |  2 +-
>  9 files changed, 61 insertions(+), 96 deletions(-)
> 
> -- 
> 2.18.4



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 0/4] microvm: memory config tweaks
@ 2020-06-02  5:30   ` Michael S. Tsirkin
  0 siblings, 0 replies; 22+ messages in thread
From: Michael S. Tsirkin @ 2020-06-02  5:30 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	qemu-devel, imammedo, Marcel Apfelbaum, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

On Fri, May 29, 2020 at 09:39:53AM +0200, Gerd Hoffmann wrote:
> With more microvm memory config tweaks split this into its owns series,
> the microvm acpi patch series is already big enough ...

Okay.

We might want to add pci to microvm and maybe we'll need more space
then, but let's leave this for another day.

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>


> v2:
>  - use 3G split.
>  - add patch to move virtio-mmio region.
>  - pick up acks & reviews.
> v3:
>  - fix xen build.
>  - pick up acks & reviews.
> 
> take care,
>   Gerd
> 
> Gerd Hoffmann (4):
>   microvm: use 3G split unconditionally
>   microvm: drop max-ram-below-4g support
>   x86: move max-ram-below-4g to pc
>   microvm: move virtio base to 0xfeb00000
> 
>  include/hw/i386/microvm.h |  2 +-
>  include/hw/i386/pc.h      |  2 ++
>  include/hw/i386/x86.h     |  4 ----
>  hw/i386/microvm.c         | 35 +----------------------------
>  hw/i386/pc.c              | 46 +++++++++++++++++++++++++++++++++++++++
>  hw/i386/pc_piix.c         | 10 ++++-----
>  hw/i386/pc_q35.c          | 10 ++++-----
>  hw/i386/x86.c             | 46 ---------------------------------------
>  hw/i386/xen/xen-hvm.c     |  2 +-
>  9 files changed, 61 insertions(+), 96 deletions(-)
> 
> -- 
> 2.18.4



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 0/4] microvm: memory config tweaks
  2020-05-29  7:39 ` Gerd Hoffmann
@ 2020-06-08 13:25   ` Gerd Hoffmann
  -1 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-06-08 13:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, xen-devel, Anthony Perard,
	Paolo Bonzini, philmd, Richard Henderson

On Fri, May 29, 2020 at 09:39:53AM +0200, Gerd Hoffmann wrote:
> With more microvm memory config tweaks split this into its owns series,
> the microvm acpi patch series is already big enough ...
> 
> v2:
>  - use 3G split.
>  - add patch to move virtio-mmio region.
>  - pick up acks & reviews.
> v3:
>  - fix xen build.
>  - pick up acks & reviews.
> 
> take care,
>   Gerd

Ping.  Anyone going to pick this up?  MAINTAINERS lists Sergio+Paolo ...
Or should I send a pull req myself?

take care,
  Gerd



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 0/4] microvm: memory config tweaks
@ 2020-06-08 13:25   ` Gerd Hoffmann
  0 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-06-08 13:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Marcel Apfelbaum, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

On Fri, May 29, 2020 at 09:39:53AM +0200, Gerd Hoffmann wrote:
> With more microvm memory config tweaks split this into its owns series,
> the microvm acpi patch series is already big enough ...
> 
> v2:
>  - use 3G split.
>  - add patch to move virtio-mmio region.
>  - pick up acks & reviews.
> v3:
>  - fix xen build.
>  - pick up acks & reviews.
> 
> take care,
>   Gerd

Ping.  Anyone going to pick this up?  MAINTAINERS lists Sergio+Paolo ...
Or should I send a pull req myself?

take care,
  Gerd



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 0/4] microvm: memory config tweaks
  2020-05-29  7:39 ` Gerd Hoffmann
@ 2020-06-08 13:31   ` Michael S. Tsirkin
  -1 siblings, 0 replies; 22+ messages in thread
From: Michael S. Tsirkin @ 2020-06-08 13:31 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	qemu-devel, imammedo, xen-devel, Anthony Perard, Paolo Bonzini,
	philmd, Richard Henderson

On Fri, May 29, 2020 at 09:39:53AM +0200, Gerd Hoffmann wrote:
> With more microvm memory config tweaks split this into its owns series,
> the microvm acpi patch series is already big enough ...

Looks sane:

Acked-by: Michael S. Tsirkin <mst@redhat.com>

microvm things so should use that tree ...

> v2:
>  - use 3G split.
>  - add patch to move virtio-mmio region.
>  - pick up acks & reviews.
> v3:
>  - fix xen build.
>  - pick up acks & reviews.
> 
> take care,
>   Gerd
> 
> Gerd Hoffmann (4):
>   microvm: use 3G split unconditionally
>   microvm: drop max-ram-below-4g support
>   x86: move max-ram-below-4g to pc
>   microvm: move virtio base to 0xfeb00000
> 
>  include/hw/i386/microvm.h |  2 +-
>  include/hw/i386/pc.h      |  2 ++
>  include/hw/i386/x86.h     |  4 ----
>  hw/i386/microvm.c         | 35 +----------------------------
>  hw/i386/pc.c              | 46 +++++++++++++++++++++++++++++++++++++++
>  hw/i386/pc_piix.c         | 10 ++++-----
>  hw/i386/pc_q35.c          | 10 ++++-----
>  hw/i386/x86.c             | 46 ---------------------------------------
>  hw/i386/xen/xen-hvm.c     |  2 +-
>  9 files changed, 61 insertions(+), 96 deletions(-)
> 
> -- 
> 2.18.4



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 0/4] microvm: memory config tweaks
@ 2020-06-08 13:31   ` Michael S. Tsirkin
  0 siblings, 0 replies; 22+ messages in thread
From: Michael S. Tsirkin @ 2020-06-08 13:31 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	qemu-devel, imammedo, Marcel Apfelbaum, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

On Fri, May 29, 2020 at 09:39:53AM +0200, Gerd Hoffmann wrote:
> With more microvm memory config tweaks split this into its owns series,
> the microvm acpi patch series is already big enough ...

Looks sane:

Acked-by: Michael S. Tsirkin <mst@redhat.com>

microvm things so should use that tree ...

> v2:
>  - use 3G split.
>  - add patch to move virtio-mmio region.
>  - pick up acks & reviews.
> v3:
>  - fix xen build.
>  - pick up acks & reviews.
> 
> take care,
>   Gerd
> 
> Gerd Hoffmann (4):
>   microvm: use 3G split unconditionally
>   microvm: drop max-ram-below-4g support
>   x86: move max-ram-below-4g to pc
>   microvm: move virtio base to 0xfeb00000
> 
>  include/hw/i386/microvm.h |  2 +-
>  include/hw/i386/pc.h      |  2 ++
>  include/hw/i386/x86.h     |  4 ----
>  hw/i386/microvm.c         | 35 +----------------------------
>  hw/i386/pc.c              | 46 +++++++++++++++++++++++++++++++++++++++
>  hw/i386/pc_piix.c         | 10 ++++-----
>  hw/i386/pc_q35.c          | 10 ++++-----
>  hw/i386/x86.c             | 46 ---------------------------------------
>  hw/i386/xen/xen-hvm.c     |  2 +-
>  9 files changed, 61 insertions(+), 96 deletions(-)
> 
> -- 
> 2.18.4



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 4/4] microvm: move virtio base to 0xfeb00000
  2020-05-29  7:39   ` Gerd Hoffmann
@ 2020-06-08 13:33     ` Michael S. Tsirkin
  -1 siblings, 0 replies; 22+ messages in thread
From: Michael S. Tsirkin @ 2020-06-08 13:33 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	qemu-devel, imammedo, xen-devel, Anthony Perard, Paolo Bonzini,
	philmd, Richard Henderson

On Fri, May 29, 2020 at 09:39:57AM +0200, Gerd Hoffmann wrote:
> Place virtio-mmio devices near the other mmio regions,
> next ioapic is at @ 0xfec00000.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  include/hw/i386/microvm.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/hw/i386/microvm.h b/include/hw/i386/microvm.h
> index ba68d1f22bb3..fd34b78e0d2a 100644
> --- a/include/hw/i386/microvm.h
> +++ b/include/hw/i386/microvm.h
> @@ -26,7 +26,7 @@
>  #include "hw/i386/x86.h"
>  
>  /* Platform virtio definitions */
> -#define VIRTIO_MMIO_BASE      0xc0000000
> +#define VIRTIO_MMIO_BASE      0xfeb00000
>  #define VIRTIO_IRQ_BASE       5
>  #define VIRTIO_NUM_TRANSPORTS 8
>  #define VIRTIO_CMDLINE_MAXLEN 64

OK, and let's hope we don't need to move it again.

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>

> -- 
> 2.18.4



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 4/4] microvm: move virtio base to 0xfeb00000
@ 2020-06-08 13:33     ` Michael S. Tsirkin
  0 siblings, 0 replies; 22+ messages in thread
From: Michael S. Tsirkin @ 2020-06-08 13:33 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	qemu-devel, imammedo, Marcel Apfelbaum, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

On Fri, May 29, 2020 at 09:39:57AM +0200, Gerd Hoffmann wrote:
> Place virtio-mmio devices near the other mmio regions,
> next ioapic is at @ 0xfec00000.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  include/hw/i386/microvm.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/hw/i386/microvm.h b/include/hw/i386/microvm.h
> index ba68d1f22bb3..fd34b78e0d2a 100644
> --- a/include/hw/i386/microvm.h
> +++ b/include/hw/i386/microvm.h
> @@ -26,7 +26,7 @@
>  #include "hw/i386/x86.h"
>  
>  /* Platform virtio definitions */
> -#define VIRTIO_MMIO_BASE      0xc0000000
> +#define VIRTIO_MMIO_BASE      0xfeb00000
>  #define VIRTIO_IRQ_BASE       5
>  #define VIRTIO_NUM_TRANSPORTS 8
>  #define VIRTIO_CMDLINE_MAXLEN 64

OK, and let's hope we don't need to move it again.

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>

> -- 
> 2.18.4



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 0/4] microvm: memory config tweaks
  2020-06-08 13:25   ` Gerd Hoffmann
@ 2020-06-17 12:25     ` Gerd Hoffmann
  -1 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-06-17 12:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, xen-devel, Anthony Perard,
	Paolo Bonzini, philmd, Richard Henderson

On Mon, Jun 08, 2020 at 03:25:07PM +0200, Gerd Hoffmann wrote:

> Ping.  Anyone going to pick this up?  MAINTAINERS lists Sergio+Paolo ...
> Or should I send a pull req myself?

Hmm, no reply.  I guess that means "send a pull req" ...

take care,
  Gerd



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH v3 0/4] microvm: memory config tweaks
@ 2020-06-17 12:25     ` Gerd Hoffmann
  0 siblings, 0 replies; 22+ messages in thread
From: Gerd Hoffmann @ 2020-06-17 12:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Stefano Stabellini, Eduardo Habkost, Sergio Lopez, Paul Durrant,
	Michael S. Tsirkin, imammedo, Marcel Apfelbaum, xen-devel,
	Anthony Perard, Paolo Bonzini, philmd, Richard Henderson

On Mon, Jun 08, 2020 at 03:25:07PM +0200, Gerd Hoffmann wrote:

> Ping.  Anyone going to pick this up?  MAINTAINERS lists Sergio+Paolo ...
> Or should I send a pull req myself?

Hmm, no reply.  I guess that means "send a pull req" ...

take care,
  Gerd



^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2020-06-17 12:28 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-29  7:39 [PATCH v3 0/4] microvm: memory config tweaks Gerd Hoffmann
2020-05-29  7:39 ` Gerd Hoffmann
2020-05-29  7:39 ` [PATCH v3 1/4] microvm: use 3G split unconditionally Gerd Hoffmann
2020-05-29  7:39   ` Gerd Hoffmann
2020-05-29  7:39 ` [PATCH v3 2/4] microvm: drop max-ram-below-4g support Gerd Hoffmann
2020-05-29  7:39   ` Gerd Hoffmann
2020-05-29  7:39 ` [PATCH v3 3/4] x86: move max-ram-below-4g to pc Gerd Hoffmann
2020-05-29  7:39   ` Gerd Hoffmann
2020-05-29  7:44   ` Paul Durrant
2020-05-29  7:44     ` Paul Durrant
2020-05-29  7:39 ` [PATCH v3 4/4] microvm: move virtio base to 0xfeb00000 Gerd Hoffmann
2020-05-29  7:39   ` Gerd Hoffmann
2020-06-08 13:33   ` Michael S. Tsirkin
2020-06-08 13:33     ` Michael S. Tsirkin
2020-06-02  5:30 ` [PATCH v3 0/4] microvm: memory config tweaks Michael S. Tsirkin
2020-06-02  5:30   ` Michael S. Tsirkin
2020-06-08 13:25 ` Gerd Hoffmann
2020-06-08 13:25   ` Gerd Hoffmann
2020-06-17 12:25   ` Gerd Hoffmann
2020-06-17 12:25     ` Gerd Hoffmann
2020-06-08 13:31 ` Michael S. Tsirkin
2020-06-08 13:31   ` Michael S. Tsirkin

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.