From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43455) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBdGg-0003tS-Ok for qemu-devel@nongnu.org; Tue, 29 Nov 2016 02:55:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cBdGb-0004PL-EZ for qemu-devel@nongnu.org; Tue, 29 Nov 2016 02:55:58 -0500 Received: from mail-wm0-f41.google.com ([74.125.82.41]:36684) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cBdGb-0004Od-06 for qemu-devel@nongnu.org; Tue, 29 Nov 2016 02:55:53 -0500 Received: by mail-wm0-f41.google.com with SMTP id g23so229120399wme.1 for ; Mon, 28 Nov 2016 23:55:52 -0800 (PST) References: <20161129063503.4879-1-bobby.prani@gmail.com> From: Alex =?utf-8?Q?Benn=C3=A9e?= In-reply-to: <20161129063503.4879-1-bobby.prani@gmail.com> Date: Tue, 29 Nov 2016 07:54:50 +0000 Message-ID: <8760n6u3ed.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH] mttcg: translate-all: Enable locking debug in a debug build List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pranith Kumar Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, rth@twiddle.net Pranith Kumar writes: > Enable tcg lock debug asserts in a debug build by default instead of > relying on DEBUG_LOCKING. None of the other DEBUG_* macros have > asserts, so this patch removes DEBUG_LOCKING and enable these asserts > in a debug build. > > CC: Richard Henderson > CC: Alex Bennée > Signed-off-by: Pranith Kumar Reviewed-by: Alex Bennée I'll pull it into my tree. > --- > translate-all.c | 49 ++++++++++++------------------------------------- > 1 file changed, 12 insertions(+), 37 deletions(-) > > diff --git a/translate-all.c b/translate-all.c > index cf828aa..a3325dc 100644 > --- a/translate-all.c > +++ b/translate-all.c > @@ -60,7 +60,6 @@ > > /* #define DEBUG_TB_INVALIDATE */ > /* #define DEBUG_TB_FLUSH */ > -/* #define DEBUG_LOCKING */ > /* make various TB consistency checks */ > /* #define DEBUG_TB_CHECK */ > > @@ -75,24 +74,10 @@ > * access to the memory related structures are protected with the > * mmap_lock. > */ > -#ifdef DEBUG_LOCKING > -#define DEBUG_MEM_LOCKS 1 > -#else > -#define DEBUG_MEM_LOCKS 0 > -#endif > - > #ifdef CONFIG_SOFTMMU > -#define assert_memory_lock() do { \ > - if (DEBUG_MEM_LOCKS) { \ > - g_assert(have_tb_lock); \ > - } \ > - } while (0) > +#define assert_memory_lock() tcg_debug_assert(have_tb_lock) > #else > -#define assert_memory_lock() do { \ > - if (DEBUG_MEM_LOCKS) { \ > - g_assert(have_mmap_lock()); \ > - } \ > - } while (0) > +#define assert_memory_lock() tcg_debug_assert(have_mmap_lock()) > #endif > > #define SMC_BITMAP_USE_THRESHOLD 10 > @@ -172,16 +157,19 @@ static void page_table_config_init(void) > assert(v_l2_levels >= 0); > } > > +#define assert_tb_locked() tcg_debug_assert(have_tb_lock) > +#define assert_tb_unlocked() tcg_debug_assert(!have_tb_lock) > + > void tb_lock(void) > { > - assert(!have_tb_lock); > + assert_tb_unlocked(); > qemu_mutex_lock(&tcg_ctx.tb_ctx.tb_lock); > have_tb_lock++; > } > > void tb_unlock(void) > { > - assert(have_tb_lock); > + assert_tb_locked(); > have_tb_lock--; > qemu_mutex_unlock(&tcg_ctx.tb_ctx.tb_lock); > } > @@ -194,19 +182,6 @@ void tb_lock_reset(void) > } > } > > -#ifdef DEBUG_LOCKING > -#define DEBUG_TB_LOCKS 1 > -#else > -#define DEBUG_TB_LOCKS 0 > -#endif > - > -#define assert_tb_lock() do { \ > - if (DEBUG_TB_LOCKS) { \ > - g_assert(have_tb_lock); \ > - } \ > - } while (0) > - > - > static TranslationBlock *tb_find_pc(uintptr_t tc_ptr); > > void cpu_gen_init(void) > @@ -840,7 +815,7 @@ static TranslationBlock *tb_alloc(target_ulong pc) > { > TranslationBlock *tb; > > - assert_tb_lock(); > + assert_tb_locked(); > > if (tcg_ctx.tb_ctx.nb_tbs >= tcg_ctx.code_gen_max_blocks) { > return NULL; > @@ -855,7 +830,7 @@ static TranslationBlock *tb_alloc(target_ulong pc) > /* Called with tb_lock held. */ > void tb_free(TranslationBlock *tb) > { > - assert_tb_lock(); > + assert_tb_locked(); > > /* In practice this is mostly used for single use temporary TB > Ignore the hard cases and just back up if this TB happens to > @@ -1097,7 +1072,7 @@ void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr) > uint32_t h; > tb_page_addr_t phys_pc; > > - assert_tb_lock(); > + assert_tb_locked(); > > atomic_set(&tb->invalid, true); > > @@ -1412,7 +1387,7 @@ static void tb_invalidate_phys_range_1(tb_page_addr_t start, tb_page_addr_t end) > #ifdef CONFIG_SOFTMMU > void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t end) > { > - assert_tb_lock(); > + assert_tb_locked(); > tb_invalidate_phys_range_1(start, end); > } > #else > @@ -1455,7 +1430,7 @@ void tb_invalidate_phys_page_range(tb_page_addr_t start, tb_page_addr_t end, > #endif /* TARGET_HAS_PRECISE_SMC */ > > assert_memory_lock(); > - assert_tb_lock(); > + assert_tb_locked(); > > p = page_find(start >> TARGET_PAGE_BITS); > if (!p) { -- Alex Bennée