From patchwork Tue Mar 7 15:50:44 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: 95001 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1947330qgd; Tue, 7 Mar 2017 07:57:13 -0800 (PST) X-Received: by 10.55.148.71 with SMTP id w68mr1208090qkd.268.1488902233854; Tue, 07 Mar 2017 07:57:13 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id p11si353642qtg.227.2017.03.07.07.57.13 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 07:57:13 -0800 (PST) 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; 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]:51342 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHU7-0006oF-DQ for patch@linaro.org; Tue, 07 Mar 2017 10:57:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45730) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHO0-0002PG-0S for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHNy-0005jE-7F for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:52 -0500 Received: from mail-wr0-x22d.google.com ([2a00:1450:400c:c0c::22d]:36455) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHNy-0005iu-13 for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:50 -0500 Received: by mail-wr0-x22d.google.com with SMTP id u108so4318147wrb.3 for ; Tue, 07 Mar 2017 07:50:49 -0800 (PST) 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=+KBKsm5ulTq4WhNhuLpB3JQrD5tBOzJfyHdp8ImIHcI=; b=IPujn25QOHDxiiznwfx7cubT7UtyvHsRHawnvesJ22PWxCBXTJvsqYNymf45Lh2C7X lbWy197scw5tV7AYURaFH+bjMQvBlDYtABTAROgwFixR8iisAlbziylga1pglpWFAuUc KvZuhfgbfsn83HpnYXB926bO/4kb9KXPiaCw4= 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=+KBKsm5ulTq4WhNhuLpB3JQrD5tBOzJfyHdp8ImIHcI=; b=Nzebwyv38fxKMETA4YbZdkvZar5ugv6Ig4Hg79VPK35AGmcNOHuBdBJ4xszigvqJe1 9uumysCAi/VoJS6yqovhDMHS5KlcZHCiosf4LF9qsdWZEeYOOlVYqVR5dY2GJScLUh2/ nHM9jOuHchhiqZBGDI6nNnPAlTLnj/l/COp0LpmyDs0IoL0Tt/jBSFEBkPH+X73SA7rG BqaA5LnzFToKChux3pqyAn8HFN0ECR6BThOnfdZmkizxycEUYjD+Hj/Nz67jicBfFzai 8bxB//QApOG+OLhqj6JTzlkXuc9xXGd6nbnwS4TVYNGFQXlXkEshVK2tQYqPiUtmzeWL SDHg== X-Gm-Message-State: AMke39kha1SgIoqnTkqSFvQa163yhVTjBRIDmhOb5GeUpRuMv82/g9cEekc2GZsOrjv8I6Cw X-Received: by 10.223.133.6 with SMTP id 6mr903057wrh.57.1488901848820; Tue, 07 Mar 2017 07:50:48 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id t194sm19546260wmd.13.2017.03.07.07.50.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:45 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 81FE33E3002; Tue, 7 Mar 2017 15:50:54 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:44 +0000 Message-Id: <20170307155054.5833-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-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 v3 01/11] vl/cpus: be smarter with icount and MTTCG 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: mttcg@listserver.greensocs.com, nikunj@linux.vnet.ibm.com, Peter Crosthwaite , a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The sense of the test was inverted. Make it simple, if icount is enabled then we disabled MTTCG by default. If the user tries to force MTTCG upon us then we tell them "no". Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson --- cpus.c | 7 +++---- vl.c | 7 ++----- 2 files changed, 5 insertions(+), 9 deletions(-) -- 2.11.0 diff --git a/cpus.c b/cpus.c index c857ad2957..6a817fec13 100644 --- a/cpus.c +++ b/cpus.c @@ -181,10 +181,7 @@ static bool check_tcg_memory_orders_compatible(void) static bool default_mttcg_enabled(void) { - QemuOpts *icount_opts = qemu_find_opts_singleton("icount"); - const char *rr = qemu_opt_get(icount_opts, "rr"); - - if (rr || TCG_OVERSIZED_GUEST) { + if (use_icount || TCG_OVERSIZED_GUEST) { return false; } else { #ifdef TARGET_SUPPORTS_MTTCG @@ -202,6 +199,8 @@ void qemu_tcg_configure(QemuOpts *opts, Error **errp) if (strcmp(t, "multi") == 0) { if (TCG_OVERSIZED_GUEST) { error_setg(errp, "No MTTCG when guest word size > hosts"); + } else if (use_icount) { + error_setg(errp, "No MTTCG when icount is enabled"); } else { if (!check_tcg_memory_orders_compatible()) { error_report("Guest expects a stronger memory ordering " diff --git a/vl.c b/vl.c index 71b75ef8a0..7aea62d0a5 100644 --- a/vl.c +++ b/vl.c @@ -4026,8 +4026,6 @@ int main(int argc, char **argv, char **envp) replay_configure(icount_opts); - qemu_tcg_configure(accel_opts, &error_fatal); - machine_class = select_machine(); set_memory_options(&ram_slots, &maxram_size, machine_class); @@ -4394,14 +4392,13 @@ int main(int argc, char **argv, char **envp) if (!tcg_enabled()) { error_report("-icount is not allowed with hardware virtualization"); exit(1); - } else if (qemu_tcg_mttcg_enabled()) { - error_report("-icount does not currently work with MTTCG"); - exit(1); } configure_icount(icount_opts, &error_abort); qemu_opts_del(icount_opts); } + qemu_tcg_configure(accel_opts, &error_fatal); + if (default_net) { QemuOptsList *net = qemu_find_opts("net"); qemu_opts_set(net, NULL, "type", "nic", &error_abort); From patchwork Tue Mar 7 15:50:45 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: 95004 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1951161qgd; Tue, 7 Mar 2017 08:04:59 -0800 (PST) X-Received: by 10.31.80.3 with SMTP id e3mr620510vkb.142.1488902699748; Tue, 07 Mar 2017 08:04:59 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id b10si197417uab.109.2017.03.07.08.04.59 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:04:59 -0800 (PST) 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; 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]:51394 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHbd-0005kd-4l for patch@linaro.org; Tue, 07 Mar 2017 11:04:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45735) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHO0-0002PO-59 for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHNz-0005jU-54 for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:52 -0500 Received: from mail-wr0-x22d.google.com ([2a00:1450:400c:c0c::22d]:35534) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHNy-0005jI-V1 for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:51 -0500 Received: by mail-wr0-x22d.google.com with SMTP id g10so4347743wrg.2 for ; Tue, 07 Mar 2017 07:50:50 -0800 (PST) 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=MdMi8KNCiemhHpgMyexcrOo+qojUX7VErc8d71M+Kjs=; b=QHr8qMfAt5ObAS4fSNf2DHRR6ETr75GBVW39ZFmL4cXilIlokXoSFjr0ZKUhatzmNB ygKfx2r0CnCscuwNRzUPkDdhdf+EqMKhkhuJoTXqt1T900M09XW7f+unRVeq/+uVfqsw YoHOoK3WaeK3BzRxh8ox2MwwC+/euq/GIL68c= 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=MdMi8KNCiemhHpgMyexcrOo+qojUX7VErc8d71M+Kjs=; b=BLj0KCl370gR0B2GIWowzQE2hQhWo/r1UwouoF3wGuKz6grQFZKmW291iLYqtsk7a5 hm5rfIXGdUyjfPx7lXf3PiRQeeF2s0nQ8p6kgXFSE/31XtW+SLkNWzeFfYIeARvN7NTf ZpD6nQ+oOcYC7nB02qVP3qYDjquoTcfSzSStptXECfE2NtQ9gdDcHFJ9q/2iPMcooKr/ 5cqwSIYGF/Hva1brr/R9RpAkKbmnkN1YfewvFeKTLN3OdC4VLKRx10YYeP73dgBS9PsF PRqt3Fhy0o+dVh0FHoYi6WwdSwLe630ZaY7EkUX+3LiTtZKrwdHGjeXnfrzvEjpGWsaz kx3w== X-Gm-Message-State: AMke39kr4VYl1ZT8EtDdN0g5esWwwHCEuRkQotwu6ZNraYZLcBE8tHpkphEsciRdCZ8owNC3 X-Received: by 10.223.161.74 with SMTP id r10mr936239wrr.16.1488901849907; Tue, 07 Mar 2017 07:50:49 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id k76sm504893wrc.12.2017.03.07.07.50.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:45 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 931BC3E3005; Tue, 7 Mar 2017 15:50:54 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:45 +0000 Message-Id: <20170307155054.5833-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-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 v3 02/11] target/i386/cpu.h: declare TCG_GUEST_DEFAULT_MO 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: mttcg@listserver.greensocs.com, Eduardo Habkost , nikunj@linux.vnet.ibm.com, a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This suppresses the incorrect warning when forcing MTTCG for x86 guests on x86 hosts. A future patch will still warn when TARGET_SUPPORT_MTTCG hasn't been defined for the guest (which is still pending for x86). Reported-by: Paolo Bonzini Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson Reviewed-by: Eduardo Habkost Acked-by: Eduardo Habkost --- target/i386/cpu.h | 3 +++ 1 file changed, 3 insertions(+) -- 2.11.0 diff --git a/target/i386/cpu.h b/target/i386/cpu.h index ac2ad6d443..fb09aee7f8 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -30,6 +30,9 @@ #define TARGET_LONG_BITS 32 #endif +/* The x86 has a strong memory model with some store-after-load re-ordering */ +#define TCG_GUEST_DEFAULT_MO (TCG_MO_ALL & ~TCG_MO_ST_LD) + /* Maximum instruction code size */ #define TARGET_MAX_INSN_SIZE 16 From patchwork Tue Mar 7 15:50:46 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: 95005 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1952294qgd; Tue, 7 Mar 2017 08:07:16 -0800 (PST) X-Received: by 10.31.102.135 with SMTP id a129mr552836vkc.60.1488902836369; Tue, 07 Mar 2017 08:07:16 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [208.118.235.17]) by mx.google.com with ESMTPS id j7si201979vkf.99.2017.03.07.08.07.15 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:07:16 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 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]:51412 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHdp-0007rV-L5 for patch@linaro.org; Tue, 07 Mar 2017 11:07:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45778) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHO2-0002R2-K1 for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHO1-0005os-Ay for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:54 -0500 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]:38555) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHO1-0005n8-5l for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:53 -0500 Received: by mail-wm0-x22c.google.com with SMTP id t189so8503912wmt.1 for ; Tue, 07 Mar 2017 07:50:52 -0800 (PST) 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=0GOTDX+AElx29ttE0BJjThzMCfmU4ClQA+AJ7HMsjtc=; b=PkUCvw190IXLxlxA5jwNEZwvxHhaOAOqYJrFoWWx4aSXVsnTtqRGMy4+/SUucpdo9n 4mGxxYCpskL5ErLwGIcjmhWmBYFz6P/OI9Kg6s4Sw5HhhK/t1ssPce1h5qCYKxqFMpr8 swReuSbVvpe5SlOb77g/HjZGoKdmrFfqfwVwI= 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=0GOTDX+AElx29ttE0BJjThzMCfmU4ClQA+AJ7HMsjtc=; b=f65QSA2/MRQZ6MzyklaGst3K3BTEdO4GcTtA7KMtet7qTTpuKgq9g0CpDzc6jvnHD5 b+aj2utapDbOwjAGcaI4N4zCZDBRPaDpPbRWP8Dwi1++UASgwG4EWT62WWfm+ii1HpI3 jkwCSVGGMGEQZPLGz5g09V2TrTKx+DUsBeWCs851KgIPepxzGX/od1wwrNCjGdQsXv95 nrIPIIACG7VZ/y55ykw6eMK/0ZWyu7hITe2DtkeFHhgcMXkZSpgrWevEafoZuJMB+vFt Yi+7Rlnjddv7H4A+sZycCqsNBJ0YTODrBOmsJqjyPZaQD+ma0HiUqYBYW4+6usj3IO6W AEPA== X-Gm-Message-State: AMke39kP6tPdzt125trHNUTd94Sq8gggZotxK2AwMza9NzUQgOhIE8qlnqEP+WU0iuZ5UzoJ X-Received: by 10.28.93.68 with SMTP id r65mr1524078wmb.133.1488901852024; Tue, 07 Mar 2017 07:50:52 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id e72sm1072124wma.5.2017.03.07.07.50.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:48 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id A4B913E3006; Tue, 7 Mar 2017 15:50:54 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:46 +0000 Message-Id: <20170307155054.5833-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22c Subject: [Qemu-devel] [PATCH v3 03/11] cpus.c: add additional error_report when !TARGET_SUPPORT_MTTCG 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: mttcg@listserver.greensocs.com, nikunj@linux.vnet.ibm.com, Peter Crosthwaite , a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" While we may fail the memory ordering check later that can be confusing. So in cases where TARGET_SUPPORT_MTTCG has yet to be defined we should say so specifically. Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson --- cpus.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.11.0 Reviewed-by: Philippe Mathieu-Daudé diff --git a/cpus.c b/cpus.c index 6a817fec13..69e21858b8 100644 --- a/cpus.c +++ b/cpus.c @@ -202,6 +202,10 @@ void qemu_tcg_configure(QemuOpts *opts, Error **errp) } else if (use_icount) { error_setg(errp, "No MTTCG when icount is enabled"); } else { +#ifndef TARGET_SUPPORT_MTTCG + error_report("Guest not yet converted to MTTCG - " + "you may get unexpected results"); +#endif if (!check_tcg_memory_orders_compatible()) { error_report("Guest expects a stronger memory ordering " "than the host provides"); From patchwork Tue Mar 7 15:50:47 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: 95006 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1952750qgd; Tue, 7 Mar 2017 08:08:10 -0800 (PST) X-Received: by 10.25.125.132 with SMTP id y126mr351136lfc.102.1488902889907; Tue, 07 Mar 2017 08:08:09 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id b17si177712lfb.75.2017.03.07.08.08.09 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:08:09 -0800 (PST) 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; 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]:51417 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHei-0000IB-AG for patch@linaro.org; Tue, 07 Mar 2017 11:08:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45807) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHO4-0002SY-4w for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHO3-0005qF-4E for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:56 -0500 Received: from mail-wr0-x231.google.com ([2a00:1450:400c:c0c::231]:33405) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHO2-0005px-KA for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:54 -0500 Received: by mail-wr0-x231.google.com with SMTP id u48so4379024wrc.0 for ; Tue, 07 Mar 2017 07:50:54 -0800 (PST) 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=xghB2+k6vzdm0OczMY4d5pjgKabpj0Re/RUs8e6z0kw=; b=HCrduoSAhTyjIJ/mR1ArsJb9us5E7JWGhAW6OOeeYxt0z/PbrQ25KLN0c/hYKtNI96 ORZf38SKPugYMlbVyjt/wNfNw6cWrSWC23cUxadfSRi4Ti6IyLsMjG1h5bofu77wyUjP rAjXU4UtKT9+QDt0QRL3U+W+2jUOUCuPw0JK8= 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=xghB2+k6vzdm0OczMY4d5pjgKabpj0Re/RUs8e6z0kw=; b=kvcUaamtUV57RrkRQ31+WPkk1U3prKovAKe7pb/qoUWXtb9Rg01ZugdVurXoJpHWEs 2dI6AdlIEoCsNTr/ROdHhooc2dAVu3ld5b940moaE+F2zQId1S7VuFNMqdMnMeO3/LbO Ajrz6n5XRkB1siqYX9jHDDNo+geSK9JiDM+2PX7rbgMKa9xzEmz88JTbLo77fockFN3p qKEBVW6AijKl1BmaL/f0q4b609pqgY24nhQv/6oR56E/87ItwN+0Dzbu0emFY3cfweAb yAmk51hDgiETxGaYmuiXgKAocCj9+d35Zxrs7c5/c5UXezd+AKrF4+Fu/ysvUFgW+PmJ MYmg== X-Gm-Message-State: AMke39lLgLe86XKmjCFBnoNyXaER768jKQjM0/z+f9C20ZLD1yeh+r7NKv9+OPaqtLfy9Iyr X-Received: by 10.223.136.182 with SMTP id f51mr841671wrf.90.1488901853358; Tue, 07 Mar 2017 07:50:53 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id t103sm479237wrc.43.2017.03.07.07.50.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:49 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id B99513E3009; Tue, 7 Mar 2017 15:50:54 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:47 +0000 Message-Id: <20170307155054.5833-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-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::231 Subject: [Qemu-devel] [PATCH v3 04/11] sparc/sparc64: grab BQL before calling cpu_check_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: mttcg@listserver.greensocs.com, nikunj@linux.vnet.ibm.com, Mark Cave-Ayland , a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , Artyom Tarasenko , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" IRQ modification is part of device emulation and should be done while the BQL is held to prevent races when MTTCG is enabled. This adds assertions in the hw emulation layer and wraps the calls from helpers in the BQL. Reported-by: Mark Cave-Ayland Signed-off-by: Alex Bennée --- v3 - move BQL from cpu_put_psr to helper_wpsr - comment cpu_put_psr is under BQL --- hw/sparc/sun4m.c | 3 +++ hw/sparc64/sparc64.c | 3 +++ target/sparc/int64_helper.c | 3 +++ target/sparc/win_helper.c | 13 +++++++++++++ 4 files changed, 22 insertions(+) -- 2.11.0 diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 61416a6426..873cd7df9a 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -142,6 +142,9 @@ void cpu_check_irqs(CPUSPARCState *env) { CPUState *cs; + /* We should be holding the BQL before we mess with IRQs */ + g_assert(qemu_mutex_iothread_locked()); + if (env->pil_in && (env->interrupt_index == 0 || (env->interrupt_index & ~15) == TT_EXTINT)) { unsigned int i; diff --git a/hw/sparc64/sparc64.c b/hw/sparc64/sparc64.c index b3d219c769..4e4fdab065 100644 --- a/hw/sparc64/sparc64.c +++ b/hw/sparc64/sparc64.c @@ -55,6 +55,9 @@ void cpu_check_irqs(CPUSPARCState *env) uint32_t pil = env->pil_in | (env->softint & ~(SOFTINT_TIMER | SOFTINT_STIMER)); + /* We should be holding the BQL before we mess with IRQs */ + g_assert(qemu_mutex_iothread_locked()); + /* TT_IVEC has a higher priority (16) than TT_EXTINT (31..17) */ if (env->ivec_status & 0x20) { return; diff --git a/target/sparc/int64_helper.c b/target/sparc/int64_helper.c index 605747c93c..f942973c22 100644 --- a/target/sparc/int64_helper.c +++ b/target/sparc/int64_helper.c @@ -18,6 +18,7 @@ */ #include "qemu/osdep.h" +#include "qemu/main-loop.h" #include "cpu.h" #include "exec/helper-proto.h" #include "exec/log.h" @@ -208,7 +209,9 @@ static bool do_modify_softint(CPUSPARCState *env, uint32_t value) env->softint = value; #if !defined(CONFIG_USER_ONLY) if (cpu_interrupts_enabled(env)) { + qemu_mutex_lock_iothread(); cpu_check_irqs(env); + qemu_mutex_unlock_iothread(); } #endif return true; diff --git a/target/sparc/win_helper.c b/target/sparc/win_helper.c index 71b3dd37e8..154279ecda 100644 --- a/target/sparc/win_helper.c +++ b/target/sparc/win_helper.c @@ -18,6 +18,7 @@ */ #include "qemu/osdep.h" +#include "qemu/main-loop.h" #include "cpu.h" #include "exec/exec-all.h" #include "exec/helper-proto.h" @@ -82,6 +83,7 @@ void cpu_put_psr_raw(CPUSPARCState *env, target_ulong val) #endif } +/* Called with BQL held */ void cpu_put_psr(CPUSPARCState *env, target_ulong val) { cpu_put_psr_raw(env, val); @@ -153,7 +155,10 @@ void helper_wrpsr(CPUSPARCState *env, target_ulong new_psr) if ((new_psr & PSR_CWP) >= env->nwindows) { cpu_raise_exception_ra(env, TT_ILL_INSN, GETPC()); } else { + /* cpu_put_psr may trigger interrupts, hence BQL */ + qemu_mutex_lock_iothread(); cpu_put_psr(env, new_psr); + qemu_mutex_unlock_iothread(); } } @@ -368,7 +373,9 @@ void helper_wrpstate(CPUSPARCState *env, target_ulong new_state) #if !defined(CONFIG_USER_ONLY) if (cpu_interrupts_enabled(env)) { + qemu_mutex_lock_iothread(); cpu_check_irqs(env); + qemu_mutex_unlock_iothread(); } #endif } @@ -381,7 +388,9 @@ void helper_wrpil(CPUSPARCState *env, target_ulong new_pil) env->psrpil = new_pil; if (cpu_interrupts_enabled(env)) { + qemu_mutex_lock_iothread(); cpu_check_irqs(env); + qemu_mutex_unlock_iothread(); } #endif } @@ -408,7 +417,9 @@ void helper_done(CPUSPARCState *env) #if !defined(CONFIG_USER_ONLY) if (cpu_interrupts_enabled(env)) { + qemu_mutex_lock_iothread(); cpu_check_irqs(env); + qemu_mutex_unlock_iothread(); } #endif } @@ -435,7 +446,9 @@ void helper_retry(CPUSPARCState *env) #if !defined(CONFIG_USER_ONLY) if (cpu_interrupts_enabled(env)) { + qemu_mutex_lock_iothread(); cpu_check_irqs(env); + qemu_mutex_unlock_iothread(); } #endif } From patchwork Tue Mar 7 15:50:48 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: 95013 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1954987qgd; Tue, 7 Mar 2017 08:12:57 -0800 (PST) X-Received: by 10.176.24.218 with SMTP id d26mr663412uah.117.1488903177789; Tue, 07 Mar 2017 08:12:57 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id d25si204073uab.229.2017.03.07.08.12.57 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:12:57 -0800 (PST) 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; 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]:51457 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHjL-0004p5-Ec for patch@linaro.org; Tue, 07 Mar 2017 11:12:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45968) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHOD-0002dh-RJ for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHO9-0005tQ-QN for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:05 -0500 Received: from mail-wm0-x22e.google.com ([2a00:1450:400c:c09::22e]:38614) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHO9-0005sz-7c for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:01 -0500 Received: by mail-wm0-x22e.google.com with SMTP id t189so8507409wmt.1 for ; Tue, 07 Mar 2017 07:51:01 -0800 (PST) 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=0/mBL8YEDIrXOvgwP6BHyMKtW3bqPjUnWf8pMW7K7m4=; b=FHcRvxrelfprMg8vZTS6uMVgHNfv7NjRaSkRT4apXMbxqOHd738o7dx7pZUSqqBVfc XBd7gEJeyMusLqK7HaQ4JtRQe4njdRgkQmJvon8XrPphfN8qplBkyYhbh7DbQ4fydcz/ LtrX7on1uqCJGoO7euRX0U3BHC933HJCUvxNY= 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=0/mBL8YEDIrXOvgwP6BHyMKtW3bqPjUnWf8pMW7K7m4=; b=Y14cYy/CcQbujvrr7lYwVgtsCN/ddJJes5C36DPMozverQXHTJ9W/goOd8DB8sikkD ptmvd4gMImqegdum+5Gd6mM5bRLKaTF0zmZthz9Ip8ca4gGBwvOBe5h4O9ZHLxl0C2+L dpxMG8AGVF/Ur73z7jGUulEh5aoP19C6uvGCZjXpefhHMXr4YLvWS4CnYJJkBa9ZPqpx MnbnYpA+pKmt5QGKr/vHa+PqszS3c8VSkuk61a/Kmdr8ZoQ+a66Z7+xot2ODcWO2REuf Uo/EbSvy/S+qUzw8GZ1saJDB9grxL2+U7d9T9BeaiUnEdea4q4WT74sCIgOOIiYDVGEf TMuA== X-Gm-Message-State: AMke39lXH+zJAGRR6FLp5hTYD/6yWZmEV1pr9h0RhL+4K9f2feLqRNG9abnwyM97mALQigg3 X-Received: by 10.28.214.146 with SMTP id n140mr1461191wmg.58.1488901860012; Tue, 07 Mar 2017 07:51:00 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id o15sm462742wra.61.2017.03.07.07.50.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:53 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id CAD763E301B; Tue, 7 Mar 2017 15:50:54 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:48 +0000 Message-Id: <20170307155054.5833-6-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22e Subject: [Qemu-devel] [PATCH v3 05/11] s390x/misc_helper.c: wrap IO instructions in BQL 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: mttcg@listserver.greensocs.com, Alexander Graf , nikunj@linux.vnet.ibm.com, a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Helpers that can trigger IO events (including interrupts) need to be protected by the BQL. I've updated all the helpers that call into an ioinst_handle_* functions. Reported-by: Thomas Huth Signed-off-by: Alex Bennée --- target/s390x/misc_helper.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) -- 2.11.0 Reviewed-by: Philippe Mathieu-Daudé diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index 3cb942e8bb..93b0e61366 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -19,6 +19,7 @@ */ #include "qemu/osdep.h" +#include "qemu/main-loop.h" #include "cpu.h" #include "exec/memory.h" #include "qemu/host-utils.h" @@ -551,61 +552,81 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1, void HELPER(xsch)(CPUS390XState *env, uint64_t r1) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_xsch(cpu, r1); + qemu_mutex_unlock_iothread(); } void HELPER(csch)(CPUS390XState *env, uint64_t r1) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_csch(cpu, r1); + qemu_mutex_unlock_iothread(); } void HELPER(hsch)(CPUS390XState *env, uint64_t r1) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_hsch(cpu, r1); + qemu_mutex_unlock_iothread(); } void HELPER(msch)(CPUS390XState *env, uint64_t r1, uint64_t inst) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_msch(cpu, r1, inst >> 16); + qemu_mutex_unlock_iothread(); } void HELPER(rchp)(CPUS390XState *env, uint64_t r1) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_rchp(cpu, r1); + qemu_mutex_unlock_iothread(); } void HELPER(rsch)(CPUS390XState *env, uint64_t r1) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_rsch(cpu, r1); + qemu_mutex_unlock_iothread(); } void HELPER(ssch)(CPUS390XState *env, uint64_t r1, uint64_t inst) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_ssch(cpu, r1, inst >> 16); + qemu_mutex_unlock_iothread(); } void HELPER(stsch)(CPUS390XState *env, uint64_t r1, uint64_t inst) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_stsch(cpu, r1, inst >> 16); + qemu_mutex_unlock_iothread(); } void HELPER(tsch)(CPUS390XState *env, uint64_t r1, uint64_t inst) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_tsch(cpu, r1, inst >> 16); + qemu_mutex_unlock_iothread(); } void HELPER(chsc)(CPUS390XState *env, uint64_t inst) { S390CPU *cpu = s390_env_get_cpu(env); + qemu_mutex_lock_iothread(); ioinst_handle_chsc(cpu, inst >> 16); + qemu_mutex_unlock_iothread(); } #endif From patchwork Tue Mar 7 15:50:49 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: 95008 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1953451qgd; Tue, 7 Mar 2017 08:09:29 -0800 (PST) X-Received: by 10.31.36.151 with SMTP id k145mr643052vkk.29.1488902969331; Tue, 07 Mar 2017 08:09:29 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 9si211400uag.21.2017.03.07.08.09.28 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:09:29 -0800 (PST) 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; 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]:51425 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHfy-0001nQ-GP for patch@linaro.org; Tue, 07 Mar 2017 11:09:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45834) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHO5-0002UE-RQ for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHO4-0005qy-My for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:57 -0500 Received: from mail-wr0-x232.google.com ([2a00:1450:400c:c0c::232]:34192) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHO4-0005qO-A1 for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:56 -0500 Received: by mail-wr0-x232.google.com with SMTP id l37so4381792wrc.1 for ; Tue, 07 Mar 2017 07:50:56 -0800 (PST) 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=8lpWRwy8UPmdlWUz+lQvEwbITj3/HElyc7FbfuzGx+A=; b=PWIkZqDdumMdh5+pl9juMsYyIS2PPZZM5o0ypCLw5s4e5afNjyL8QNW8PE2UYFb7sA Uy3745WAbtrFAdOYqjhE0OwpTUWUvJB3rvQMwbLvrNAEaAc9vOlnh0RgfnLQYIJQjf28 MbnloXXuVG0HLNz2cZeqb5ANM+PWkxrx2+t7c= 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=8lpWRwy8UPmdlWUz+lQvEwbITj3/HElyc7FbfuzGx+A=; b=DJMwkoh2i4f+HGWs9j2WuqTyo6k5EenjXZYfn9f+7IOo9aJi/kkv8nRelkNMd9P8kL sfgtsfHbzxEJJg4+rcfzzKYDxLFXsBswB9WD8EQ3aA/5RC/jS6aeza9KsJX8VZWoK0Oc JxnrPFHtOrVHCEWH85VNUlSYONxwin+wLCDvwWaaAAUdBpvonOIuKV9KlmGNgEj+KYmO vQGDiS6ep1IiY8pCtx9BAIEnns8IRFfKtRoKVrnnXGAxkblBo50UzoCdiBYgPpgjBV3f 149o2xXobmtOkGbJJAScIDEK3f+693TWpMF9HjfSbWbNMkS+M5eca2KAL8JfjcIuLref kjrQ== X-Gm-Message-State: AMke39kilWMhgZ/bcbcFVqe1tKoufpqZqQweiWAnIUnRUiFeF7L4VNFgpH3b4PoeXcrgq40U X-Received: by 10.223.160.9 with SMTP id k9mr944046wrk.123.1488901855119; Tue, 07 Mar 2017 07:50:55 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id u145sm9170142wmu.1.2017.03.07.07.50.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:53 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id DD75E3E3029; Tue, 7 Mar 2017 15:50:54 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:49 +0000 Message-Id: <20170307155054.5833-7-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-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::232 Subject: [Qemu-devel] [PATCH v3 06/11] target/xtensa: hold BQL for interrupt processing 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: mttcg@listserver.greensocs.com, nikunj@linux.vnet.ibm.com, a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, Max Filippov , cota@braap.org, bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Make sure we have the BQL held when processing interrupts. Reported-by: Thomas Huth Signed-off-by: Alex Bennée Acked-by: Max Filippov --- target/xtensa/helper.c | 1 + target/xtensa/op_helper.c | 7 +++++++ 2 files changed, 8 insertions(+) -- 2.11.0 diff --git a/target/xtensa/helper.c b/target/xtensa/helper.c index c67d715c4b..bcd0b7738d 100644 --- a/target/xtensa/helper.c +++ b/target/xtensa/helper.c @@ -217,6 +217,7 @@ static void handle_interrupt(CPUXtensaState *env) } } +/* Called from cpu_handle_interrupt with BQL held */ void xtensa_cpu_do_interrupt(CPUState *cs) { XtensaCPU *cpu = XTENSA_CPU(cs); diff --git a/target/xtensa/op_helper.c b/target/xtensa/op_helper.c index af2723445d..519fbeddd6 100644 --- a/target/xtensa/op_helper.c +++ b/target/xtensa/op_helper.c @@ -26,6 +26,7 @@ */ #include "qemu/osdep.h" +#include "qemu/main-loop.h" #include "cpu.h" #include "exec/helper-proto.h" #include "qemu/host-utils.h" @@ -381,7 +382,11 @@ void HELPER(waiti)(CPUXtensaState *env, uint32_t pc, uint32_t intlevel) env->pc = pc; env->sregs[PS] = (env->sregs[PS] & ~PS_INTLEVEL) | (intlevel << PS_INTLEVEL_SHIFT); + + qemu_mutex_lock_iothread(); check_interrupts(env); + qemu_mutex_unlock_iothread(); + if (env->pending_irq_level) { cpu_loop_exit(CPU(xtensa_env_get_cpu(env))); return; @@ -426,7 +431,9 @@ void HELPER(update_ccompare)(CPUXtensaState *env, uint32_t i) void HELPER(check_interrupts)(CPUXtensaState *env) { + qemu_mutex_lock_iothread(); check_interrupts(env); + qemu_mutex_unlock_iothread(); } void HELPER(itlb_hit_test)(CPUXtensaState *env, uint32_t vaddr) From patchwork Tue Mar 7 15:50:50 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: 95012 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1954531qgd; Tue, 7 Mar 2017 08:11:55 -0800 (PST) X-Received: by 10.31.146.12 with SMTP id u12mr600664vkd.163.1488903115256; Tue, 07 Mar 2017 08:11:55 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 62si201801uay.237.2017.03.07.08.11.54 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:11:55 -0800 (PST) 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; 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]:51446 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHiK-0003ua-LT for patch@linaro.org; Tue, 07 Mar 2017 11:11:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48938) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHVQ-0000ul-7J for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:58:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHVO-0008C0-FI for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:58:32 -0500 Received: from mail-wm0-x231.google.com ([2a00:1450:400c:c09::231]:36669) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHVO-0008BW-97 for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:58:30 -0500 Received: by mail-wm0-x231.google.com with SMTP id n11so93408762wma.1 for ; Tue, 07 Mar 2017 07:58:30 -0800 (PST) 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=W/wNiN9WSZB11jGiT6wPwXMv1eWyZX+lqA1Jrn60mUY=; b=NYERDa+3S3/HUJEsamXKPSP6YjlgRQcwAJ2Ea+qqHYQbx5knZllBfFyHkA3GPdp6gR tR6aBX1DxvGbmbIJR9ofTxljCL4UAmFo5655Tp1h9lhygzWDnvwfoK9Z/SHvNXTSRfX5 ghYHfmkJVlaEPAGmNxiCcLmoGVBdpBgulmeEc= 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=W/wNiN9WSZB11jGiT6wPwXMv1eWyZX+lqA1Jrn60mUY=; b=NmGlfdyyuR1dbfMjyc4lSr2Lj0MOGMrKCicQg0X0r/K9qnCZr9zQiu0mI43WcTOzgl kMJeSAmiHgBmAuh0CMt3Yowmd1pMzm/qEboE1ia/hHwchOSsgEs4HFuDOpm6FrqwQ6oP T1fDQI830/7nIBTakmhkvvmGhVI7v/9vXH5QIQk7iYCAqyBaRPf3T2YejUpL0wJ7Moqd ewl3DqqhEQHAyTcxg7pvPCSD0DPXNRmjKOd9L5wDbNhhrscPlmHzAwwvVVFpLMdb9qFk FrFOtWyQp/NgEy2oLk89a883DbZTGz/RHOLampiOQqVPKPWPZ76XlwrxKERVwPaoA+0D 5hfA== X-Gm-Message-State: AMke39nNP3ZFX3o+SmN2I8kDgFClTHo1+dK/5qkcQUOLvImvtEX0Pp4u+R2pAiBKePPKDxw0 X-Received: by 10.28.62.144 with SMTP id l138mr1495440wma.50.1488902308993; Tue, 07 Mar 2017 07:58:28 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id b17sm1039351wma.33.2017.03.07.07.58.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:58:26 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id EEEA63E302A; Tue, 7 Mar 2017 15:50:54 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:50 +0000 Message-Id: <20170307155054.5833-8-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::231 Subject: [Qemu-devel] [PATCH v3 07/11] translate-all: exit cpu_restore_state early if translating 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: mttcg@listserver.greensocs.com, nikunj@linux.vnet.ibm.com, Peter Crosthwaite , a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The translation code uses cpu_ld*_code which can trigger a tlb_fill which if it fails will erroneously attempts a fault resolution. This never works during translation as the TB being generated hasn't been added yet. The target should have checked retaddr before calling cpu_restore_state but for those that have yet to be fixed we do it here to avoid a recursive tb_lock() under MTTCG's new locking regime. Signed-off-by: Alex Bennée --- v3 - check retaddr instead - reword commit/comments to be clearer --- translate-all.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) -- 2.11.0 Reviewed-by: Richard Henderson diff --git a/translate-all.c b/translate-all.c index d42d003e67..34480aebba 100644 --- a/translate-all.c +++ b/translate-all.c @@ -333,6 +333,19 @@ bool cpu_restore_state(CPUState *cpu, uintptr_t retaddr) TranslationBlock *tb; bool r = false; + /* A retaddr of zero is invalid so we really shouldn't have ended + * up here. The target code has likely forgotten to check retaddr + * != 0 before attempting to restore state. We return early to + * avoid blowing up on a recursive tb_lock(). The target must have + * previously survived a failed cpu_restore_state because + * tb_find_pc(0) would have failed anyway. It still should be + * fixed though. + */ + + if (!retaddr) { + return r; + } + tb_lock(); tb = tb_find_pc(retaddr); if (tb) { From patchwork Tue Mar 7 15:50:51 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: 95014 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1956445qgd; Tue, 7 Mar 2017 08:16:19 -0800 (PST) X-Received: by 10.28.11.205 with SMTP id 196mr1485223wml.31.1488903379543; Tue, 07 Mar 2017 08:16:19 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id j14si3264733wmi.123.2017.03.07.08.16.19 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:16:19 -0800 (PST) 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; 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]:51487 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHmc-0007UZ-I6 for patch@linaro.org; Tue, 07 Mar 2017 11:16:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48937) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHVQ-0000uk-76 for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:58:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHVN-0008BK-3C for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:58:32 -0500 Received: from mail-wr0-x22f.google.com ([2a00:1450:400c:c0c::22f]:33231) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHVM-0008B3-Ty for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:58:29 -0500 Received: by mail-wr0-x22f.google.com with SMTP id u48so4542538wrc.0 for ; Tue, 07 Mar 2017 07:58:28 -0800 (PST) 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=lqIJRrk/MiAeLGXU0QWeBzmVS+Q5JNcluDWHVR4aeBE=; b=cLuxv6tYeqV8m4OP/q0qwFVyJAft9a8dRgmBLLwESAy3VB1dM6oYstH7+18h5HIACY uJxZf0nz7jwzEuofQS6Brkz1dSjjkvos/AClet6usyWV1SH46dYnfp0Ou0mbUbcC1Atc MrpCbOWIp43al+23HtRGwRfrsPgFDFPls5+gQ= 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=lqIJRrk/MiAeLGXU0QWeBzmVS+Q5JNcluDWHVR4aeBE=; b=pc//pFAlcDEKSQq2lxuZb6eckfdeD72yQ15r5vCL895D4NdlHmUnYxIJ04TVmh3S8g RqEgLA7kjjF0bpDdJ7sNseHDrEPCxgLHiQKBZ9NoApdBLsASwPuaXZXEv0V6SHOFgnK+ drWIzII9a48nako7nnmQQnVjnv+WRdSyr/IXde0BSRQ3OAOgOBExqha7qsDg42aay9eM 1S3mcP5A/iZox2PErYjwxGfd0SIQ8fUGg9b8GhEYS9sid1V1I0rJtmRzBI0HzipPtv7Z Ia3Oo7kVUWHqAEYGrjS/UrlW5ulx9rX2FxYM2IeUrmwOjgERB9+hhgrb0UsVH65jKSQ/ Vj8Q== X-Gm-Message-State: AMke39mYkvcuwRg1oL3dBJf5D/sVM1ufqmlDgz69/30WjfKn2+avLAq/rIofGMstLf3JXCVa X-Received: by 10.223.161.213 with SMTP id v21mr862218wrv.144.1488902307670; Tue, 07 Mar 2017 07:58:27 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id 65sm495241wri.53.2017.03.07.07.58.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:58:26 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 0D7F43E3032; Tue, 7 Mar 2017 15:50:55 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:51 +0000 Message-Id: <20170307155054.5833-9-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-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::22f Subject: [Qemu-devel] [PATCH v3 08/11] target/mips: hold BQL for timer interrupts 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: mttcg@listserver.greensocs.com, nikunj@linux.vnet.ibm.com, a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, Yongbok Kim , bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , Aurelien Jarno , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Yongbok Kim Hold BQL when accessing timer which can cause interrupts Signed-off-by: Yongbok Kim Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- target/mips/op_helper.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) -- 2.11.0 diff --git a/target/mips/op_helper.c b/target/mips/op_helper.c index b683fcb025..e5f3ea4042 100644 --- a/target/mips/op_helper.c +++ b/target/mips/op_helper.c @@ -17,6 +17,7 @@ * License along with this library; if not, see . */ #include "qemu/osdep.h" +#include "qemu/main-loop.h" #include "cpu.h" #include "qemu/host-utils.h" #include "exec/helper-proto.h" @@ -827,7 +828,11 @@ target_ulong helper_mftc0_tcschefback(CPUMIPSState *env) target_ulong helper_mfc0_count(CPUMIPSState *env) { - return (int32_t)cpu_mips_get_count(env); + int32_t count; + qemu_mutex_lock_iothread(); + count = (int32_t) cpu_mips_get_count(env); + qemu_mutex_unlock_iothread(); + return count; } target_ulong helper_mftc0_entryhi(CPUMIPSState *env) @@ -1375,7 +1380,9 @@ void helper_mtc0_hwrena(CPUMIPSState *env, target_ulong arg1) void helper_mtc0_count(CPUMIPSState *env, target_ulong arg1) { + qemu_mutex_lock_iothread(); cpu_mips_store_count(env, arg1); + qemu_mutex_unlock_iothread(); } void helper_mtc0_entryhi(CPUMIPSState *env, target_ulong arg1) @@ -1424,7 +1431,9 @@ void helper_mttc0_entryhi(CPUMIPSState *env, target_ulong arg1) void helper_mtc0_compare(CPUMIPSState *env, target_ulong arg1) { + qemu_mutex_lock_iothread(); cpu_mips_store_compare(env, arg1); + qemu_mutex_unlock_iothread(); } void helper_mtc0_status(CPUMIPSState *env, target_ulong arg1) @@ -1475,7 +1484,9 @@ void helper_mtc0_srsctl(CPUMIPSState *env, target_ulong arg1) void helper_mtc0_cause(CPUMIPSState *env, target_ulong arg1) { + qemu_mutex_lock_iothread(); cpu_mips_store_cause(env, arg1); + qemu_mutex_unlock_iothread(); } void helper_mttc0_cause(CPUMIPSState *env, target_ulong arg1) @@ -2296,12 +2307,16 @@ target_ulong helper_rdhwr_synci_step(CPUMIPSState *env) target_ulong helper_rdhwr_cc(CPUMIPSState *env) { + int32_t count; check_hwrena(env, 2, GETPC()); #ifdef CONFIG_USER_ONLY - return env->CP0_Count; + count = env->CP0_Count; #else - return (int32_t)cpu_mips_get_count(env); + qemu_mutex_lock_iothread(); + count = (int32_t)cpu_mips_get_count(env); + qemu_mutex_unlock_iothread(); #endif + return count; } target_ulong helper_rdhwr_ccres(CPUMIPSState *env) From patchwork Tue Mar 7 15:50:52 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: 95010 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1953823qgd; Tue, 7 Mar 2017 08:10:16 -0800 (PST) X-Received: by 10.31.165.82 with SMTP id o79mr605184vke.95.1488903016488; Tue, 07 Mar 2017 08:10:16 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 30si210406uaa.40.2017.03.07.08.10.15 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:10:16 -0800 (PST) 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; 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]:51429 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHgj-0002Rl-RR for patch@linaro.org; Tue, 07 Mar 2017 11:10:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45896) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHO9-0002Z2-MK for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHO6-0005rf-1k for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:01 -0500 Received: from mail-wr0-x22d.google.com ([2a00:1450:400c:c0c::22d]:33428) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHO5-0005rE-Lm for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:57 -0500 Received: by mail-wr0-x22d.google.com with SMTP id u48so4380168wrc.0 for ; Tue, 07 Mar 2017 07:50:57 -0800 (PST) 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=Pz6S8P1BhzMvGos2ECsopbjNueTLc/dpyGrzqdyfrk0=; b=Ao2MwwrvHVRVKH6JUEVung62eWDizefXvEfJKKvSzhczJybArNazQUbmvCl78b+jqC SO9Mu6eljqK5d/vYnj16NjCTftiDjvqOz97QO3fKmswZuz3tD2iAg0ms4hkxGlTJueci IZ/OJZFu9D/opVfnNeUsN1EfXVLh2UpKpjTOg= 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=Pz6S8P1BhzMvGos2ECsopbjNueTLc/dpyGrzqdyfrk0=; b=AMcL24PI9NN4Ol+3H2BoTcnjvQ7+/7fq84YZD4+Rii+z0VtToohUgSIipPtXloftWV j/VrWXK3gFFpy3YJ+aX8VjCy4lEj5UlhEmAuIErHY/cO5shMKlbNFoWMRiFAGmgUUFBH kGEq0jRfYyasc6fm7f5/OeHr0trtqw9PVfTF7s3liFrTgYOvXWoviMhKscLKCAE8zY1g UNUW3Xk3nYFR+tMIMDAnH9gOAOUyKFtA9klRon2YJo7QOSqxPJH9DDUXMASxT1/i61Vf SX/e9rIcwSVrz2Edmp+SXXSp0DLiyrH+96d+P2RvaaXaTHKYSOf6+K/3Ezi1VfJA0sWO 8Diw== X-Gm-Message-State: AMke39mmm9/CJxFEv2fAjtPFIa6ZY1zcpBZKnoE3IZR1xkohJK6o8k3NeYpl7asMGcwsIWaj X-Received: by 10.223.136.253 with SMTP id g58mr1005918wrg.10.1488901856496; Tue, 07 Mar 2017 07:50:56 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id f67sm19485356wmd.0.2017.03.07.07.50.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:53 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 20F583E3033; Tue, 7 Mar 2017 15:50:55 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:52 +0000 Message-Id: <20170307155054.5833-10-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-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 v3 09/11] target-i386: defer VMEXIT to do_interrupt 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: mttcg@listserver.greensocs.com, Eduardo Habkost , nikunj@linux.vnet.ibm.com, a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Paolo Bonzini Paths through the softmmu code during code generation now need to be audited to check for double locking of tb_lock. In particular, VMEXIT can take tb_lock through cpu_vmexit -> cpu_x86_update_cr4 -> tlb_flush. To avoid this, split VMEXIT delivery in two parts, similar to what is done with exceptions. cpu_vmexit only records the VMEXIT exit code and information, and cc->do_interrupt can then deliver it when it is safe to take the lock. Reported-by: Alexander Boettcher Suggested-by: Richard Henderson Tested-by: Alexander Boettcher Signed-off-by: Paolo Bonzini Signed-off-by: Alex Bennée --- target/i386/cpu.h | 2 ++ target/i386/seg_helper.c | 20 +++++++++++--------- target/i386/svm_helper.c | 22 +++++++++++++--------- 3 files changed, 26 insertions(+), 18 deletions(-) -- 2.11.0 Reviewed-by: Richard Henderson diff --git a/target/i386/cpu.h b/target/i386/cpu.h index fb09aee7f8..406cb24301 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -697,6 +697,7 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS]; #define EXCP_SYSCALL 0x100 /* only happens in user only emulation for syscall instruction */ +#define EXCP_VMEXIT 0x100 /* i386-specific interrupt pending bits. */ #define CPU_INTERRUPT_POLL CPU_INTERRUPT_TGT_EXT_1 @@ -1632,6 +1633,7 @@ void cpu_svm_check_intercept_param(CPUX86State *env1, uint32_t type, uint64_t param, uintptr_t retaddr); void cpu_vmexit(CPUX86State *nenv, uint32_t exit_code, uint64_t exit_info_1, uintptr_t retaddr); +void do_vmexit(CPUX86State *env, uint32_t exit_code, uint64_t exit_info_1); /* seg_helper.c */ void do_interrupt_x86_hardirq(CPUX86State *env, int intno, int is_hw); diff --git a/target/i386/seg_helper.c b/target/i386/seg_helper.c index 5c845dc25c..0374031ea2 100644 --- a/target/i386/seg_helper.c +++ b/target/i386/seg_helper.c @@ -1297,15 +1297,17 @@ void x86_cpu_do_interrupt(CPUState *cs) /* successfully delivered */ env->old_exception = -1; #else - /* simulate a real cpu exception. On i386, it can - trigger new exceptions, but we do not handle - double or triple faults yet. */ - do_interrupt_all(cpu, cs->exception_index, - env->exception_is_int, - env->error_code, - env->exception_next_eip, 0); - /* successfully delivered */ - env->old_exception = -1; + if (cs->exception_index >= EXCP_VMEXIT) { + assert(env->old_exception == -1); + do_vmexit(env, cs->exception_index - EXCP_VMEXIT, env->error_code); + } else { + do_interrupt_all(cpu, cs->exception_index, + env->exception_is_int, + env->error_code, + env->exception_next_eip, 0); + /* successfully delivered */ + env->old_exception = -1; + } #endif } diff --git a/target/i386/svm_helper.c b/target/i386/svm_helper.c index 78d8df4af6..59e8b5091c 100644 --- a/target/i386/svm_helper.c +++ b/target/i386/svm_helper.c @@ -580,12 +580,10 @@ void helper_svm_check_io(CPUX86State *env, uint32_t port, uint32_t param, } } -/* Note: currently only 32 bits of exit_code are used */ void cpu_vmexit(CPUX86State *env, uint32_t exit_code, uint64_t exit_info_1, uintptr_t retaddr) { CPUState *cs = CPU(x86_env_get_cpu(env)); - uint32_t int_ctl; if (retaddr) { cpu_restore_state(cs, retaddr); @@ -598,6 +596,19 @@ void cpu_vmexit(CPUX86State *env, uint32_t exit_code, uint64_t exit_info_1, control.exit_info_2)), env->eip); + cs->exception_index = EXCP_VMEXIT + exit_code; + env->error_code = exit_info_1; + + /* remove any pending exception */ + env->old_exception = -1; + cpu_loop_exit(cs); +} + +void do_vmexit(CPUX86State *env, uint32_t exit_code, uint64_t exit_info_1) +{ + CPUState *cs = CPU(x86_env_get_cpu(env)); + uint32_t int_ctl; + if (env->hflags & HF_INHIBIT_IRQ_MASK) { x86_stl_phys(cs, env->vm_vmcb + offsetof(struct vmcb, control.int_state), @@ -759,13 +770,6 @@ void cpu_vmexit(CPUX86State *env, uint32_t exit_code, uint64_t exit_info_1, /* If the host's rIP reloaded by #VMEXIT is outside the limit of the host's code segment or non-canonical (in the case of long mode), a #GP fault is delivered inside the host. */ - - /* remove any pending exception */ - cs->exception_index = -1; - env->error_code = 0; - env->old_exception = -1; - - cpu_loop_exit(cs); } #endif From patchwork Tue Mar 7 15:50:53 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: 95011 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1954334qgd; Tue, 7 Mar 2017 08:11:23 -0800 (PST) X-Received: by 10.31.179.73 with SMTP id c70mr539224vkf.81.1488903083609; Tue, 07 Mar 2017 08:11:23 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id b29si205728uac.162.2017.03.07.08.11.23 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:11:23 -0800 (PST) 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; 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]:51438 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHhp-0003Rs-5I for patch@linaro.org; Tue, 07 Mar 2017 11:11:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45895) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHO9-0002Z1-MA for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHO6-0005sB-VU for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:01 -0500 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]:36336) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHO6-0005rv-OM for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:50:58 -0500 Received: by mail-wm0-x22c.google.com with SMTP id n11so93217227wma.1 for ; Tue, 07 Mar 2017 07:50:58 -0800 (PST) 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=u76TdsZFGC5KIw55mGuldq9tX12uX6Lept7b4raDbmo=; b=SLXTGDBnPXCI/rLAmR1hjG2j0fw91rRffThy5WQIhJbWqZekjqirLrFtiC8fldPuZT 2WZUV1r7xdyHoF/l7KymFpaX5GIgWRh/6l6Nikjj5Ypo/7EyjRCKu7cn6kpcyksDDnZa AgK/XYZyr3xPiSLAqQN4f4y8YEkOrAtcwwcoE= 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=u76TdsZFGC5KIw55mGuldq9tX12uX6Lept7b4raDbmo=; b=Se2HRQRp4Jt94qK8vn8l+ij1u09zznaAev7MCp2BEOQwi3SUztzVKtE3sN60+Hrv7o upaEtRwI+wsvkoyImdu+AkxSn0zUssijF/RyRjUTtAkhXs7yNpxjLVHVSVGq0teNEBOY uJ3K5Cfj7HjIuqiFwmQS6DVq60SsFCH00TN5/SO5ruppA3Dm0li5b6JRQrh/oJfsxWhY xDBSW+e/PoQduN9Sve3GMzXXeHlS32bP2EoZjViiiEXrrKAqEhX0WvfdK5jCB7oplNNc ETPmDhO4plYkLnq/kj36BmdlcTb79BAvdtvbsgg4SQCyTuEBYbyI4WYGNQLro1kXstdA lzgg== X-Gm-Message-State: AMke39nN+ORczvVQrpsjN3Y9TpOzfIepdPtvplvaCK3w8RUrQhwchDBZmmuEt+z/aa3XkjMj X-Received: by 10.28.59.193 with SMTP id i184mr1503898wma.97.1488901857679; Tue, 07 Mar 2017 07:50:57 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id z88sm497381wrb.26.2017.03.07.07.50.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:53 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 327093E3034; Tue, 7 Mar 2017 15:50:55 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:53 +0000 Message-Id: <20170307155054.5833-11-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22c Subject: [Qemu-devel] [PATCH v3 10/11] target/arm/helper: make it clear the EC field is also in hex 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: mttcg@listserver.greensocs.com, nikunj@linux.vnet.ibm.com, a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, "open list:ARM" , bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" ..just like the rest of the displayed ESR register. Otherwise people might scratch their heads if a not obviously hex number is displayed for the EC field. Signed-off-by: Alex Bennée Reviewed-by: Peter Maydell Reviewed-by: KONRAD Frederic --- target/arm/helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.11.0 Reviewed-by: Philippe Mathieu-Daudé diff --git a/target/arm/helper.c b/target/arm/helper.c index 3f4211b572..76b608f0ba 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6857,7 +6857,7 @@ void arm_cpu_do_interrupt(CPUState *cs) new_el); if (qemu_loglevel_mask(CPU_LOG_INT) && !excp_is_internal(cs->exception_index)) { - qemu_log_mask(CPU_LOG_INT, "...with ESR %x/0x%" PRIx32 "\n", + qemu_log_mask(CPU_LOG_INT, "...with ESR 0x%x/0x%" PRIx32 "\n", env->exception.syndrome >> ARM_EL_EC_SHIFT, env->exception.syndrome); } From patchwork Tue Mar 7 15:50:54 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: 95009 Delivered-To: patch@linaro.org Received: by 10.140.82.71 with SMTP id g65csp1953456qgd; Tue, 7 Mar 2017 08:09:30 -0800 (PST) X-Received: by 10.31.194.200 with SMTP id s191mr626329vkf.101.1488902970065; Tue, 07 Mar 2017 08:09:30 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id h141si203658vke.131.2017.03.07.08.09.29 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 07 Mar 2017 08:09:30 -0800 (PST) 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; 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]:51426 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHfz-0001oG-CC for patch@linaro.org; Tue, 07 Mar 2017 11:09:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clHO9-0002Z4-Mc for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clHO8-0005sq-9U for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:01 -0500 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]:36345) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1clHO8-0005sL-1f for qemu-devel@nongnu.org; Tue, 07 Mar 2017 10:51:00 -0500 Received: by mail-wm0-x22c.google.com with SMTP id n11so93217715wma.1 for ; Tue, 07 Mar 2017 07:50:59 -0800 (PST) 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=SVl932jlvVoYk0EnXQJcOuY9TvQCAjemCw0LjMrZcCE=; b=jJBszKByaN72xtc/G1lxpFv3sfGO7QHUMtnJK/r5y1uMk2gb5A+6nkqRxaWow9arCP RYDBoP63V7SPcT9Ywf3pfQvk5yJ/juub0PYRRkiLeQ942jFsn5DFa5iYXzDITMEFj/l1 tUuI87a6z0B5DFn5sQbC7PhdqfI/NK1+THxCw= 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=SVl932jlvVoYk0EnXQJcOuY9TvQCAjemCw0LjMrZcCE=; b=rQeEehNi2cTbki8D+7J3B7AWWgdBR8DGeRoeGdF8I9fvfRicjTgkRtKRdbDpjXcA4R iuAtTLzP+aRrOx5bW8zq6iAYRdEW6o+0Q56dUcacLWYWasCS/q0fojtTOPbM97Pgxo5g +ZhO89sNBMbPFZODGNw+uDUCq5BOpjjRXWHjkCrSXkptkk/NzY4f0fat51rQQQsO+6f5 19DKascn5nEMqncJiWJ/FGrQjFDxI5T5tgay8xH3CkZAfUWCw6fOun1Bk1mDAqaCpJRe IFluRZbjqgSskbTr+bNVn2/+ZXlz2FDKwhD+YjIORxfS+CwE8/0JivIMgmVHMYS1x+CW jzng== X-Gm-Message-State: AMke39lNt9l6z75S59NAdK+/wsdxH5DngMSsUJ56innqEMl/oouSyGw4JG6ZKGg/2G9oyBrb X-Received: by 10.28.191.24 with SMTP id p24mr18852839wmf.118.1488901858925; Tue, 07 Mar 2017 07:50:58 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id b10sm19523007wmi.34.2017.03.07.07.50.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Mar 2017 07:50:53 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 43C3D3E3035; Tue, 7 Mar 2017 15:50:55 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, rth@twiddle.net, pbonzini@redhat.com Date: Tue, 7 Mar 2017 15:50:54 +0000 Message-Id: <20170307155054.5833-12-alex.bennee@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170307155054.5833-1-alex.bennee@linaro.org> References: <20170307155054.5833-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22c Subject: [Qemu-devel] [PATCH v3 11/11] hw/intc/arm_gic: modernise the DPRINTF 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: mttcg@listserver.greensocs.com, nikunj@linux.vnet.ibm.com, a.rigo@virtualopensystems.com, qemu-devel@nongnu.org, cota@braap.org, "open list:ARM cores" , bobby.prani@gmail.com, =?utf-8?q?Alex_Benn=C3=A9e?= , fred.konrad@greensocs.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" While I was debugging the icount issues I realised a bunch of the messages look quite similar. I've fixed this by including __func__ in the debug print. At the same time I move the a modern if (GATE) style printf which ensures the compiler can check for format string errors even if the code gets optimised away in the non-DEBUG_GIC case. Signed-off-by: Alex Bennée Reviewed-by: Peter Maydell --- hw/intc/arm_gic.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) -- 2.11.0 Reviewed-by: Philippe Mathieu-Daudé diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c index 8e5a9d8a3e..b305d9032a 100644 --- a/hw/intc/arm_gic.c +++ b/hw/intc/arm_gic.c @@ -26,15 +26,20 @@ #include "qemu/log.h" #include "trace.h" -//#define DEBUG_GIC +/* #define DEBUG_GIC */ #ifdef DEBUG_GIC -#define DPRINTF(fmt, ...) \ -do { fprintf(stderr, "arm_gic: " fmt , ## __VA_ARGS__); } while (0) +#define DEBUG_GIC_GATE 1 #else -#define DPRINTF(fmt, ...) do {} while(0) +#define DEBUG_GIC_GATE 0 #endif +#define DPRINTF(fmt, ...) do { \ + if (DEBUG_GIC_GATE) { \ + fprintf(stderr, "%s: " fmt, __func__, ## __VA_ARGS__); \ + } \ + } while (0) + static const uint8_t gic_id_11mpcore[] = { 0x00, 0x00, 0x00, 0x00, 0x90, 0x13, 0x04, 0x00, 0x0d, 0xf0, 0x05, 0xb1 };