[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-2.3] arm: memory: Replace memory_region_init
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH for-2.3] arm: memory: Replace memory_region_init_ram with memory_region_allocate_system_memory |
Date: |
Tue, 24 Mar 2015 22:29:15 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 |
On 24/03/2015 22:24, Dirk Müller wrote:
> +++ b/hw/arm/exynos4210.c
> @@ -283,16 +283,16 @@ Exynos4210State *exynos4210_init(MemoryRegion
> *system_mem,
> /* DRAM */
> mem_size = ram_size;
> if (mem_size > EXYNOS4210_DRAM_MAX_SIZE) {
> - memory_region_init_ram(&s->dram1_mem, NULL, "exynos4210.dram1",
> - mem_size - EXYNOS4210_DRAM_MAX_SIZE, &error_abort);
> - vmstate_register_ram_global(&s->dram1_mem);
> + unsigned long dram1_size = mem_size - EXYNOS4210_DRAM_MAX_SIZE;
> + memory_region_allocate_system_memory(&s->dram1_mem, NULL,
> + "exynos4210.dram1",
> + dram1_size);
> memory_region_add_subregion(system_mem, EXYNOS4210_DRAM1_BASE_ADDR,
> &s->dram1_mem);
> mem_size = EXYNOS4210_DRAM_MAX_SIZE;
> }
> - memory_region_init_ram(&s->dram0_mem, NULL, "exynos4210.dram0", mem_size,
> - &error_abort);
> - vmstate_register_ram_global(&s->dram0_mem);
> + memory_region_allocate_system_memory(&s->dram0_mem, NULL,
> + "exynos4210.dram0", mem_size);
> memory_region_add_subregion(system_mem, EXYNOS4210_DRAM0_BASE_ADDR,
> &s->dram0_mem);
You cannot call memory_region_allocate_system_memory twice. For cases
like this one, the right thing to do is to create a region with
memory_region_allocate_system_memory, and then replace
memory_region_init_ram with memory_region_init_alias. This "slices" the
region created by memory_region_allocate_system_memory.
Paolo