[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 03/11] memory: Don't set migration bitmap when w
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 03/11] memory: Don't set migration bitmap when without migration |
Date: |
Wed, 8 May 2019 12:09:30 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 08/05/19 01:15, Peter Xu wrote:
> Similar to 9460dee4b2 ("memory: do not touch code dirty bitmap unless
> TCG is enabled", 2015-06-05) but for the migration bitmap - we can
> skip the MIGRATION bitmap update if migration not enabled.
>
> Signed-off-by: Peter Xu <address@hidden>
> ---
> include/exec/memory.h | 2 ++
> include/exec/ram_addr.h | 12 +++++++++++-
> memory.c | 2 +-
> 3 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/include/exec/memory.h b/include/exec/memory.h
> index e6140e8a04..f29300c54d 100644
> --- a/include/exec/memory.h
> +++ b/include/exec/memory.h
> @@ -46,6 +46,8 @@
> OBJECT_GET_CLASS(IOMMUMemoryRegionClass, (obj), \
> TYPE_IOMMU_MEMORY_REGION)
>
> +extern bool global_dirty_log;
> +
> typedef struct MemoryRegionOps MemoryRegionOps;
> typedef struct MemoryRegionMmio MemoryRegionMmio;
>
> diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
> index 993fb760f3..86bc8e1a4a 100644
> --- a/include/exec/ram_addr.h
> +++ b/include/exec/ram_addr.h
> @@ -348,8 +348,13 @@ static inline void
> cpu_physical_memory_set_dirty_lebitmap(unsigned long *bitmap,
> if (bitmap[k]) {
> unsigned long temp = leul_to_cpu(bitmap[k]);
>
> - atomic_or(&blocks[DIRTY_MEMORY_MIGRATION][idx][offset],
> temp);
> atomic_or(&blocks[DIRTY_MEMORY_VGA][idx][offset], temp);
> +
> + if (global_dirty_log) {
> + atomic_or(&blocks[DIRTY_MEMORY_MIGRATION][idx][offset],
> + temp);
> + }
> +
> if (tcg_enabled()) {
> atomic_or(&blocks[DIRTY_MEMORY_CODE][idx][offset], temp);
> }
> @@ -366,6 +371,11 @@ static inline void
> cpu_physical_memory_set_dirty_lebitmap(unsigned long *bitmap,
> xen_hvm_modified_memory(start, pages << TARGET_PAGE_BITS);
> } else {
> uint8_t clients = tcg_enabled() ? DIRTY_CLIENTS_ALL :
> DIRTY_CLIENTS_NOCODE;
> +
> + if (!global_dirty_log) {
> + clients &= ~(1 << DIRTY_MEMORY_MIGRATION);
> + }
> +
> /*
> * bitmap-traveling is faster than memory-traveling (for addr...)
> * especially when most of the memory is not dirty.
> diff --git a/memory.c b/memory.c
> index 0cce3a6fc5..1cc3531df5 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -38,7 +38,7 @@
> static unsigned memory_region_transaction_depth;
> static bool memory_region_update_pending;
> static bool ioeventfd_update_pending;
> -static bool global_dirty_log = false;
> +bool global_dirty_log;
>
> static QTAILQ_HEAD(, MemoryListener) memory_listeners
> = QTAILQ_HEAD_INITIALIZER(memory_listeners);
>
Reviewed-by: Paolo Bonzini <address@hidden>
- [Qemu-devel] [PATCH 00/11] kvm/migration: support KVM_CLEAR_DIRTY_LOG, Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 01/11] migration: No need to take rcu during sync_dirty_bitmap, Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 02/11] memory: Remove memory_region_get_dirty(), Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 03/11] memory: Don't set migration bitmap when without migration, Peter Xu, 2019/05/08
- Re: [Qemu-devel] [PATCH 03/11] memory: Don't set migration bitmap when without migration,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 04/11] bitmap: Add bitmap_copy_with_{src|dst}_offset(), Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 05/11] memory: Pass mr into snapshot_and_clear_dirty, Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 06/11] memory: Introduce memory listener hook log_clear(), Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 07/11] kvm: Update comments for sync_dirty_bitmap, Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 08/11] kvm: Persistent per kvmslot dirty bitmap, Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 09/11] kvm: Introduce slots lock for memory listener, Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 10/11] kvm: Support KVM_CLEAR_DIRTY_LOG, Peter Xu, 2019/05/08
- [Qemu-devel] [PATCH 11/11] migration: Split log_clear() into smaller chunks, Peter Xu, 2019/05/08
- Re: [Qemu-devel] [PATCH 00/11] kvm/migration: support KVM_CLEAR_DIRTY_LOG, Paolo Bonzini, 2019/05/08