From nobody Sat May 18 10:48:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615932534; cv=none; d=zohomail.com; s=zohoarc; b=bjh7N8rpP8XBgtW2cZlnV2gWNenfeD7qhMVzyLacVQ4L6xwnGQ9NwrRKIfsJu/W+a1iHPRvMa4aSsahP98TsNYMjdKSiVIzYaCkJ/Ms/+B42ZH1W3t+syzyTM1ecbeCm/JiKS385gGbMUvMJn3XJ6GCuaHeRhQ1wXKY831CWBks= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615932534; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7jz3fcXEB4BDzmBRZPOge0wYOIF8sZ5RLLGp4QiFaR4=; b=kMThh83oWftAf8a53UrFw1TkZiPfEsMHVMLDENZPR41u7FSJhfvmnFpXp6kulLFIohdsB5+CRNqYWHN68mSWO1BG3RUUtuVKxnOOGYiqzwhysVDwN+tJneEpnautvfvrHZy5yinGxcTBsG928DIz/RuqxJQVUWxuycBhCV57B+Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615932534586431.1425362567943; Tue, 16 Mar 2021 15:08:54 -0700 (PDT) Received: from localhost ([::1]:42346 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lMHrx-0006fh-Jv for importer@patchew.org; Tue, 16 Mar 2021 18:08:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40736) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lMHqn-0005e9-HJ for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:41 -0400 Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]:42634) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lMHql-0002aq-T2 for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:41 -0400 Received: by mail-qt1-x835.google.com with SMTP id l13so18083qtu.9 for ; Tue, 16 Mar 2021 15:07:39 -0700 (PDT) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id n77sm16546918qkn.128.2021.03.16.15.07.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 15:07: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 :mime-version:content-transfer-encoding; bh=7jz3fcXEB4BDzmBRZPOge0wYOIF8sZ5RLLGp4QiFaR4=; b=tRmeLBiVEv3NJjOFCG3IMGrvEyv/a9oib4yh+zcsn3i4t1+jeuu8ve0W2+18D1hNeP 7uSVcQ3DyxE2FfbU8Pp4I4F9rRGpzIM3wcNuoRv75Wru4Y/DhYXXsknVmpEG8iHEFcwb NlMdG57guGCG9w9R+s0mtPUHbVcVpGQ7MyHHghiEYw9skWlmwpUkNwP6U+Dky6TincyU S75jR+miCjdeYdcI9nF4XDzhRDaeUhZI05kMB/wHjEZDDDkx4DN4lLdyIVeDT+vCHKfI CxNrRP0w7DkCuCbhYUfTC622M/6n+EI8nbX3gsCVDjjcIz+GHAesAhLuJmCKnDhdQh68 c/tg== 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=7jz3fcXEB4BDzmBRZPOge0wYOIF8sZ5RLLGp4QiFaR4=; b=leUMckdgUYDmgY2OeYJXzUEE6vj3Trxex7/CsXQ2RQOzM1T/D8xQSPggGTK3TvJvd4 eEY6/CrCekNDosBLfzMPbE528TJNdoEzDGUdjlyWtG1/SOqqWu9IyHYzGfZRdHPbsW8k +WV7NL9yHDQq4MmjwFqhubdNgam24Unx1D4I6qqs9BToCFZorSo5gBQttBmQB0OYbYuY deTJfCpSQ4wM9e3mU/ETRJRJJAL5gRBj1UxMc7fPLQ1kjR6criB7fgVRNThNLlgNOdqo Hu2KxpB/+33Pid+7J/2EDLne4e4csaWQynjG8/G7f7tjkE/jCZzpyOvVumXDRyEN39e3 EK+g== X-Gm-Message-State: AOAM533VCf85RaprdZkaH3KNZU9sTNz6n5jRmPfWDBQkUjd/cX1ajIzi PJh+8Cw+W/EMtP5douPsFGOeGUNZdEW3bXEC X-Google-Smtp-Source: ABdhPJwS8vfOdVlRvv76ABxxBpPM9un6k0LRr2DY/dNhigA9+pdGz1SKqVrDVJcIigRvdznXM/gvsw== X-Received: by 2002:ac8:519a:: with SMTP id c26mr984625qtn.342.1615932458940; Tue, 16 Mar 2021 15:07:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 1/5] tcg: Decode the operand to INDEX_op_mb in dumps Date: Tue, 16 Mar 2021 16:07:31 -0600 Message-Id: <20210316220735.2048137-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210316220735.2048137-1-richard.henderson@linaro.org> References: <20210316220735.2048137-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::835; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x835.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- tcg/tcg.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/tcg/tcg.c b/tcg/tcg.c index 2991112829..23a94d771c 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2415,6 +2415,85 @@ static void tcg_dump_ops(TCGContext *s, bool have_pr= efs) arg_label(op->args[k])->id); i++, k++; break; + case INDEX_op_mb: + { + TCGBar membar =3D op->args[k]; + const char *b_op, *m_op; + + switch (membar & TCG_BAR_SC) { + case 0: + b_op =3D "none"; + break; + case TCG_BAR_LDAQ: + b_op =3D "acq"; + break; + case TCG_BAR_STRL: + b_op =3D "rel"; + break; + case TCG_BAR_SC: + b_op =3D "seq"; + break; + default: + g_assert_not_reached(); + } + + switch (membar & TCG_MO_ALL) { + case 0: + m_op =3D "none"; + break; + case TCG_MO_LD_LD: + m_op =3D "rr"; + break; + case TCG_MO_LD_ST: + m_op =3D "rw"; + break; + case TCG_MO_ST_LD: + m_op =3D "wr"; + break; + case TCG_MO_ST_ST: + m_op =3D "ww"; + break; + case TCG_MO_LD_LD | TCG_MO_LD_ST: + m_op =3D "rr+rw"; + break; + case TCG_MO_LD_LD | TCG_MO_ST_LD: + m_op =3D "rr+wr"; + break; + case TCG_MO_LD_LD | TCG_MO_ST_ST: + m_op =3D "rr+ww"; + break; + case TCG_MO_LD_ST | TCG_MO_ST_LD: + m_op =3D "rw+wr"; + break; + case TCG_MO_LD_ST | TCG_MO_ST_ST: + m_op =3D "rw+ww"; + break; + case TCG_MO_ST_LD | TCG_MO_ST_ST: + m_op =3D "wr+ww"; + break; + case TCG_MO_LD_LD | TCG_MO_LD_ST | TCG_MO_ST_LD: + m_op =3D "rr+rw+wr"; + break; + case TCG_MO_LD_LD | TCG_MO_LD_ST | TCG_MO_ST_ST: + m_op =3D "rr+rw+ww"; + break; + case TCG_MO_LD_LD | TCG_MO_ST_LD | TCG_MO_ST_ST: + m_op =3D "rr+wr+ww"; + break; + case TCG_MO_LD_ST | TCG_MO_ST_LD | TCG_MO_ST_ST: + m_op =3D "rw+wr+ww"; + break; + case TCG_MO_ALL: + m_op =3D "all"; + break; + default: + g_assert_not_reached(); + } + + col +=3D qemu_log("%s%s:%s", (k ? "," : ""), b_op, m_o= p); + i++, k++; + } + break; default: break; } --=20 2.25.1 From nobody Sat May 18 10:48:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615933363; cv=none; d=zohomail.com; s=zohoarc; b=l1pLQTpz3F2JcqTbY+tOSnTtGqlD0n7LP5qKzTFLPiLyy2jxDyHn73UH60n0fmy/vaC0V0qIWB3qixltYy24ESQHtbSWGXBoNo51ye5IhtIkdIEw6p1hwlBlga9Tfe9hqcXL5kfcZtU25O0uOlU1dmarMs+iL3qlMZzMUxlqHi0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615933363; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=yPAAjWDyig+xlHGQhaJtz36xF4S8yrbGq7nm4d8cwIk=; b=dgHp/KXGp0W1Q6U475A5HOCw5GLQdT6+s+1wARrnyj5gbFVYG8SS4mkH9xVaCeNNc+IYpanDeens6bJ4/Ajp9GJkpN0srJuE2B7qwjzZiASxGD3KZ/PskJKP7Fgc0yPgbY+cZR525IWGfHZ9enxyD7Op9DHp73UDb6CQ8PTiuZ0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161593336388913.271702856248794; Tue, 16 Mar 2021 15:22:43 -0700 (PDT) Received: from localhost ([::1]:53978 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lMI5K-0006nv-QC for importer@patchew.org; Tue, 16 Mar 2021 18:22:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40762) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lMHqo-0005fH-Oc for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:42 -0400 Received: from mail-qk1-x72d.google.com ([2607:f8b0:4864:20::72d]:43813) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lMHqn-0002bX-2I for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:42 -0400 Received: by mail-qk1-x72d.google.com with SMTP id b130so36940561qkc.10 for ; Tue, 16 Mar 2021 15:07:40 -0700 (PDT) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id n77sm16546918qkn.128.2021.03.16.15.07.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 15:07: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=yPAAjWDyig+xlHGQhaJtz36xF4S8yrbGq7nm4d8cwIk=; b=vLhsWJLZ01GGVfU9I8YpizQfL5b4XIGriaSa4gwymIC2L9bF2MGD98Lm2xIHgnyJ5E odjszg3d0iu82c+QChgPZR8cisrABuwQxmJbEd3Fp6wkPJyjwGau1FDNzOIR9vruSwLn 4XbqwRyhxhhM/XFBeB+H3yWMblK70pMRIdRzXgziKithSf7c3oaFGOFbLFFkyU46Fyek YQJVLTtTGrM83USQAtv44gV+NgQVTkUqYO/D0X1Es3Am5TBioVtOiUWDKKFEj42PstA1 5z3iWL90xmX1js6h/nR59QNoqe4TS/6QE7PaEUnygT/3ozoR+YHWOD0ANMZpL0NdZLgi VS/g== 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=yPAAjWDyig+xlHGQhaJtz36xF4S8yrbGq7nm4d8cwIk=; b=F5Jvczk0Gy7Jqk6/3CFjnp40s2gmTwt+2k8W6wzEdawgHWvzQpiNpTTlUoqBqH4zcK /7StlstSRTepODCVQgFmDxnbQ8lDvsjeNhXY2rS810l0+hn69fZt2pBmoGV2qIYQkgD4 M12UE3sTlu7cFVEdQv7N4pRbNw6qvauwqSiwnlx004TlSsX4Sgvhw41tT1+oe6R5U9Sa JFho3pFsu9X7u4tY4+Fn0fF6D9mM58Ye2sf+TUmWaQvXplzpbBHJn+4SUo7dWFDXVaAq jW2e5moPjb89RJLe4Bi/9WaiO57q7ZwBC7C9ll2rIqF7Id47kEW9ejQzr8ww7GL6NhnR OcAQ== X-Gm-Message-State: AOAM532Uge5KLmZJRERtN1TqUwC2G1qnyC4sU6X/d/8ofAKVl96VoVij 6UMb5I629on/haSAlx46Y/89+hBfNWXEfj8q X-Google-Smtp-Source: ABdhPJytHDAaofizcwi63+kjWp+nbOYEuA5Y+p7QvOAlsdNLawQRzA9dOIb83RbsK5ZHbmAmAPIlgw== X-Received: by 2002:a05:620a:2111:: with SMTP id l17mr1264012qkl.399.1615932460071; Tue, 16 Mar 2021 15:07:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 2/5] tcg: Do not elide memory barriers for CF_PARALLEL Date: Tue, 16 Mar 2021 16:07:32 -0600 Message-Id: <20210316220735.2048137-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210316220735.2048137-1-richard.henderson@linaro.org> References: <20210316220735.2048137-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::72d; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" The virtio devices require proper memory ordering between the vcpus and the iothreads. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 70475773f4..76dc7d8dc5 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -97,9 +97,13 @@ void tcg_gen_op6(TCGOpcode opc, TCGArg a1, TCGArg a2, TC= GArg a3, =20 void tcg_gen_mb(TCGBar mb_type) { - if (tcg_ctx->tb_cflags & CF_PARALLEL) { - tcg_gen_op1(INDEX_op_mb, mb_type); - } + /* + * It is tempting to elide the barrier in a single-threaded context + * (i.e. !(tb_cflags & CF_PARALLEL)), however, even with a single cpu + * we have i/o threads running in parallel, and lack of memory order + * can result in e.g. virtio queue entries being read incorrectly. + */ + tcg_gen_op1(INDEX_op_mb, mb_type); } =20 /* 32 bit ops */ --=20 2.25.1 From nobody Sat May 18 10:48:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615933447; cv=none; d=zohomail.com; s=zohoarc; b=D2psc2LuRhBEqJqcui2Tm9Z1pB/46b4V0hlRYJK7YJW9aSZ9mg/HM56loffNtDS6+o8fbmQifImAuX0WWw3knRkKRZB7qob/HBvfsTYEpVABcl3rN3Ave3qkQxRbpYcmw42fEcQvLkZmuuzg3/674gLzLE94vyu+067vuDs/RrY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615933447; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iXb9BKT3Yzc//BOI+yvFmKmzMLx3jVzBVYijM2bLOWU=; b=ayfz/NH9eg/bihwuvbWe2Jqeq+eqv07332bcaK5fIMXS5BG3SV4pO8ZgELZcB3VVp6n0huJ7w2LNEMCr6AxWf7NG4HdsMm0cEBqgLjScIKVhSh9/EzwqHtMIMgw5QCZwbxY2MLxb7QUVHyLLqLjJK70mYvTqcO3mtFEbZF+gssA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615933447300638.7710013880259; Tue, 16 Mar 2021 15:24:07 -0700 (PDT) Received: from localhost ([::1]:56306 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lMI6f-0007mf-TF for importer@patchew.org; Tue, 16 Mar 2021 18:24:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40772) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lMHqp-0005gP-LG for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:43 -0400 Received: from mail-qt1-x834.google.com ([2607:f8b0:4864:20::834]:39841) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lMHqo-0002cK-3t for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:43 -0400 Received: by mail-qt1-x834.google.com with SMTP id g24so27587qts.6 for ; Tue, 16 Mar 2021 15:07:41 -0700 (PDT) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id n77sm16546918qkn.128.2021.03.16.15.07.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 15:07:40 -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=iXb9BKT3Yzc//BOI+yvFmKmzMLx3jVzBVYijM2bLOWU=; b=FzWY50mQOZBIIayR3Rhco0DlF8EumFmVTCw+PA2z0rMMMa0Q6LmVpbQl7eWOs9PRLc vtDy4bGaEnds0NCkE+iKa07rzfFJGH5bPtC1de2F+X2M8IGDI2lKvEhHAnF9rDSZLYR/ zgT1kVnAGzmEghYdJP03NUolyzSLnhs3H7YIgbvomv9oxCSxDDaCzKmrr2Axuulp22zr ThtASCVjBWwYxO65dLsvGLgrTtU72IrUW1meCsylCyz1Du9Ji1BR6StupqernjwDNDCa xUXb0IG9/1RguzcZTAb5yW0F7P/2M4Op4U4DqDhrFtSmS2UkFLB7le1hSWi6mzgoLtOl LssA== 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=iXb9BKT3Yzc//BOI+yvFmKmzMLx3jVzBVYijM2bLOWU=; b=iiSQJFZ17b4O1bJV7kka7lTg6wlWiakcnmXpg687xM23SdSTwpuSz3u8tApJLd9ocv 27kGCIaRe/ULOLrmwjEzjsd3SyIMBFLOlMJOjRrsdjKNzF97n8P5Mv9WWP/aMjHV5UPo UaIhbwwg2S6Q6xRohIbhn5thUP8dx7vp/flNOL7w8E6IKI9KTBoExFYgX6bJSGFrunEQ A7k81I+2OyGX19U6p5mQZPqszJYsOWs8c/1NyyJMk6MzfmwGiIA3zxMSwD9E6tVN4/nJ 9Vg7FqeZurvnATluHd89J1RiygNFV/gWy2vGKZa3VCF37Vawkm8kAiezpRMR7yXSAzkg zdCA== X-Gm-Message-State: AOAM532e/4b8CeSDSgZLfWOzxksX38EreFb8byr0xlrNLR4bWuqD3q07 fUjCjYF1Y+SlnG4DxeTQhG/2pJTHNz0UQUQ3 X-Google-Smtp-Source: ABdhPJxbvuKPs4EH6FY2No9EqqnOiBNJgwrphHNH3+6ze1HDhYn6tmKLvJmInQzCI2x8Of37dQtSEw== X-Received: by 2002:ac8:5951:: with SMTP id 17mr1037298qtz.62.1615932461253; Tue, 16 Mar 2021 15:07:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 3/5] tcg: Elide memory barriers implied by the host memory model Date: Tue, 16 Mar 2021 16:07:33 -0600 Message-Id: <20210316220735.2048137-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210316220735.2048137-1-richard.henderson@linaro.org> References: <20210316220735.2048137-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::834; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x834.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Reduce the set of required barriers to those needed by the host right from the beginning. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 76dc7d8dc5..c8501508c2 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -102,8 +102,13 @@ void tcg_gen_mb(TCGBar mb_type) * (i.e. !(tb_cflags & CF_PARALLEL)), however, even with a single cpu * we have i/o threads running in parallel, and lack of memory order * can result in e.g. virtio queue entries being read incorrectly. + * + * That said, we can elide anything which the host provides for free. */ - tcg_gen_op1(INDEX_op_mb, mb_type); + mb_type &=3D ~TCG_TARGET_DEFAULT_MO; + if (mb_type & TCG_MO_ALL) { + tcg_gen_op1(INDEX_op_mb, mb_type); + } } =20 /* 32 bit ops */ --=20 2.25.1 From nobody Sat May 18 10:48:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615933567; cv=none; d=zohomail.com; s=zohoarc; b=FRcobWGIrhr2cfHlX88MLrNhBVXYS8a5W0e3I5c6bNBHM8bIqcr/cBoiWXA1lqWgQWOP8mVaEZNTHbdRzshaj0ivEUa11DTA4+vehhdAqBp7ckRHVxf6gBJ1UAuhibWVAIto38kkG41q9XZTAvkShgYdhQMXWnQTcFOye+gDufc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615933567; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4FGwbzRDCgp0mZG0M4BZazahJWTIBClTRPajuLNeTjw=; b=MjJC1Iqmj1mo6be06de7v+6ttO+zXT4vu9kFe3LQ+NAJqNfyjb+siudMn2ZDHQ8VSJMW5uQ829Lul6/IKe+P7vv2Y9X1SUO8/UxbSior07j1O16EgjOvUtb0iWlOFE1x+wtvrWLioWOwKpjz23tmzYnPw9gTFTzY4LQaJ5+ZsmE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615933567563696.2072206991589; Tue, 16 Mar 2021 15:26:07 -0700 (PDT) Received: from localhost ([::1]:33778 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lMI8c-0001ft-Hl for importer@patchew.org; Tue, 16 Mar 2021 18:26:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40786) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lMHqr-0005iI-18 for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:45 -0400 Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]:45912) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lMHqp-0002ci-5N for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:44 -0400 Received: by mail-qv1-xf2f.google.com with SMTP id t16so437270qvr.12 for ; Tue, 16 Mar 2021 15:07:42 -0700 (PDT) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id n77sm16546918qkn.128.2021.03.16.15.07.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 15:07:41 -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=4FGwbzRDCgp0mZG0M4BZazahJWTIBClTRPajuLNeTjw=; b=ei+lY0aNHb0IWHow2heU0NaDcfUjf9QNC63RaaAvxMnd6gygFxtINgSZv/G3yuckJF mCf/roSAAUhBaNjzP2MGUTceqR55E0O5mM8G3bWD6/FCg2cHNR/ZGfAoE6EsfmS62Qea lVUJQmZig1/1F6eTS5LsV81cCFl+Pjr/2XFhGZCt7HUKWciN07LMQRdbpFwU0oQEFfeO oqIxKNBYpi1I514spr/gGn950Q/bEh4TDXavWtMbD32eMjhhAO9Zyq7fRHBrFR3pivqo bs8zWEOSDO62y1q3u3KlYj/9DSTmgcGqqCpq8tWzYbScxG1QtpcPh+3yzHmCfEfG+TSU OCYQ== 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=4FGwbzRDCgp0mZG0M4BZazahJWTIBClTRPajuLNeTjw=; b=j/KUrYTPAWKJGpHsDv4tDYBSBBNBhkqYRMOF9w8wg2893F8CKSsDIDRY99Y0mIpnuH UUVN+0YR7gqWhhhDtBmI1c/CG4Ex3S8/9FwciniHKhhWmxSTKEPDmHZM/HpM6RUDaR6T ob/c1SjnaPXLGaizpdvo5jamizJoXItNceZTNdNDp5VF2BdigOoVE8A9j+PjGt9PdfC9 4UnbvciyWwIkgm313Yn0qC5y8eGwmhWRTq3fPQbdzx3jjVmT/mkteRH25X6tRlhUpePi +oklJMcPn3INzUhjRcx4VAsfQIw++tvI3Ud1f2LusSJO9/obHvd0gL6JA+Zoc4TOXkm+ ps+Q== X-Gm-Message-State: AOAM530VMIkEObSkYQYoTX869NKPOlYbKr7i0ULJO2qRrk8LtnS9K0hu 6JMfklievCQ2tzs0revyirb9YHngmO+D1VAg X-Google-Smtp-Source: ABdhPJw38uSCxnIOaXro6fzPEtjOfKifFsPPieCE/Uq5U2bXwozTze3d0acMLCJlzrsXhZKrxUG9OQ== X-Received: by 2002:a05:6214:2623:: with SMTP id gv3mr1692246qvb.35.1615932462237; Tue, 16 Mar 2021 15:07:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 4/5] tcg: Create tcg_req_mo Date: Tue, 16 Mar 2021 16:07:34 -0600 Message-Id: <20210316220735.2048137-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210316220735.2048137-1-richard.henderson@linaro.org> References: <20210316220735.2048137-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::f2f; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Split out the logic to emit a host memory barrier in response to a guest memory operation. Do not provide a true default for TCG_GUEST_DEFAULT_MO because the defined() check will still be useful for determining if a guest has been updated for MTTCG. Signed-off-by: Richard Henderson --- include/tcg/tcg.h | 20 ++++++++++++++++++++ accel/tcg/tcg-all.c | 6 +----- tcg/tcg-op.c | 8 +------- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 0f0695e90d..395b3b6964 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -1245,6 +1245,26 @@ static inline unsigned get_mmuidx(TCGMemOpIdx oi) return oi & 15; } =20 +/** + * tcg_req_mo: + * @type: TCGBar + * + * Filter @type to the barrier that is required for the guest + * memory ordering vs the host memory ordering. A non-zero + * result indicates that some barrier is required. + * + * If TCG_GUEST_DEFAULT_MO is not defined, assume that the + * guest requires strict alignment. + * + * This is a macro so that it's constant even without optimization. + */ +#ifdef TCG_GUEST_DEFAULT_MO +# define tcg_req_mo(type) \ + ((type) & TCG_GUEST_DEFAULT_MO & ~TCG_TARGET_DEFAULT_MO) +#else +# define tcg_req_mo(type) ((type) & ~TCG_TARGET_DEFAULT_MO) +#endif + /** * tcg_qemu_tb_exec: * @env: pointer to CPUArchState for the CPU diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c index e378c2db73..6ae51e3476 100644 --- a/accel/tcg/tcg-all.c +++ b/accel/tcg/tcg-all.c @@ -69,11 +69,7 @@ DECLARE_INSTANCE_CHECKER(TCGState, TCG_STATE, =20 static bool check_tcg_memory_orders_compatible(void) { -#if defined(TCG_GUEST_DEFAULT_MO) && defined(TCG_TARGET_DEFAULT_MO) - return (TCG_GUEST_DEFAULT_MO & ~TCG_TARGET_DEFAULT_MO) =3D=3D 0; -#else - return false; -#endif + return tcg_req_mo(TCG_MO_ALL) =3D=3D 0; } =20 static bool default_mttcg_enabled(void) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index c8501508c2..12fc8a1b17 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -2796,13 +2796,7 @@ static void gen_ldst_i64(TCGOpcode opc, TCGv_i64 val= , TCGv addr, =20 static void tcg_gen_req_mo(TCGBar type) { -#ifdef TCG_GUEST_DEFAULT_MO - type &=3D TCG_GUEST_DEFAULT_MO; -#endif - type &=3D ~TCG_TARGET_DEFAULT_MO; - if (type) { - tcg_gen_mb(type | TCG_BAR_SC); - } + tcg_gen_mb(tcg_req_mo(type) | TCG_BAR_SC); } =20 static inline TCGv plugin_prep_mem_callbacks(TCGv vaddr) --=20 2.25.1 From nobody Sat May 18 10:48:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1615932569; cv=none; d=zohomail.com; s=zohoarc; b=Jm6/jZ4Ko4kx7u6bXs0a3iCC1sTgSdPoK5w+asXkLcj46zwpK81MF6sLIfb4F+4jjnX6e9Ms1mihXY2IbCx1OAiJCspFK+xS5JoxIf7A0+Xb/UNKmi9TIL+o5HByZNogCO+6MASd77gdx0QVojRNwRzqcngEy4IeBUZFSJIel/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615932569; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MNghjrViS6cE79RQ44HsI/7snhIGTmTSZYfbhec9QPE=; b=ZLbp9ogCgrhnXtn8+UDvzu/Ay+fbt/C9xozSITB0K2DTkySGh/io9DhFuDxkce99RZ+1dK7/s10c/22x5Zfo82I4GUNjoCZKQ38s6Ctt8qYjAzsnY0RS3ud28vsk5YsiRCHKU672sOE3q5SSi1sC2b+lSmlKSHvqGslU45EdUcQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1615932569070979.0753309303627; Tue, 16 Mar 2021 15:09:29 -0700 (PDT) Received: from localhost ([::1]:44846 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lMHsU-0007hl-UO for importer@patchew.org; Tue, 16 Mar 2021 18:09:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40796) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lMHqs-0005l1-ID for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:46 -0400 Received: from mail-qk1-x72a.google.com ([2607:f8b0:4864:20::72a]:42394) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lMHqq-0002dC-FV for qemu-devel@nongnu.org; Tue, 16 Mar 2021 18:07:46 -0400 Received: by mail-qk1-x72a.google.com with SMTP id n24so6793217qkh.9 for ; Tue, 16 Mar 2021 15:07:43 -0700 (PDT) Received: from localhost.localdomain (fixed-187-189-51-144.totalplay.net. [187.189.51.144]) by smtp.gmail.com with ESMTPSA id n77sm16546918qkn.128.2021.03.16.15.07.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 15:07:43 -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=MNghjrViS6cE79RQ44HsI/7snhIGTmTSZYfbhec9QPE=; b=Z64y44Hm0sBP41ACkPBnZCKdlSXkts6GgXwmOvkrXMqg2Y9JIUdTcJ40sZ7LVwREeI AaBMObq9qx8jbx0/j5OThwrxQMv077BPiWFuOjnbqIYipRfXz/x0dGyEwRJLF7jYWYuH 8MX30EPz5whaMZRt+AmqZJkuqLUshnoT6o2h24FZM5ej5b5/zLJYFVh7N193U73qe+bv Z6QgqzV6ByuCsTYwBDdR0+65nkOTkdBLoeiAn1Q/utj3D/HX1SqCeorl/E4yHKe9QK13 +60GUUSezmgwgOHuiLTnHJ/y07HhpUCRiFE7jfLf6Yb7d0YmdVSDApdPQGlOMfbwRIkB lrdw== 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=MNghjrViS6cE79RQ44HsI/7snhIGTmTSZYfbhec9QPE=; b=magti66Fceggbl/7VJtAm4Kf3JjllTGJTJVRZgoictKu+4EprCVnllM0JTaufoT6xQ r501el5C3JRGuhSocKgQNVpM/UrDYGqn0R2vUvgcyifyIWtj3wlqSwByRdnH+Wjv+NiP SQ1BfTwZqWHA7GcoZCvaref61pumLW/J6RFtZ+9KbePX7gohMJrHya+sNhveUgoj+3T3 Z5Tb1veCoBfsNIPB/AT1fcKe/myElUCiCsTOvnQVTYnAS2nso5X+Oqitm6TXc34MZRWi Wnlflcoc8lYJrrzXK+i/Eo/jtP1fCYHlSzqCFE8jRtJLGBXNdKYvWdDD3PDq3QJ8ECGC GIjw== X-Gm-Message-State: AOAM530Ak73eazk9CKURUGGTnwXShvoxIEAYgnE/jvXQyWIrqi9kYDs8 RDdRDmlFWvPnwkjloqqoh1kFDkgHfpgACDE+ X-Google-Smtp-Source: ABdhPJx3bbqnD/o48AlSAmoBEdZ2w9/Zhn5JHgI+e2u8LLKENecs/1ENLUeEhI7ra1CVtYNXCZP5Uw== X-Received: by 2002:a37:5b84:: with SMTP id p126mr1398555qkb.142.1615932463341; Tue, 16 Mar 2021 15:07:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 5/5] tcg: Add host memory barriers to cpu_ldst.h interfaces Date: Tue, 16 Mar 2021 16:07:35 -0600 Message-Id: <20210316220735.2048137-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210316220735.2048137-1-richard.henderson@linaro.org> References: <20210316220735.2048137-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::72a; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Bring the majority of helpers into line with the rest of tcg in respecting guest memory ordering. Signed-off-by: Richard Henderson --- include/exec/cpu_ldst.h | 7 +++++++ accel/tcg/cputlb.c | 2 ++ accel/tcg/user-exec.c | 17 +++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h index ce6ce82618..f0ab79fe3c 100644 --- a/include/exec/cpu_ldst.h +++ b/include/exec/cpu_ldst.h @@ -169,6 +169,13 @@ void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr ptr, void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr ptr, uint64_t val, uintptr_t ra); =20 +#define cpu_req_mo(type) \ + do { \ + if (tcg_req_mo(type)) { \ + smp_mb(); \ + } \ + } while (0) + #if defined(CONFIG_USER_ONLY) =20 extern __thread uintptr_t helper_retaddr; diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index 8a7b779270..a3503eaa71 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -2100,6 +2100,7 @@ static inline uint64_t cpu_load_helper(CPUArchState *= env, abi_ptr addr, meminfo =3D trace_mem_get_info(op, mmu_idx, false); trace_guest_mem_before_exec(env_cpu(env), addr, meminfo); =20 + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); op &=3D ~MO_SIGN; oi =3D make_memop_idx(op, mmu_idx); ret =3D full_load(env, addr, oi, retaddr); @@ -2542,6 +2543,7 @@ cpu_store_helper(CPUArchState *env, target_ulong addr= , uint64_t val, meminfo =3D trace_mem_get_info(op, mmu_idx, true); trace_guest_mem_before_exec(env_cpu(env), addr, meminfo); =20 + cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); oi =3D make_memop_idx(op, mmu_idx); store_helper(env, addr, val, oi, retaddr, op); =20 diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 0d8cc27b21..34f6dfcef4 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -843,6 +843,7 @@ uint32_t cpu_ldub_data(CPUArchState *env, abi_ptr ptr) uint16_t meminfo =3D trace_mem_get_info(MO_UB, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D ldub_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -854,6 +855,7 @@ int cpu_ldsb_data(CPUArchState *env, abi_ptr ptr) uint16_t meminfo =3D trace_mem_get_info(MO_SB, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D ldsb_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -865,6 +867,7 @@ uint32_t cpu_lduw_be_data(CPUArchState *env, abi_ptr pt= r) uint16_t meminfo =3D trace_mem_get_info(MO_BEUW, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D lduw_be_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -876,6 +879,7 @@ int cpu_ldsw_be_data(CPUArchState *env, abi_ptr ptr) uint16_t meminfo =3D trace_mem_get_info(MO_BESW, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D ldsw_be_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -887,6 +891,7 @@ uint32_t cpu_ldl_be_data(CPUArchState *env, abi_ptr ptr) uint16_t meminfo =3D trace_mem_get_info(MO_BEUL, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D ldl_be_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -898,6 +903,7 @@ uint64_t cpu_ldq_be_data(CPUArchState *env, abi_ptr ptr) uint16_t meminfo =3D trace_mem_get_info(MO_BEQ, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D ldq_be_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -909,6 +915,7 @@ uint32_t cpu_lduw_le_data(CPUArchState *env, abi_ptr pt= r) uint16_t meminfo =3D trace_mem_get_info(MO_LEUW, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D lduw_le_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -920,6 +927,7 @@ int cpu_ldsw_le_data(CPUArchState *env, abi_ptr ptr) uint16_t meminfo =3D trace_mem_get_info(MO_LESW, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D ldsw_le_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -931,6 +939,7 @@ uint32_t cpu_ldl_le_data(CPUArchState *env, abi_ptr ptr) uint16_t meminfo =3D trace_mem_get_info(MO_LEUL, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D ldl_le_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -942,6 +951,7 @@ uint64_t cpu_ldq_le_data(CPUArchState *env, abi_ptr ptr) uint16_t meminfo =3D trace_mem_get_info(MO_LEQ, MMU_USER_IDX, false); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); ret =3D ldq_le_p(g2h(env_cpu(env), ptr)); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); return ret; @@ -1052,6 +1062,7 @@ void cpu_stb_data(CPUArchState *env, abi_ptr ptr, uin= t32_t val) uint16_t meminfo =3D trace_mem_get_info(MO_UB, MMU_USER_IDX, true); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); stb_p(g2h(env_cpu(env), ptr), val); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); } @@ -1061,6 +1072,7 @@ void cpu_stw_be_data(CPUArchState *env, abi_ptr ptr, = uint32_t val) uint16_t meminfo =3D trace_mem_get_info(MO_BEUW, MMU_USER_IDX, true); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); stw_be_p(g2h(env_cpu(env), ptr), val); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); } @@ -1070,6 +1082,7 @@ void cpu_stl_be_data(CPUArchState *env, abi_ptr ptr, = uint32_t val) uint16_t meminfo =3D trace_mem_get_info(MO_BEUL, MMU_USER_IDX, true); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); stl_be_p(g2h(env_cpu(env), ptr), val); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); } @@ -1079,6 +1092,7 @@ void cpu_stq_be_data(CPUArchState *env, abi_ptr ptr, = uint64_t val) uint16_t meminfo =3D trace_mem_get_info(MO_BEQ, MMU_USER_IDX, true); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); stq_be_p(g2h(env_cpu(env), ptr), val); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); } @@ -1088,6 +1102,7 @@ void cpu_stw_le_data(CPUArchState *env, abi_ptr ptr, = uint32_t val) uint16_t meminfo =3D trace_mem_get_info(MO_LEUW, MMU_USER_IDX, true); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); stw_le_p(g2h(env_cpu(env), ptr), val); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); } @@ -1097,6 +1112,7 @@ void cpu_stl_le_data(CPUArchState *env, abi_ptr ptr, = uint32_t val) uint16_t meminfo =3D trace_mem_get_info(MO_LEUL, MMU_USER_IDX, true); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); stl_le_p(g2h(env_cpu(env), ptr), val); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); } @@ -1106,6 +1122,7 @@ void cpu_stq_le_data(CPUArchState *env, abi_ptr ptr, = uint64_t val) uint16_t meminfo =3D trace_mem_get_info(MO_LEQ, MMU_USER_IDX, true); =20 trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo); + cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); stq_le_p(g2h(env_cpu(env), ptr), val); qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo); } --=20 2.25.1