From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50590) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W2lVl-00029U-4U for qemu-devel@nongnu.org; Mon, 13 Jan 2014 12:41:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W2lVa-0006bK-K8 for qemu-devel@nongnu.org; Mon, 13 Jan 2014 12:41:17 -0500 Received: from mx1.redhat.com ([209.132.183.28]:42656) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W2lVa-0006b3-Aw for qemu-devel@nongnu.org; Mon, 13 Jan 2014 12:41:06 -0500 From: Juan Quintela Date: Mon, 13 Jan 2014 18:40:04 +0100 Message-Id: <1389634834-24181-20-git-send-email-quintela@redhat.com> In-Reply-To: <1389634834-24181-1-git-send-email-quintela@redhat.com> References: <1389634834-24181-1-git-send-email-quintela@redhat.com> Subject: [Qemu-devel] [PATCH 19/49] memory: make cpu_physical_memory_is_dirty return bool List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: anthony@codemonkey.ws Signed-off-by: Juan Quintela Reviewed-by: Eric Blake Reviewed-by: Orit Wasserman --- exec.c | 7 ++----- include/exec/memory-internal.h | 8 ++++++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/exec.c b/exec.c index ea78d82..a8c79e5 100644 --- a/exec.c +++ b/exec.c @@ -1485,11 +1485,8 @@ found: static void notdirty_mem_write(void *opaque, hwaddr ram_addr, uint64_t val, unsigned size) { - int dirty_flags; - dirty_flags = cpu_physical_memory_get_dirty_flags(ram_addr); if (!cpu_physical_memory_get_dirty_flag(ram_addr, CODE_DIRTY_FLAG)) { tb_invalidate_phys_page_fast(ram_addr, size); - dirty_flags = cpu_physical_memory_get_dirty_flags(ram_addr); } switch (size) { case 1: @@ -1504,8 +1501,8 @@ static void notdirty_mem_write(void *opaque, hwaddr ram_addr, default: abort(); } - dirty_flags |= (0xff & ~CODE_DIRTY_FLAG); - cpu_physical_memory_set_dirty_flags(ram_addr, dirty_flags); + cpu_physical_memory_set_dirty_flag(ram_addr, MIGRATION_DIRTY_FLAG); + cpu_physical_memory_set_dirty_flag(ram_addr, VGA_DIRTY_FLAG); /* we remove the notdirty callback only if the code has been flushed */ if (cpu_physical_memory_is_dirty(ram_addr)) { diff --git a/include/exec/memory-internal.h b/include/exec/memory-internal.h index 136198c..0b25c3f 100644 --- a/include/exec/memory-internal.h +++ b/include/exec/memory-internal.h @@ -56,9 +56,13 @@ static inline bool cpu_physical_memory_get_dirty_flag(ram_addr_t addr, } /* read dirty bit (return 0 or 1) */ -static inline int cpu_physical_memory_is_dirty(ram_addr_t addr) +static inline bool cpu_physical_memory_is_dirty(ram_addr_t addr) { - return cpu_physical_memory_get_dirty_flags(addr) == 0xff; + bool vga = cpu_physical_memory_get_dirty_flag(addr, VGA_DIRTY_FLAG); + bool code = cpu_physical_memory_get_dirty_flag(addr, CODE_DIRTY_FLAG); + bool migration = + cpu_physical_memory_get_dirty_flag(addr, MIGRATION_DIRTY_FLAG); + return vga && code && migration; } static inline int cpu_physical_memory_get_dirty(ram_addr_t start, -- 1.8.4.2