From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45472) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZDTZ4-0004ox-Pu for qemu-devel@nongnu.org; Fri, 10 Jul 2015 04:21:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZDTZ0-0001QR-M1 for qemu-devel@nongnu.org; Fri, 10 Jul 2015 04:21:46 -0400 Received: from mail-wi0-f173.google.com ([209.85.212.173]:38409) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZDTZ0-0001QI-GJ for qemu-devel@nongnu.org; Fri, 10 Jul 2015 04:21:42 -0400 Received: by wicmv11 with SMTP id mv11so7792579wic.1 for ; Fri, 10 Jul 2015 01:21:42 -0700 (PDT) From: Alvise Rigo Date: Fri, 10 Jul 2015 10:23:40 +0200 Message-Id: <1436516626-8322-8-git-send-email-a.rigo@virtualopensystems.com> In-Reply-To: <1436516626-8322-1-git-send-email-a.rigo@virtualopensystems.com> References: <1436516626-8322-1-git-send-email-a.rigo@virtualopensystems.com> Subject: [Qemu-devel] [RFC v3 07/13] ram_addr.h: Make exclusive bitmap accessors atomic List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, mttcg@listserver.greensocs.com Cc: alex.bennee@linaro.org, jani.kokkonen@huawei.com, tech@virtualopensystems.com, claudio.fontana@huawei.com, pbonzini@redhat.com Suggested-by: Jani Kokkonen Suggested-by: Claudio Fontana Signed-off-by: Alvise Rigo --- include/exec/ram_addr.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h index 2766541..e51bd65 100644 --- a/include/exec/ram_addr.h +++ b/include/exec/ram_addr.h @@ -255,7 +255,7 @@ uint64_t cpu_physical_memory_sync_dirty_bitmap(unsigned long *dest, /* Exclusive bitmap accessors. */ static inline void cpu_physical_memory_set_excl_dirty(ram_addr_t addr) { - set_bit(addr >> TARGET_PAGE_BITS, + set_bit_atomic(addr >> TARGET_PAGE_BITS, ram_list.dirty_memory[DIRTY_MEMORY_EXCLUSIVE]); } @@ -267,8 +267,8 @@ static inline int cpu_physical_memory_excl_is_dirty(ram_addr_t addr) static inline void cpu_physical_memory_clear_excl_dirty(ram_addr_t addr) { - clear_bit(addr >> TARGET_PAGE_BITS, - ram_list.dirty_memory[DIRTY_MEMORY_EXCLUSIVE]); + bitmap_test_and_clear_atomic(ram_list.dirty_memory[DIRTY_MEMORY_EXCLUSIVE], + addr >> TARGET_PAGE_BITS, 1); } #endif -- 2.4.5