qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v5 05/14] softmmu/memory: Pass ram_flags to memory_region_ini


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v5 05/14] softmmu/memory: Pass ram_flags to memory_region_init_ram_shared_nomigrate()
Date: Tue, 20 Apr 2021 12:20:51 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1

Hi David,

On 4/13/21 11:14 AM, David Hildenbrand wrote:
> Let's forward ram_flags instead, renaming
> memory_region_init_ram_shared_nomigrate() into
> memory_region_init_ram_flags_nomigrate(). Forward flags to
> qemu_ram_alloc() and qemu_ram_alloc_internal().
> 
> Reviewed-by: Peter Xu <peterx@redhat.com>
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
>  backends/hostmem-ram.c                        |  6 +++--
>  hw/m68k/next-cube.c                           |  4 ++--
>  include/exec/memory.h                         | 24 +++++++++----------
>  include/exec/ram_addr.h                       |  2 +-
>  .../memory-region-housekeeping.cocci          |  8 +++----
>  softmmu/memory.c                              | 20 ++++++++--------

OK up to here, but the qemu_ram_alloc_internal() changes
in softmmu/physmem.c belong to a different patch (except
the line adding "new_block->flags = ram_flags").
Do you mind splitting it?

> diff --git a/softmmu/physmem.c b/softmmu/physmem.c
> index cc59f05593..fdcd38ba61 100644
> --- a/softmmu/physmem.c
> +++ b/softmmu/physmem.c
> @@ -2108,12 +2108,14 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, 
> ram_addr_t max_size,
>                                    void (*resized)(const char*,
>                                                    uint64_t length,
>                                                    void *host),
> -                                  void *host, bool resizeable, bool share,
> +                                  void *host, uint32_t ram_flags,
>                                    MemoryRegion *mr, Error **errp)
>  {
>      RAMBlock *new_block;
>      Error *local_err = NULL;
>  
> +    assert((ram_flags & ~(RAM_SHARED | RAM_RESIZEABLE)) == 0);
> +
>      size = HOST_PAGE_ALIGN(size);
>      max_size = HOST_PAGE_ALIGN(max_size);
>      new_block = g_malloc0(sizeof(*new_block));
> @@ -2125,15 +2127,10 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, 
> ram_addr_t max_size,
>      new_block->fd = -1;
>      new_block->page_size = qemu_real_host_page_size;
>      new_block->host = host;
> +    new_block->flags = ram_flags;
>      if (host) {
>          new_block->flags |= RAM_PREALLOC;
>      }
> -    if (share) {
> -        new_block->flags |= RAM_SHARED;
> -    }
> -    if (resizeable) {
> -        new_block->flags |= RAM_RESIZEABLE;
> -    }
>      ram_block_add(new_block, &local_err);
>      if (local_err) {
>          g_free(new_block);
> @@ -2146,15 +2143,14 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, 
> ram_addr_t max_size,
>  RAMBlock *qemu_ram_alloc_from_ptr(ram_addr_t size, void *host,
>                                     MemoryRegion *mr, Error **errp)
>  {
> -    return qemu_ram_alloc_internal(size, size, NULL, host, false,
> -                                   false, mr, errp);
> +    return qemu_ram_alloc_internal(size, size, NULL, host, 0, mr, errp);
>  }
>  
> -RAMBlock *qemu_ram_alloc(ram_addr_t size, bool share,
> +RAMBlock *qemu_ram_alloc(ram_addr_t size, uint32_t ram_flags,
>                           MemoryRegion *mr, Error **errp)
>  {
> -    return qemu_ram_alloc_internal(size, size, NULL, NULL, false,
> -                                   share, mr, errp);
> +    assert((ram_flags & ~RAM_SHARED) == 0);
> +    return qemu_ram_alloc_internal(size, size, NULL, NULL, ram_flags, mr, 
> errp);
>  }
>  
>  RAMBlock *qemu_ram_alloc_resizeable(ram_addr_t size, ram_addr_t maxsz,
> @@ -2163,8 +2159,8 @@ RAMBlock *qemu_ram_alloc_resizeable(ram_addr_t size, 
> ram_addr_t maxsz,
>                                                       void *host),
>                                       MemoryRegion *mr, Error **errp)
>  {
> -    return qemu_ram_alloc_internal(size, maxsz, resized, NULL, true,
> -                                   false, mr, errp);
> +    return qemu_ram_alloc_internal(size, maxsz, resized, NULL,
> +                                   RAM_RESIZEABLE, mr, errp);
>  }
>  
>  static void reclaim_ramblock(RAMBlock *block)
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]