From patchwork Wed Jun 7 12:24:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fei Wu X-Patchwork-Id: 690185 Delivered-To: patch@linaro.org Received: by 2002:a5d:4d8a:0:0:0:0:0 with SMTP id b10csp284680wru; Wed, 7 Jun 2023 05:23:38 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7/W3msChrxZAA4a4kVRO2qJGSyPM5fTi6MKdxtaLqtTYgtwRt3I6c0130slkyn5G58hsxZ X-Received: by 2002:a05:620a:6089:b0:75b:23a0:dec0 with SMTP id dx9-20020a05620a608900b0075b23a0dec0mr1707540qkb.62.1686140618445; Wed, 07 Jun 2023 05:23:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686140618; cv=none; d=google.com; s=arc-20160816; b=c0r6O3Pa9uB+LYkLgQ53kHiUfxZGuc0z8CXhTtSqpWdKCKapuo+bvp9OM1vKzqZHmc sg6UAfVczw8tHCyn6zAk37hHMkd9DKCa5AdO80eLMO6ErGL3o5vJF8VkzP75GPubv5Lh mHUM0wZ+LKb58jh6xrxhmntJoMnM8G7UpIFELpcmBnlIoNoBik9Q4bG8U43udREv++XI SVZAi2ObxrK2xT6z8HbqUSrCqDuvE21b8CLSFnQLvgg0Cclsiequgxf2f5YZndLh6f1X VX0faipDH8rEjKTeuno45NxMXxDTSXryX6Bz6MD5ik7bnBG6r/GGVJuWTaeUgAUu8k8l r4HQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=3HtozjogDX+QpPMYfMl3sLhNi2bsSFwiYNC7a9mJClM=; b=WIzEP2fwSeoFGq//ShRP7+Kjk5q0e788ej4MnZ1Qnb/DJiMT7ZjM2jcZTXXoggz6gR HIC7vNrJFbGZ01f7f4rgxiAc8i+/NQK4XMwg0afVn0jMEKPmex9Mby6RyP28rDp6P4Bx oK7od6V9vLhBj5zKst8D3zuFzw9nuC1XF5gN6pt5IiDeeS7qJUiepmN4TyumstHg1TdQ MW4P2pASS6uTPDdkMK8inH5sN7RQvq7F5FDm8Vb5jcREKA/XDmN1s5P0CAve9AvyhWG1 y6cVQpRLeJf7MYHa5ZDuMvWcAYa1A60QSpfPZFF3mJSM3OGdm9KzHmTVzNBQrABLo8iG 1b9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=daAkQ4Ra; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id w1-20020a05620a128100b0075ebc11c86dsi2024010qki.145.2023.06.07.05.23.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 07 Jun 2023 05:23:38 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=daAkQ4Ra; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q6sAt-000240-EX; Wed, 07 Jun 2023 08:22:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q6sAm-0001wY-PL for qemu-devel@nongnu.org; Wed, 07 Jun 2023 08:21:58 -0400 Received: from mga06b.intel.com ([134.134.136.31] helo=mga06.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q6sAk-0004lg-Qy for qemu-devel@nongnu.org; Wed, 07 Jun 2023 08:21:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686140514; x=1717676514; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wWEbnMjFxLq0Q9nk/AfcqcGD8PPSWas/6sCddvwHO6c=; b=daAkQ4RaFSOhXemlwraAJqmjJqvRZr/KPioPzWUyptQRqnoyk8blLE3D 5DeiaNZdkcTkhG9Cd2m5G0LWk34a49j9LWRikm4p7XrzMAU80tqyWBv/G 3uvbF5THBN5ZX10mfpOj3PZlSA0wUgjQDL/chLBB83Uu71SCZtuZ3/PXv dKOjyyoN+7ZdfeDQFGNQs/wp/pPVb7upOs3dMPOqy15nrdOYr1aurfgQF m/RvfX3k8YsZEWD/vr5WQCHHNjjbYOwbeXwDw8ACaJeF7p4gcgDzc30/W JftCJWpSbbJtTVyQ1r98DJWLgNa0cETmtf4TI02zkv7GS4uDkqaPXAAyY w==; X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="420527939" X-IronPort-AV: E=Sophos;i="6.00,224,1681196400"; d="scan'208";a="420527939" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2023 05:21:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="686970045" X-IronPort-AV: E=Sophos;i="6.00,224,1681196400"; d="scan'208";a="686970045" Received: from wufei-optiplex-7090.sh.intel.com ([10.238.200.247]) by orsmga006.jf.intel.com with ESMTP; 07 Jun 2023 05:21:51 -0700 From: Fei Wu To: richard.henderson@linaro.org, alex.bennee@linaro.org, qemu-devel@nongnu.org Cc: Fei Wu , Paolo Bonzini Subject: [PATCH v15 06/10] tb-stats: reset the tracked TBs on a tb_flush Date: Wed, 7 Jun 2023 20:24:07 +0800 Message-Id: <20230607122411.3394702-7-fei2.wu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230607122411.3394702-1-fei2.wu@intel.com> References: <20230607122411.3394702-1-fei2.wu@intel.com> MIME-Version: 1.0 Received-SPF: pass client-ip=134.134.136.31; envelope-from=fei2.wu@intel.com; helo=mga06.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Alex Bennée We keep track of translations but can only do so up until the translation cache is flushed. At that point we really have no idea if we can re-create a translation because all the active tracking information has been reset. Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson Signed-off-by: Fei Wu --- accel/tcg/tb-maint.c | 1 + accel/tcg/tb-stats.c | 18 ++++++++++++++++++ include/exec/tb-stats.h | 8 ++++++++ 3 files changed, 27 insertions(+) diff --git a/accel/tcg/tb-maint.c b/accel/tcg/tb-maint.c index 0980fca358..11ff0ddd90 100644 --- a/accel/tcg/tb-maint.c +++ b/accel/tcg/tb-maint.c @@ -763,6 +763,7 @@ static void do_tb_flush(CPUState *cpu, run_on_cpu_data tb_flush_count) qht_reset_size(&tb_ctx.htable, CODE_GEN_HTABLE_SIZE); tb_remove_all(); + tbstats_reset_tbs(); tcg_region_reset_all(); /* XXX: flush processor icache at this point if cache flush is expensive */ qatomic_inc(&tb_ctx.tb_flush_count); diff --git a/accel/tcg/tb-stats.c b/accel/tcg/tb-stats.c index c90dde37d0..7c7f700c89 100644 --- a/accel/tcg/tb-stats.c +++ b/accel/tcg/tb-stats.c @@ -103,6 +103,24 @@ void clean_tbstats(void) qht_destroy(&tb_ctx.tb_stats); } +/* + * We have to reset the tbs array on a tb_flush as those + * TranslationBlocks no longer exist. + */ + +static void reset_tbs_array(void *p, uint32_t hash, void *userp) +{ + TBStatistics *tbs = p; + g_ptr_array_set_size(tbs->tbs, 0); +} + +void tbstats_reset_tbs(void) +{ + if (tb_ctx.tb_stats.map) { + qht_iter(&tb_ctx.tb_stats, reset_tbs_array, NULL); + } +} + void init_tb_stats_htable(void) { if (!tb_ctx.tb_stats.map && tb_stats_collection_enabled()) { diff --git a/include/exec/tb-stats.h b/include/exec/tb-stats.h index e16f947410..77974b4b7f 100644 --- a/include/exec/tb-stats.h +++ b/include/exec/tb-stats.h @@ -94,4 +94,12 @@ void dump_jit_profile_info(GString *buf); void clean_tbstats(void); +/** + * tbstats_reset_tbs: reset the linked array of TBs + * + * Reset the list of tbs for a given array. Should be called from + * safe work during tb_flush. + */ +void tbstats_reset_tbs(void); + #endif