Message ID | 20200217173452.15243-43-imammedo@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | refactor main RAM allocation to use hostmem backend | expand |
On 2/17/20 9:34 AM, Igor Mammedov wrote: > memory_region_allocate_system_memory() API is going away, so > replace it with memdev allocated MemoryRegion. The later is > initialized by generic code, so board only needs to opt in > to memdev scheme by providing > MachineClass::default_ram_id > and using MachineState::ram instead of manually initializing > RAM memory region. > > Signed-off-by: Igor Mammedov <imammedo@redhat.com> > Reviewed-by: Michael S. Tsirkin <mst@redhat.com> > --- Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 2/17/20 6:34 PM, Igor Mammedov wrote: > memory_region_allocate_system_memory() API is going away, so > replace it with memdev allocated MemoryRegion. The later is > initialized by generic code, so board only needs to opt in > to memdev scheme by providing > MachineClass::default_ram_id > and using MachineState::ram instead of manually initializing > RAM memory region. > > Signed-off-by: Igor Mammedov <imammedo@redhat.com> > Reviewed-by: Michael S. Tsirkin <mst@redhat.com> > --- > CC: slp@redhat.com > CC: pbonzini@redhat.com > CC: mst@redhat.com > CC: rth@twiddle.net > CC: ehabkost@redhat.com > --- > hw/i386/microvm.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > > diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c > index d23485108d..38d8e51703 100644 > --- a/hw/i386/microvm.c > +++ b/hw/i386/microvm.c > @@ -167,7 +167,7 @@ static void microvm_memory_init(MicrovmMachineState *mms) > { > MachineState *machine = MACHINE(mms); > X86MachineState *x86ms = X86_MACHINE(mms); > - MemoryRegion *ram, *ram_below_4g, *ram_above_4g; > + MemoryRegion *ram_below_4g, *ram_above_4g; > MemoryRegion *system_memory = get_system_memory(); > FWCfgState *fw_cfg; > ram_addr_t lowmem; > @@ -214,12 +214,8 @@ static void microvm_memory_init(MicrovmMachineState *mms) > x86ms->below_4g_mem_size = machine->ram_size; > } > > - ram = g_malloc(sizeof(*ram)); > - memory_region_allocate_system_memory(ram, NULL, "microvm.ram", > - machine->ram_size); > - > ram_below_4g = g_malloc(sizeof(*ram_below_4g)); > - memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", ram, > + memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", machine->ram, > 0, x86ms->below_4g_mem_size); > memory_region_add_subregion(system_memory, 0, ram_below_4g); > > @@ -227,7 +223,8 @@ static void microvm_memory_init(MicrovmMachineState *mms) > > if (x86ms->above_4g_mem_size > 0) { > ram_above_4g = g_malloc(sizeof(*ram_above_4g)); > - memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", ram, > + memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", > + machine->ram, > x86ms->below_4g_mem_size, > x86ms->above_4g_mem_size); > memory_region_add_subregion(system_memory, 0x100000000ULL, > @@ -502,6 +499,7 @@ static void microvm_class_init(ObjectClass *oc, void *data) > mc->auto_enable_numa_with_memhp = false; > mc->default_cpu_type = TARGET_DEFAULT_CPU_TYPE; > mc->nvdimm_supported = false; > + mc->default_ram_id = "microvm.ram"; > > /* Avoid relying too much on kernel components */ > mc->default_kernel_irqchip_split = true; > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index d23485108d..38d8e51703 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -167,7 +167,7 @@ static void microvm_memory_init(MicrovmMachineState *mms) { MachineState *machine = MACHINE(mms); X86MachineState *x86ms = X86_MACHINE(mms); - MemoryRegion *ram, *ram_below_4g, *ram_above_4g; + MemoryRegion *ram_below_4g, *ram_above_4g; MemoryRegion *system_memory = get_system_memory(); FWCfgState *fw_cfg; ram_addr_t lowmem; @@ -214,12 +214,8 @@ static void microvm_memory_init(MicrovmMachineState *mms) x86ms->below_4g_mem_size = machine->ram_size; } - ram = g_malloc(sizeof(*ram)); - memory_region_allocate_system_memory(ram, NULL, "microvm.ram", - machine->ram_size); - ram_below_4g = g_malloc(sizeof(*ram_below_4g)); - memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", ram, + memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", machine->ram, 0, x86ms->below_4g_mem_size); memory_region_add_subregion(system_memory, 0, ram_below_4g); @@ -227,7 +223,8 @@ static void microvm_memory_init(MicrovmMachineState *mms) if (x86ms->above_4g_mem_size > 0) { ram_above_4g = g_malloc(sizeof(*ram_above_4g)); - memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", ram, + memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", + machine->ram, x86ms->below_4g_mem_size, x86ms->above_4g_mem_size); memory_region_add_subregion(system_memory, 0x100000000ULL, @@ -502,6 +499,7 @@ static void microvm_class_init(ObjectClass *oc, void *data) mc->auto_enable_numa_with_memhp = false; mc->default_cpu_type = TARGET_DEFAULT_CPU_TYPE; mc->nvdimm_supported = false; + mc->default_ram_id = "microvm.ram"; /* Avoid relying too much on kernel components */ mc->default_kernel_irqchip_split = true;