[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 09/21] hw: Let memory_region_allocate_system_memory take Mach
From: |
Alistair Francis |
Subject: |
Re: [PATCH 09/21] hw: Let memory_region_allocate_system_memory take MachineState argument |
Date: |
Mon, 21 Oct 2019 16:19:12 -0700 |
On Sun, Oct 20, 2019 at 4:12 PM Philippe Mathieu-Daudé
<address@hidden> wrote:
>
> All the codebase calls memory_region_allocate_system_memory() with
> a NULL 'owner' from the board_init() function.
> Let pass a MachineState argument, and enforce the QOM ownership of
> the system memory.
>
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Alistair Francis <address@hidden>
Alistair
> ---
> hw/core/numa.c | 11 +++++++----
> include/hw/boards.h | 6 ++++--
> 2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/hw/core/numa.c b/hw/core/numa.c
> index 038c96d4ab..2e29e4bfe0 100644
> --- a/hw/core/numa.c
> +++ b/hw/core/numa.c
> @@ -520,21 +520,24 @@ static void allocate_system_memory_nonnuma(MemoryRegion
> *mr, Object *owner,
> vmstate_register_ram_global(mr);
> }
>
> -void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
> +void memory_region_allocate_system_memory(MemoryRegion *mr, MachineState *ms,
> const char *name,
> uint64_t ram_size)
> {
> uint64_t addr = 0;
> int i;
> - MachineState *ms = MACHINE(qdev_get_machine());
> +
> + if (!ms) {
> + ms = MACHINE(qdev_get_machine());
> + }
>
> if (ms->numa_state == NULL ||
> ms->numa_state->num_nodes == 0 || !have_memdevs) {
> - allocate_system_memory_nonnuma(mr, owner, name, ram_size);
> + allocate_system_memory_nonnuma(mr, OBJECT(ms), name, ram_size);
> return;
> }
>
> - memory_region_init(mr, owner, name, ram_size);
> + memory_region_init(mr, OBJECT(ms), name, ram_size);
> for (i = 0; i < ms->numa_state->num_nodes; i++) {
> uint64_t size = ms->numa_state->nodes[i].node_mem;
> HostMemoryBackend *backend = ms->numa_state->nodes[i].node_memdev;
> diff --git a/include/hw/boards.h b/include/hw/boards.h
> index de45087f34..3b6cb82b6c 100644
> --- a/include/hw/boards.h
> +++ b/include/hw/boards.h
> @@ -14,7 +14,7 @@
> /**
> * memory_region_allocate_system_memory - Allocate a board's main memory
> * @mr: the #MemoryRegion to be initialized
> - * @owner: the object that tracks the region's reference count
> + * @ms: the #MachineState object that own the system memory
> * @name: name of the memory region
> * @ram_size: size of the region in bytes
> *
> @@ -38,8 +38,10 @@
> * Smaller pieces of memory (display RAM, static RAMs, etc) don't need
> * to be backed via the -mem-path memory backend and can simply
> * be created via memory_region_init_ram().
> + *
> + * The #MachineState object will track the region's reference count.
> */
> -void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
> +void memory_region_allocate_system_memory(MemoryRegion *mr, MachineState *ms,
> const char *name,
> uint64_t ram_size);
>
> --
> 2.21.0
>
>
- Re: [PATCH 06/21] hw/arm/digic4: Inline digic4_board_setup_ram() function, (continued)
- [PATCH 07/21] hw: Drop QOM ownership on memory_region_allocate_system_memory() calls, Philippe Mathieu-Daudé, 2019/10/20
- [PATCH 08/21] hw/alpha/dp264: Create the RAM in the board, Philippe Mathieu-Daudé, 2019/10/20
- [PATCH 09/21] hw: Let memory_region_allocate_system_memory take MachineState argument, Philippe Mathieu-Daudé, 2019/10/20
- [PATCH 10/21] hw/core: Let the machine be the owner of the system memory, Philippe Mathieu-Daudé, 2019/10/20
- [PATCH 11/21] hw/alpha: Let the machine be the owner of the system memory, Philippe Mathieu-Daudé, 2019/10/20
- [PATCH 12/21] hw/arm: Let the machine be the owner of the system memory, Philippe Mathieu-Daudé, 2019/10/20