From patchwork Wed Jun 14 14:02:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 105520 Delivered-To: patch@linaro.org Received: by 10.140.91.77 with SMTP id y71csp308160qgd; Wed, 14 Jun 2017 07:02:15 -0700 (PDT) X-Received: by 10.31.64.130 with SMTP id n124mr163690vka.44.1497448935683; Wed, 14 Jun 2017 07:02:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497448935; cv=none; d=google.com; s=arc-20160816; b=klrGabKluUVWbWChppROjnjVRY22rxf8I4GiIQ8nEAHFmZnnDjJxd5igED9zJAIN6D u1xZ9zFZnkVir2BGOpc5ihF9OttfYdfQqEcJhgg+fmkrmFl/NBNVugqUy5idCUr2gj5H yTIhGUWMkoJ6UA1zVdAdbvMEY0GtVAVbxuxU9CHo4dXyyhCn/1MFts8LjhU50XcX/ZgX RpsBbsCtsFRPIoQy8BTe6MosL1gcrj67kvVOLmsXFmsB0PRnhYqT3T1FTYNTZujHFBaa cYFZAud3ab4pFvWmekSmPCmZnpfgD/kYuLpUGbDOy7+5jBbkoujWhy0EUUUb+nuaHg/l V87g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=FYYIxxb8R+gdvtytxuptlbGOMv/RvOnBk2cYDfwDbPI=; b=XpWX0/zmeePVEPRYmvlATHRjExBgAc2m8ncbWmPxR1l5W0PTVjtnYvnJC0i0sLNtck HBfPT54XJcckhNCZyaJ0YnFrcCU1OqlvS14WT1tkRzrX65M1pNU8K2U7nNSi3jH0E8dV 0Nl1DojbZfM9D3u2BGQRpb3zNJ2+rMWVTV6kkDWqWv+Kmq0wCucjnq7Gaj6neDgrqFzC 5GaAitjAwyURXdD3vefNm73XniFoQxj8QFK5U0JJZRzvOupa1F5/2+IMz1R1OwOP0W9F Uj2dQlQQkG75z3r6BC48qKc4ZbOb6V+nPsquOZmWchxo3UlvknDdszJZpDlM6lBmvvWU +UWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.b=bMMJUspw; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 10si44033vki.214.2017.06.14.07.02.15 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 14 Jun 2017 07:02:15 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.b=bMMJUspw; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:49219 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8sB-0005zZ-8M for patch@linaro.org; Wed, 14 Jun 2017 10:02:15 -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) 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) 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) From: =?utf-8?q?Alex_Benn=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+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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=xxx 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 --- vl.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) -- 2.13.0 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 = qemu_opts_parse_noisily(qemu_find_opts("accel"), optarg, true); optarg = qemu_opt_get(accel_opts, "accel"); if (!optarg || is_help_option(optarg)) { error_printf("Possible accelerators: kvm, xen, hax, tcg\n"); - exit(1); + exit(0); } - accel_opts = qemu_opts_create(qemu_find_opts("machine"), NULL, - false, &error_abort); - qemu_opt_set(accel_opts, "accel", optarg, &error_abort); + opts = 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 = qemu_find_opts("machine"); qemu_opts_parse_noisily(olist, "usb=on", false); From patchwork Wed Jun 14 14:02:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 105522 Delivered-To: patch@linaro.org Received: by 10.140.91.77 with SMTP id y71csp309570qgd; Wed, 14 Jun 2017 07:04:24 -0700 (PDT) X-Received: by 10.31.47.65 with SMTP id v62mr154328vkv.2.1497449064592; Wed, 14 Jun 2017 07:04:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497449064; cv=none; d=google.com; s=arc-20160816; b=CPMm/VoexmxscuyKNGkurFyo01h5ZPE2nLT+sE5pSk63OImSxisV1muUq45FlJbiN7 BlXRylEwpwwyPq3Rhx+oZvtHTysQjEsShvot2XU+cEdHJhk/S50lr4CJq/oC5mI/R8pu tbEYycb29r+bN24P2kcImalvCDU2Wb4nIvY+aKmrkiINlVivvcYQKo0pypyGz5COae9V 9GXcAeW5X6iW6GCzQ6GJdnMlW0cmMcXqy7ZLLUdCAGJFzmPRvx98pczpufmEg0khEn2S W5QIDRNsLTcmqxQQKCsoAVCTuP5CaTY6tGSOuCZzAMN3dpxAqIrsrECz3A1bbqkNwrEo hV6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=gjM9369STrcxFlNMiJb+57+3L63URBsDxRDGawQlRhs=; b=L3NMZdOMA8jz1TBpzQg+nV+NoSlteJxGcQ5f1H9Fmaz0ihZn2XS8KvtHyuZ2uZulvk UxL2uR8Sng9g/elL737PIJ4zZAlj2dB4TEUns/sQ96g3ca/rPiEYKntsG3iPge0EaeVC hmGJlCPJQXW4glHjjp7Nvap/AnZX3ewxII6zZi0WA8/gJ8gN9279QnQbmAuxuwEfwcDu 57BtYjpwYPWWa8mJZ85I6eaPxLczcLvwNwesoJR+ON2kpBLv8NqDMOCyP5pXzq6zxJF+ VxqFDJWhl7jsTZSK8MJ5fyCaDg9BZ7XE74h0BWY9708UsV7MGJA0dUmb9nKbzrwkQFNL 11KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.b=cKCQ99OC; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id v128si57828vkd.58.2017.06.14.07.04.24 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 14 Jun 2017 07:04:24 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.b=cKCQ99OC; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:49233 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8uF-0008Er-TC for patch@linaro.org; Wed, 14 Jun 2017 10:04:23 -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) 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) 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) From: =?utf-8?q?Alex_Benn=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 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_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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ée --- tcg-runtime.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) -- 2.13.0 Tested-by: Pranith Kumar 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 = ENV_GET_CPU(env); + unsigned int addr_hash = tb_jmp_cache_hash_func(addr); + void *code_ptr = NULL; TranslationBlock *tb; - target_ulong cs_base, pc; - uint32_t flags; - tb = atomic_rcu_read(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)]); + tb = 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 == addr && tb->cs_base == cs_base && tb->flags == flags)) { - goto found; - } - tb = tb_htable_lookup(cpu, addr, cs_base, flags); - if (likely(tb)) { - atomic_set(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)], tb); - goto found; + code_ptr = 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 = tb_htable_lookup(cpu, addr, cs_base, flags); + if (likely(tb)) { + atomic_set(&cpu->tb_jmp_cache[addr_hash], tb); + code_ptr = 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; } void HELPER(exit_atomic)(CPUArchState *env) From patchwork Wed Jun 14 14:02:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 105519 Delivered-To: patch@linaro.org Received: by 10.140.91.77 with SMTP id y71csp308009qgd; Wed, 14 Jun 2017 07:02:05 -0700 (PDT) X-Received: by 10.31.82.65 with SMTP id g62mr138305vkb.69.1497448925257; Wed, 14 Jun 2017 07:02:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497448925; cv=none; d=google.com; s=arc-20160816; b=0L73P6/5HXuJ5knUTzlTmac4BXzI9VMbRuoT1OK6eJ31wU9Bcquq+JBvro+52ERIPz N1q+Frc2z1/eya2Cn0VpgrPf/vA54R0XtwDOAAGESBn85244qwocII+ekYZMg6KFWQMI xn3qzt9/rEJBK7Wlvg8m3jfqLRB4NBz2H1IPz3dbc/bxvn5Hi8kbbJcazMTE6VkJC4wn BjqzhOTxs2m4wlPYA9Rm414BG2jqV9MP9Wv//1RPkRSUFf9uvs17uPYuRLLVeCUftnke OPhiHJnKjp7qUeoM8EVL132zUW6i65+d9GMjucxUJ7j8e0B1KO+A/UwpiWDN8QvUf2Ia 0Kcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=5XbcuNiXJFzSBmXK9wtSUW1G2OBQKs3np4JcmVupowE=; b=RkI3fx3UHMwmzw9HpXGz6Xp2iggblG6GY8wlmCdSFfUm44CCLb4UusT7s0gDQjjr0k F+FxYfsmzURJbBvj2t/GtKAZUCuBlL3/IpoJyu5Ovs7QeuRFcYe2rif3ZBpgwx9TF1TY eiDC9NFkS4hk6ie5cugUJ2A1YahXXrRsd8UKDgC7uDCBv0AYrMgxtSferOPxBZ/ncuZp +XJgH96SMy1w6v1/COtQ0UTtnuqMRUljzOGoG6kIFiLMty1w9t+nrx9+zMlPjBImz5oa 1LjyXdi1X9akS39MdXJYKRU1HQczQ3LXhMVYiLZPDV/IXy3Ucz8675wzN0tvANXXIMI7 iAFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.b=UY63zGAZ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id b27si56192uac.114.2017.06.14.07.02.05 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 14 Jun 2017 07:02:05 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.b=UY63zGAZ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:49216 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dL8s0-0005tO-Nh for patch@linaro.org; Wed, 14 Jun 2017 10:02:04 -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) 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) 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) From: =?utf-8?q?Alex_Benn=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 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_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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ée --- tcg-runtime.c | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) -- 2.13.0 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 = ENV_GET_CPU(env); - unsigned int addr_hash = tb_jmp_cache_hash_func(addr); void *code_ptr = NULL; - TranslationBlock *tb; - - tb = 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 == addr && tb->cs_base == cs_base && - tb->flags == flags)) { - code_ptr = 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 = 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 = tb_jmp_cache_hash_func(addr); + TranslationBlock *tb; + + tb = 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 == addr && tb->cs_base == cs_base && + tb->flags == flags)) { code_ptr = 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 = tb_htable_lookup(cpu, addr, cs_base, flags); + if (likely(tb)) { + atomic_set(&cpu->tb_jmp_cache[addr_hash], tb); + code_ptr = tb->tc_ptr; + } } } }