From patchwork Tue Nov 29 06:35:03 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Pranith Kumar X-Patchwork-Id: 700335 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3tSYhs3QGgz9vDl for ; Tue, 29 Nov 2016 17:35:56 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="f0I98pTp"; dkim-atps=neutral Received: from localhost ([::1]:34807 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBc1B-0005oX-8j for incoming@patchwork.ozlabs.org; Tue, 29 Nov 2016 01:35:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50188) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBc0V-0005Xs-Hn for qemu-devel@nongnu.org; Tue, 29 Nov 2016 01:35:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cBc0R-0003CP-KI for qemu-devel@nongnu.org; Tue, 29 Nov 2016 01:35:11 -0500 Received: from mail-yb0-x244.google.com ([2607:f8b0:4002:c09::244]:34997) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cBc0R-0003AT-Ey for qemu-devel@nongnu.org; Tue, 29 Nov 2016 01:35:07 -0500 Received: by mail-yb0-x244.google.com with SMTP id d59so747648ybi.2 for ; Mon, 28 Nov 2016 22:35:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=M8VwA3lhkSvVZbJjfMsox/l6SmAcqpNFeDTL4XqhYr0=; b=f0I98pTpQ/IgpzXghLqbaHbAo5XwDCmeEVz23yg4aDUxHqsl8PQ7Vfbvk/54GsPoq2 /hzSoQruEdCHKjr5naEtINNkG/g4AMJ6iazf4X7UrKDOBP7bDTpo5v5coQl+sgT0+Ha3 P+VDeIBl4SA3f3MXKXP52T+HhIhXuL4xvUeCt+KtedeOgXX3UHorYuoLqJjannJDcx/+ S1ORE3yuiPYLbNHGiV6cKZ0437EEX142GLUjDfyoA4p94uBPEGHe87cXhua+sXS5J13i VEgIlGtimwrhMxDC3J5ML3ck2jFNVOrpBnJx4/buLm8mQwnFMkZ/1R4A3qEfzBxH1aqi rzLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=M8VwA3lhkSvVZbJjfMsox/l6SmAcqpNFeDTL4XqhYr0=; b=Ohk1zHTGVns83B+2m1NrORuZ3y3Lkw9Q4sP86N3qRwTWtJfabnstabObdckHmzG3j7 Rlraho9qX8KBHIJ6IJeo1sQNc2oAowM2ApyLNkA5qaIc0GIc/VZ2C/EJFqi5H2wjFgoE yIE3S/Ynxz6eTiVLqNwRIxaypzx7M/xjHmhpq8l7/IdU1yGynv0K/o/eeTgFUw86YkZV 4qjMLl4xumfF7ohYGO3bkd4Ntw5EcdqmhfcjlqnjUruhGotCxfgNVgbVhR5cJ3F62HUU P53FYiBwfJxBmzwFT1pTWPlMmk1lTs+coQLGoZCL+dvyWex7DN+gaKMg9SitDfJKn8Sh b9lw== X-Gm-Message-State: AKaTC02VW4JBgh4SITWUNUep1ktI9TSqs1T69RNyAPt2nH6ADbsK1Z7T33HQ5GI8g0xdrw== X-Received: by 10.37.13.2 with SMTP id 2mr2878079ybn.152.1480401305575; Mon, 28 Nov 2016 22:35:05 -0800 (PST) Received: from localhost.localdomain (c-73-207-178-95.hsd1.ga.comcast.net. [73.207.178.95]) by smtp.gmail.com with ESMTPSA id r3sm21142200ywh.39.2016.11.28.22.35.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 28 Nov 2016 22:35:05 -0800 (PST) From: Pranith Kumar To: alex.bennee@linaro.org Date: Tue, 29 Nov 2016 01:35:03 -0500 Message-Id: <20161129063503.4879-1-bobby.prani@gmail.com> X-Mailer: git-send-email 2.10.2 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::244 Subject: [Qemu-devel] [PATCH] mttcg: translate-all: Enable locking debug in a debug build X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, rth@twiddle.net Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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 --- 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) {