From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53800) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VtE3N-0005Kx-SB for qemu-devel@nongnu.org; Wed, 18 Dec 2013 05:08:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VtE3H-0004PH-Nw for qemu-devel@nongnu.org; Wed, 18 Dec 2013 05:08:33 -0500 Received: from mx1.redhat.com ([209.132.183.28]:65507) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VtE3H-0004P7-Eq for qemu-devel@nongnu.org; Wed, 18 Dec 2013 05:08:27 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rBIA8Qaw015471 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 18 Dec 2013 05:08:26 -0500 Message-ID: <52B17434.5030900@redhat.com> Date: Wed, 18 Dec 2013 12:08:52 +0200 From: Orit Wasserman MIME-Version: 1.0 References: <1387293974-24718-1-git-send-email-quintela@redhat.com> <1387293974-24718-8-git-send-email-quintela@redhat.com> In-Reply-To: <1387293974-24718-8-git-send-email-quintela@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 07/38] memory: make cpu_physical_memory_is_dirty return bool List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Juan Quintela , qemu-devel@nongnu.org On 12/17/2013 05:25 PM, Juan Quintela wrote: > Signed-off-by: Juan Quintela > Reviewed-by: Eric Blake > --- > 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 95bcf70..a1fc280 100644 > --- a/exec.c > +++ b/exec.c > @@ -1484,11 +1484,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: > @@ -1503,8 +1500,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, > Reviewed-by: Orit Wasserman