From nobody Wed Nov 5 13:29:57 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1497449017783474.90268014124365; Wed, 14 Jun 2017 07:03:37 -0700 (PDT) Received: from localhost ([::1]:49231 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8tQ-00072B-Cd for importer@patchew.org; Wed, 14 Jun 2017 10:03:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8rg-0005rz-LU for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dL8ra-0008Fi-KY for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:44 -0400 Received: from mail-wr0-x22d.google.com ([2a00:1450:400c:c0c::22d]:35522) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dL8ra-0008FK-El for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:38 -0400 Received: by mail-wr0-x22d.google.com with SMTP id q97so1982885wrb.2 for ; Wed, 14 Jun 2017 07:01:38 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id j6sm124914wrb.29.2017.06.14.07.01.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Jun 2017 07:01:34 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 6DCAB3E025C; Wed, 14 Jun 2017 15:02:09 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FYYIxxb8R+gdvtytxuptlbGOMv/RvOnBk2cYDfwDbPI=; b=bMMJUspw6Ck6U6LvmnzSdZJdDC4Xx0IWW7PIOJeFU2WFUOIz1VbwIS9MUtISPgEAZ+ v7optRyyrHPBYfOmXAKtAa7pIWEg70ngOQxhl5B4WCvuvb4RWjwt/mUU5cAtyba9+sSx npu1tV+YFhFc2CCvfLwwoxvohM6KT6jSe1QG4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FYYIxxb8R+gdvtytxuptlbGOMv/RvOnBk2cYDfwDbPI=; b=tWxsBrWHo7zSeEDxGwdYStHJNbL2wdG2ozY80PI5+horrhPG99efmoMeOLzXe1f2YG uvUEJMocZIAFN2aeT6qEKCJ+b+d41hKusofvwdvIlilePfymGGPuPgL9a5XI1FzKJBoT s/cFbNKM0JygyQP1KXZzSrw+SdyakVqmIl70UWESuAD0MWtJqU/feAUbbh828QQuE5bg 6gpTxXHr3j99/3dvta+0I0cnub/519zw9BySY1agmzG8LICS7jo8w1uptbeN/4V5yAJm d4XOSNB/boZhI8920lRUMwkhDQBWlRX0oSZJaKkizuMyUheZdZlHOTr7ZYiNTJZaLnj+ z2aA== X-Gm-Message-State: AKS2vOxQVqRvXNO9zMJYg1+4X2FUT6/isoOUCtD7hkgNxVdbNPhU5Gu/ VOLdLHAdpZH+4wWJ X-Received: by 10.28.212.203 with SMTP id l194mr142189wmg.59.1497448896177; Wed, 14 Jun 2017 07:01:36 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org, pbonzini@redhat.com, rth@twiddle.net, cota@braap.org Date: Wed, 14 Jun 2017 15:02:07 +0100 Message-Id: <20170614140209.29847-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170614140209.29847-1-alex.bennee@linaro.org> References: <20170614140209.29847-1-alex.bennee@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22d Subject: [Qemu-devel] [PATCH v1 1/3] vl: Fix broken thread=xxx option of the --accel parameter 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: Thomas Huth , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Thomas Huth Commit bde4d9205 ("Fix the -accel parameter and the documentation for 'hax'") introduced a regression by adding a new local accel_opts variable which shadows the variable with the same name that is declared at the beginning of the main() scope. This causes the qemu_tcg_configure() call later to be always called with NULL, so that the thread=3Dxxx option gets ignored. Fix it by removing the local accel_opts variable and use "opts" instead, which is meant for storing temporary QemuOpts values. And while we're at it, also change the exit(1) here to exit(0) since asking for help is not an error. Fixes: bde4d9205ee9def98852ff6054cdef4efd74e1f8 Reported-by: Markus Armbruster Reported-by: Emilio G. Cota Signed-off-by: Thomas Huth Tested-by: Philippe Mathieu-Daud=C3=A9 --- vl.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/vl.c b/vl.c index 32db19e3b9..59fea15488 100644 --- a/vl.c +++ b/vl.c @@ -3757,21 +3757,18 @@ int main(int argc, char **argv, char **envp) qdev_prop_register_global(&kvm_pit_lost_tick_policy); break; } - case QEMU_OPTION_accel: { - QemuOpts *accel_opts; - + case QEMU_OPTION_accel: accel_opts =3D qemu_opts_parse_noisily(qemu_find_opts("acc= el"), optarg, true); optarg =3D qemu_opt_get(accel_opts, "accel"); if (!optarg || is_help_option(optarg)) { error_printf("Possible accelerators: kvm, xen, hax, tc= g\n"); - exit(1); + exit(0); } - accel_opts =3D qemu_opts_create(qemu_find_opts("machine"),= NULL, - false, &error_abort); - qemu_opt_set(accel_opts, "accel", optarg, &error_abort); + opts =3D qemu_opts_create(qemu_find_opts("machine"), NULL, + false, &error_abort); + qemu_opt_set(opts, "accel", optarg, &error_abort); break; - } case QEMU_OPTION_usb: olist =3D qemu_find_opts("machine"); qemu_opts_parse_noisily(olist, "usb=3Don", false); --=20 2.13.0 From nobody Wed Nov 5 13:29:57 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1497449148832836.2708157516367; Wed, 14 Jun 2017 07:05:48 -0700 (PDT) Received: from localhost ([::1]:49250 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8vY-0001Tk-7q for importer@patchew.org; Wed, 14 Jun 2017 10:05:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40167) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8re-0005rj-Lh for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dL8rb-0008GZ-Nw for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:42 -0400 Received: from mail-wr0-x230.google.com ([2a00:1450:400c:c0c::230]:33822) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dL8rb-0008G3-Ic for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:39 -0400 Received: by mail-wr0-x230.google.com with SMTP id 77so2071192wrb.1 for ; Wed, 14 Jun 2017 07:01:39 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id c11sm118069wrb.58.2017.06.14.07.01.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Jun 2017 07:01:35 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 7EE583E035F; Wed, 14 Jun 2017 15:02:09 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gjM9369STrcxFlNMiJb+57+3L63URBsDxRDGawQlRhs=; b=cKCQ99OCO84BTEkizxv3rd2Qaydeeu1m5TIaWxpqabgwXvKqFLwMeNAnNc2UDlK5zY BSKPPmkZtpdrBIRvdN8sHS1/8rDklHD9CCkDGw3tNgo1oHjvJKvVdxmtU23Jr86oh2pt zHgPQi8fRY1E3U0bVgnW/XtkyCT9WeIs3BelY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gjM9369STrcxFlNMiJb+57+3L63URBsDxRDGawQlRhs=; b=gdLvNDOhzRsJGZp8vz8NoKwoEGjFejDIs/Lqrr6ojRVwal0uUNnKfBadFuj9AZyHRe lTxlggoUbi19O4A7Xpl/YoHmBNqJz7sDuSOoB3D0tdziDo7a1+V2r8wDuHRZbs254gUW RqU2kuNHSjzBL1Y/IOJuABqZoiHVIsirCpP9w86PasEI1rYAYrKW5+GTuGRPDnkMsGtv cR8izQwMhp0Qm2zdRHMT0FAOZlPYT4eN4Hei6TlPJbQSC2xres0kri2oWwzU4d3N9VLj w+MghuwcICk14aLbX2qoG54cw0vcF8IPpUHltosbrqiZ2mUJl6aMh62RY/6avymNrqNo l+Bg== X-Gm-Message-State: AKS2vOx8lL+70kISfri3ko/tfPHUbCsgZtfFgJERyLNx1akRaxHzeG7/ 9au/hRL7UcRgQEOs X-Received: by 10.28.19.206 with SMTP id 197mr124296wmt.70.1497448897219; Wed, 14 Jun 2017 07:01:37 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org, pbonzini@redhat.com, rth@twiddle.net, cota@braap.org Date: Wed, 14 Jun 2017 15:02:08 +0100 Message-Id: <20170614140209.29847-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170614140209.29847-1-alex.bennee@linaro.org> References: <20170614140209.29847-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::230 Subject: [Qemu-devel] [PATCH v1 2/3] tcg-runtime: light re-factor of lookup_tb_ptr 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: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Just a little precursor re-factoring before I was going to add a trace point: - single return point, defaulting to tcg_ctx.code_gen_epilogue - move cs_base, pc and flags inside the jump cache hit scope - calculate the tb_jmp_cache hash once Signed-off-by: Alex Benn=C3=A9e Tested-by: Philippe Mathieu-Daud=C3=A9 --- tcg-runtime.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/tcg-runtime.c b/tcg-runtime.c index 7fa90ce508..f4bfa9cea6 100644 --- a/tcg-runtime.c +++ b/tcg-runtime.c @@ -147,30 +147,33 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg) void *HELPER(lookup_tb_ptr)(CPUArchState *env, target_ulong addr) { CPUState *cpu =3D ENV_GET_CPU(env); + unsigned int addr_hash =3D tb_jmp_cache_hash_func(addr); + void *code_ptr =3D NULL; TranslationBlock *tb; - target_ulong cs_base, pc; - uint32_t flags; =20 - tb =3D atomic_rcu_read(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)= ]); + tb =3D atomic_rcu_read(&cpu->tb_jmp_cache[addr_hash]); if (likely(tb)) { + target_ulong cs_base, pc; + uint32_t flags; + cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags); + if (likely(tb->pc =3D=3D addr && tb->cs_base =3D=3D cs_base && tb->flags =3D=3D flags)) { - goto found; - } - tb =3D tb_htable_lookup(cpu, addr, cs_base, flags); - if (likely(tb)) { - atomic_set(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)], t= b); - goto found; + code_ptr =3D tb->tc_ptr; + } else { + /* If we didn't find it in the jmp_cache we still might + * find it in the global tb_htable + */ + tb =3D tb_htable_lookup(cpu, addr, cs_base, flags); + if (likely(tb)) { + atomic_set(&cpu->tb_jmp_cache[addr_hash], tb); + code_ptr =3D tb->tc_ptr; + } } } - return tcg_ctx.code_gen_epilogue; - found: - qemu_log_mask_and_addr(CPU_LOG_EXEC, addr, - "Chain %p [%d: " TARGET_FMT_lx "] %s\n", - tb->tc_ptr, cpu->cpu_index, addr, - lookup_symbol(addr)); - return tb->tc_ptr; + + return code_ptr ? code_ptr : tcg_ctx.code_gen_epilogue; } =20 void HELPER(exit_atomic)(CPUArchState *env) --=20 2.13.0 From nobody Wed Nov 5 13:29:57 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1497449007463917.5918252893255; Wed, 14 Jun 2017 07:03:27 -0700 (PDT) Received: from localhost ([::1]:49229 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8tG-0006vH-V0 for importer@patchew.org; Wed, 14 Jun 2017 10:03:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40204) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8rh-0005sB-Dh for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dL8rb-0008GM-He for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:45 -0400 Received: from mail-wr0-x22d.google.com ([2a00:1450:400c:c0c::22d]:36237) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dL8rb-0008Fy-Bw for qemu-devel@nongnu.org; Wed, 14 Jun 2017 10:01:39 -0400 Received: by mail-wr0-x22d.google.com with SMTP id 36so1938933wry.3 for ; Wed, 14 Jun 2017 07:01:39 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id x94sm119863wrb.47.2017.06.14.07.01.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Jun 2017 07:01:36 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 8FCC53E0386; Wed, 14 Jun 2017 15:02:09 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5XbcuNiXJFzSBmXK9wtSUW1G2OBQKs3np4JcmVupowE=; b=UY63zGAZT+N8ZTW3irO+xgKjQWV25+vE/iRKDCWBBtaGkgcttRPNktpPGwfnxN0Woe T8kdSv4nAZWGLM1xLW+Z2SE2QSCnW5M5Ae8T6Kw0JW7xG4BxZinFJYO1mI52GHEqxrjK RVDyDlB45hTNOG3xFVxF2Bq3od/mh1wRwBhLU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5XbcuNiXJFzSBmXK9wtSUW1G2OBQKs3np4JcmVupowE=; b=SCUf92LpZpZSnfnQVTtEYhKanxx6J6mZKqkkLhJw/+/hRkgnMg/U9+K5gQXnJJAH16 aq58BeilrqlT2V2tXQOabKuPrlOqEgcA5k5TZmypwuoFcj8oE45qYhVNAwFdHLTiuOvJ cFlk0nkbaoUG5B1Jxz1TD2UTJileIW18t5H7NBD+hCV8hyUAGNHSpl2SkEGZ9C0NBaMc U8X4L4qwVkkGpNTXzgUtREMXiWKquRF7bBod/SGbJpvULRuM9Eqiz4jgMFK7t/xXMnjV 6MWZ/Q4VP8wC+dezbKev7+vttNnr/yoK0EnU+pCcvZhSeKBdYPc6Lr/Pu9RNDAEA45CA 5eRQ== X-Gm-Message-State: AKS2vOymHhidFlxYOWh83lQUNMvznIhLN5YiGtMevJfA5muhT25E3e38 lcmzoJjAhLhlrjuB X-Received: by 10.28.135.2 with SMTP id j2mr174336wmd.72.1497448898256; Wed, 14 Jun 2017 07:01:38 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org, pbonzini@redhat.com, rth@twiddle.net, cota@braap.org Date: Wed, 14 Jun 2017 15:02:09 +0100 Message-Id: <20170614140209.29847-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170614140209.29847-1-alex.bennee@linaro.org> References: <20170614140209.29847-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22d Subject: [Qemu-devel] [PATCH v1 3/3] tcg-runtime: short-circuit lookup_tb_ptr on IRQs 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: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 While the next TB would detect the exit flag has been set there is no point if we can exit sooner. We also check cpu->interrupt_request as some front-ends can set it rather than using the cpu_interrupt() API call and would normally be expecting the IRQ to get picked up on the previously fairly regular exits from the run loop. Signed-off-by: Alex Benn=C3=A9e Tested-by: Philippe Mathieu-Daud=C3=A9 --- tcg-runtime.c | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/tcg-runtime.c b/tcg-runtime.c index f4bfa9cea6..a025a6f194 100644 --- a/tcg-runtime.c +++ b/tcg-runtime.c @@ -147,28 +147,35 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg) void *HELPER(lookup_tb_ptr)(CPUArchState *env, target_ulong addr) { CPUState *cpu =3D ENV_GET_CPU(env); - unsigned int addr_hash =3D tb_jmp_cache_hash_func(addr); void *code_ptr =3D NULL; - TranslationBlock *tb; - - tb =3D atomic_rcu_read(&cpu->tb_jmp_cache[addr_hash]); - if (likely(tb)) { - target_ulong cs_base, pc; - uint32_t flags; - - cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags); - - if (likely(tb->pc =3D=3D addr && tb->cs_base =3D=3D cs_base && - tb->flags =3D=3D flags)) { - code_ptr =3D tb->tc_ptr; - } else { - /* If we didn't find it in the jmp_cache we still might - * find it in the global tb_htable - */ - tb =3D tb_htable_lookup(cpu, addr, cs_base, flags); - if (likely(tb)) { - atomic_set(&cpu->tb_jmp_cache[addr_hash], tb); + + /* If there is an interrupt pending request or the TCG exit flag + * has been set we might as well stop here and return to the main + * loop. + */ + if (!cpu->icount_decr.u16.high && !cpu->interrupt_request) { + unsigned int addr_hash =3D tb_jmp_cache_hash_func(addr); + TranslationBlock *tb; + + tb =3D atomic_rcu_read(&cpu->tb_jmp_cache[addr_hash]); + if (likely(tb)) { + target_ulong cs_base, pc; + uint32_t flags; + + cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags); + + if (likely(tb->pc =3D=3D addr && tb->cs_base =3D=3D cs_base && + tb->flags =3D=3D flags)) { code_ptr =3D tb->tc_ptr; + } else { + /* If we didn't find it in the jmp_cache we still might + * find it in the global tb_htable + */ + tb =3D tb_htable_lookup(cpu, addr, cs_base, flags); + if (likely(tb)) { + atomic_set(&cpu->tb_jmp_cache[addr_hash], tb); + code_ptr =3D tb->tc_ptr; + } } } } --=20 2.13.0