[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 5/6] exec: Pass RAMBlock pointer to qemu_ram_fre
From: |
Gonglei (Arei) |
Subject: |
Re: [Qemu-devel] [PATCH 5/6] exec: Pass RAMBlock pointer to qemu_ram_free |
Date: |
Tue, 1 Mar 2016 02:39:48 +0000 |
> Subject: [Qemu-devel] [PATCH 5/6] exec: Pass RAMBlock pointer to
> qemu_ram_free
>
> The only caller now knows exactly which RAMBlock to free, so it's not
> necessary to do the lookup.
>
> Signed-off-by: Fam Zheng <address@hidden>
> ---
> exec.c | 21 +++++++--------------
> include/exec/ram_addr.h | 2 +-
> memory.c | 4 ++--
> 3 files changed, 10 insertions(+), 17 deletions(-)
>
Nice ;)
Reviewed-by: Gonglei <address@hidden>
> diff --git a/exec.c b/exec.c
> index 6ed4203..ad8b826 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -1751,22 +1751,15 @@ static void reclaim_ramblock(RAMBlock *block)
> g_free(block);
> }
>
> -void qemu_ram_free(ram_addr_t addr)
> +void qemu_ram_free(RAMBlock *block)
> {
> - RAMBlock *block;
> -
> qemu_mutex_lock_ramlist();
> - QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
> - if (addr == block->offset) {
> - QLIST_REMOVE_RCU(block, next);
> - ram_list.mru_block = NULL;
> - /* Write list before version */
> - smp_wmb();
> - ram_list.version++;
> - call_rcu(block, reclaim_ramblock, rcu);
> - break;
> - }
> - }
> + QLIST_REMOVE_RCU(block, next);
> + ram_list.mru_block = NULL;
> + /* Write list before version */
> + smp_wmb();
> + ram_list.version++;
> + call_rcu(block, reclaim_ramblock, rcu);
> qemu_mutex_unlock_ramlist();
> }
>
> diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
> index 865e19b..5adf7a4 100644
> --- a/include/exec/ram_addr.h
> +++ b/include/exec/ram_addr.h
> @@ -108,7 +108,7 @@ RAMBlock *qemu_ram_alloc_resizeable(ram_addr_t
> size, ram_addr_t max_size,
> int qemu_get_ram_fd(ram_addr_t addr);
> void qemu_set_ram_fd(ram_addr_t addr, int fd);
> void *qemu_get_ram_block_host_ptr(ram_addr_t addr);
> -void qemu_ram_free(ram_addr_t addr);
> +void qemu_ram_free(RAMBlock *block);
>
> int qemu_ram_resize(ram_addr_t base, ram_addr_t newsize, Error **errp);
>
> diff --git a/memory.c b/memory.c
> index b221f3c..32d2912 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -858,12 +858,12 @@ static void
> memory_region_destructor_none(MemoryRegion *mr)
>
> static void memory_region_destructor_ram(MemoryRegion *mr)
> {
> - qemu_ram_free(memory_region_get_ram_addr(mr));
> + qemu_ram_free(mr->ram_block);
> }
>
> static void memory_region_destructor_rom_device(MemoryRegion *mr)
> {
> - qemu_ram_free(memory_region_get_ram_addr(mr) &
> TARGET_PAGE_MASK);
> + qemu_ram_free(mr->ram_block);
> }
>
> static bool memory_region_need_escape(char c)
> --
> 2.4.3
>
- [Qemu-devel] [PATCH 1/6] exec: Return RAMBlock pointer from allocating functions, (continued)
- [Qemu-devel] [PATCH 1/6] exec: Return RAMBlock pointer from allocating functions, Fam Zheng, 2016/02/28
- [Qemu-devel] [PATCH 2/6] memory: Move assignment to ram_block to memory_region_init_*, Fam Zheng, 2016/02/28
- [Qemu-devel] [PATCH 3/6] memory: Implement memory_region_get_ram_addr with mr->ram_block, Fam Zheng, 2016/02/28
- [Qemu-devel] [PATCH 4/6] memory: Drop MemoryRegion.ram_addr, Fam Zheng, 2016/02/28
- [Qemu-devel] [PATCH 5/6] exec: Pass RAMBlock pointer to qemu_ram_free, Fam Zheng, 2016/02/28
- Re: [Qemu-devel] [PATCH 5/6] exec: Pass RAMBlock pointer to qemu_ram_free,
Gonglei (Arei) <=
- [Qemu-devel] [PATCH 6/6] exec: Introduce AddressSpaceDispatch.mru_section, Fam Zheng, 2016/02/28