[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 14/22] exec: only check relevant bitmaps for cle
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 14/22] exec: only check relevant bitmaps for cleanliness |
Date: |
Fri, 27 Mar 2015 10:19:40 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 |
On 27/03/2015 07:10, Fam Zheng wrote:
>> static inline bool cpu_physical_memory_range_includes_clean(ram_addr_t
>> start,
>> - ram_addr_t
>> length)
>> + ram_addr_t
>> length,
>> + uint8_t mask)
>> {
>> - bool vga = cpu_physical_memory_get_clean(start, length,
>> DIRTY_MEMORY_VGA);
>> - bool code = cpu_physical_memory_get_clean(start, length,
>> DIRTY_MEMORY_CODE);
>> - bool migration =
>> - cpu_physical_memory_get_clean(start, length,
>> DIRTY_MEMORY_MIGRATION);
>> - return vga || code || migration;
>> + bool clean = false;
>> + if (mask & (1 << DIRTY_MEMORY_VGA)) {
>> + clean = cpu_physical_memory_get_clean(start, length,
>> DIRTY_MEMORY_VGA);
>> + }
>> + if (!clean && (mask & (1 << DIRTY_MEMORY_CODE))) {
>> + clean = cpu_physical_memory_get_clean(start, length,
>> DIRTY_MEMORY_CODE);
>> + }
>> + if (!clean && (mask & (1 << DIRTY_MEMORY_MIGRATION))) {
>> + clean = cpu_physical_memory_get_clean(start, length,
>> DIRTY_MEMORY_MIGRATION);
>> + }
>> + return clean;
>> }
>
> Out of curiosity, is it valid that a mask bit is cleared but the corresponding
> dirty bit is set?
Yes, for example if migration is cancelled you'll have some bits set in
the DIRTY_MEMORY_MIGRATION bitmap, but DIRTY_MEMORY_MIGRATION itself
will not be enabled.
Paolo
>>
>> static inline void cpu_physical_memory_set_dirty_flag(ram_addr_t addr,
>> --
>> 2.3.3
>>
>>
>>
- Re: [Qemu-devel] [PATCH 05/22] memory: return bitmap from memory_region_is_logging, (continued)
- [Qemu-devel] [PATCH 09/22] memory: return DIRTY_MEMORY_MIGRATION from memory_region_is_logging, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 12/22] exec: use memory_region_is_logging to optimize dirty tracking, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 06/22] framebuffer: check memory_region_is_logging, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 10/22] ram_addr: tweaks to xen_modified_memory, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 08/22] memory: track DIRTY_MEMORY_CODE in mr->dirty_log_mask, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 13/22] exec: pass client mask to cpu_physical_memory_set_dirty_range, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 11/22] exec: simplify notdirty_mem_write, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 14/22] exec: only check relevant bitmaps for cleanliness, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 15/22] memory: do not touch code dirty bitmap unless TCG is enabled, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 17/22] bitmap: add atomic test and clear, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 18/22] memory: use atomic ops for setting dirty memory bits, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 16/22] bitmap: add atomic set functions, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 19/22] migration: move dirty bitmap sync to ram_addr.h, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 21/22] memory: make cpu_physical_memory_sync_dirty_bitmap() fully atomic, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 20/22] memory: replace cpu_physical_memory_reset_dirty() with test-and-clear, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 22/22] migration: run bitmap sync outside iothread lock, Paolo Bonzini, 2015/03/26