From patchwork Fri Apr 21 13:24:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fei Wu X-Patchwork-Id: 675858 Delivered-To: patch@linaro.org Received: by 2002:a5d:4a41:0:0:0:0:0 with SMTP id v1csp856287wrs; Fri, 21 Apr 2023 06:27:11 -0700 (PDT) X-Google-Smtp-Source: AKy350bMTNEKDZ96XQLmIhGGHKfJPbAveArL5YYAtHpDAcoWqpukqCX9gCkrkVc8xyCz1NFe8ddg X-Received: by 2002:a05:6214:230f:b0:5f1:6892:743c with SMTP id gc15-20020a056214230f00b005f16892743cmr7916115qvb.24.1682083630906; Fri, 21 Apr 2023 06:27:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682083630; cv=none; d=google.com; s=arc-20160816; b=ic5ql+LOSXomyvQM6FtNFb36KWL6TI5+Xzc7v8aPblxthksQxFCJ0E6SPG39kD5vQJ b7kSK3dC+qw9C0NLFlkmru08+J/rgtfuKGV9qmcgJ9KHjzQy/Cj1ySn3HB1M0CcwyQER Kno3fb69ZJJkBcKOKRCknUqnpi40JHZ9BLbNJpnglMcEYMnvIOy1qFrmm3AsDQ0GYoy8 Uu2JbOlUfDbk75pb5ZHFpv+RkI/7qK8+Od6xZQzbMu8uWHT5Tw1nt3iXLKlVEvE5An4Q MqjyKa7TiYOKePQqNAODa7X3HDs645jTEnKrrKHeV8M9+rBsu2dAczo2on1aVzMFc86b dnyg== 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=FIDEl/x3HRvbvk2hlw+CRv5KxbP1cI5QYTv5Nos39Ng=; b=kyiAEMEhdLgnSLmyKI5PdtRnUkCv+7GdzHjBi+19+wLt4D3s/0TAn7PE+TpmpGllDX BQmuqO3D6KNwdpBupzGqO77Oy4CpCzrr7xI2PKHL8j8AVB58oCVikO6LuhoCk7Tfiiv0 ycTPBKbYtf0OvI7DfNeUqKsopM4IfyTEio5tCxpnAVarMOvo7/x14UXMZ8Y9droEIMQM 4KUVT3nV/vXwRfdHZ4IgudTMibNtZCB8AHUOPS7j2DBM+gW3p7FcBSp/3YvljmVy9xXd QbHQBm3RtJVq1todE2DxxfZNmSr8uEgif64LfV11ab4U6U1/HhLyTl9eAGkYF0eBlV1Y NzGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=D+BmXccb; 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 a12-20020a0562140c2c00b005ef79fa9aa7si679739qvd.216.2023.04.21.06.27.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 21 Apr 2023 06:27:10 -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=D+BmXccb; 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 1ppqld-0001un-7k; Fri, 21 Apr 2023 09:25:37 -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 1ppqlb-0001oJ-OL for qemu-devel@nongnu.org; Fri, 21 Apr 2023 09:25:35 -0400 Received: from mga05.intel.com ([192.55.52.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ppqla-0003Mk-0D for qemu-devel@nongnu.org; Fri, 21 Apr 2023 09:25:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682083534; x=1713619534; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XNnCNPqtiqglf9cd5+XkKNUU7zTYSnGEAAtNJCADK4M=; b=D+BmXccbn2dlByYbpPClOOIhYWuwq4vPHH5Fp0QCJuZnLTHEfK0/+PcR yV1ctz2V0LVJvfgSVS8QBN4gB2Q29cd0r2TUn/larJkG2B1jSXnoeOsWa pJD16UUiETXnsNrYMc0CQwi3rtG+V+lrA7TEL5hnAsSielDoL3+B6XddG ez97/WU3vdMQDPoXHCPH3w1lDZyRSfdIMuiXrHNZFptIhAx/KI5naIG0O G8+4CFm+qqAcvEu317C8zffbc6fzxyLmN0uEg//HSzWKhuJOzArX53I8E tA4RmdlpKJfg1/XHoHG2d5/shGPPFrP1h2qfkHTUAJ6kug3As4sZHXHLZ w==; X-IronPort-AV: E=McAfee;i="6600,9927,10686"; a="432268434" X-IronPort-AV: E=Sophos;i="5.99,214,1677571200"; d="scan'208";a="432268434" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2023 06:25:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10686"; a="756906076" X-IronPort-AV: E=Sophos;i="5.99,214,1677571200"; d="scan'208";a="756906076" Received: from wufei-optiplex-7090.sh.intel.com ([10.238.200.247]) by fmsmga008.fm.intel.com with ESMTP; 21 Apr 2023 06:25:32 -0700 From: Fei Wu To: alex.bennee@linaro.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Cc: Paolo Bonzini Subject: [PATCH v11 11/14] tb-stats: reset the tracked TBs on a tb_flush Date: Fri, 21 Apr 2023 21:24:18 +0800 Message-Id: <20230421132421.1617479-12-fei2.wu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230421132421.1617479-1-fei2.wu@intel.com> References: <20230421132421.1617479-1-fei2.wu@intel.com> MIME-Version: 1.0 Received-SPF: pass client-ip=192.55.52.43; envelope-from=fei2.wu@intel.com; helo=mga05.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 --- accel/tcg/tb-maint.c | 1 + accel/tcg/tb-stats.c | 19 +++++++++++++++++++ include/exec/tb-stats.h | 8 ++++++++ 3 files changed, 28 insertions(+) diff --git a/accel/tcg/tb-maint.c b/accel/tcg/tb-maint.c index ba1635aa4b..5f946e0285 100644 --- a/accel/tcg/tb-maint.c +++ b/accel/tcg/tb-maint.c @@ -762,6 +762,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_mb_set(&tb_ctx.tb_flush_count, tb_ctx.tb_flush_count + 1); diff --git a/accel/tcg/tb-stats.c b/accel/tcg/tb-stats.c index 61bfbe96fc..56e944b225 100644 --- a/accel/tcg/tb-stats.c +++ b/accel/tcg/tb-stats.c @@ -269,6 +269,25 @@ void do_hmp_tbstats_safe(CPUState *cpu, run_on_cpu_data icmd) g_free(cmdinfo); } +/* + * We have to reset the tbs array on a tb_flush as those + * TranslationBlocks no longer exist and we no loner know if the + * current mapping is still valid. + */ + +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 33eed8d385..ec47cbecc2 100644 --- a/include/exec/tb-stats.h +++ b/include/exec/tb-stats.h @@ -125,4 +125,12 @@ struct TbstatsCommand { void do_hmp_tbstats_safe(CPUState *cpu, run_on_cpu_data icmd); +/** + * 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