From nobody Fri May 17 23:28:54 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=1710554361; cv=none; d=zohomail.com; s=zohoarc; b=cwqV6ZQSuQv0NgIHTptGFsmpxqUf2KYQYjopzDU9WrDHPvyBceCE6D1/GpRp+gcbkAHez7fC9cNpIjdNm3kEeaqTKmB77d9sPiRCRnWrSd6zCFXPtUZ4H4t9V4M7do5mNPNhVipjYeag81tF8nkV5y5RD1nf7vAG9TteTldwZ/o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554361; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=La+2iVCXFm9nixFDLUn8X+dnCJSJftKhHVIhvf5XOuw=; b=HiV7PCuKdB0gMfrzunf439DfTmNunBgGbfibb4nEC2bawcdkWHMWva88vt1/YYXVEoIdVptOgXhwp7N0klZAi+PEOZdEoiUoPJKgBqMLcHS0DasMqLyau1/kpWneTAKhZA5wjlocEdqxPDSvdkkq9lhc3iTJmqY9i7PAOJnoDsg= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 171055436144871.01301023447013; Fri, 15 Mar 2024 18:59:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIq-0002l4-Ho; Fri, 15 Mar 2024 21:57:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIk-0002kP-Au for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:34 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIe-0000hc-M2 for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:31 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-29bc1c64a98so1946826a91.1 for ; Fri, 15 Mar 2024 18:57:28 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554247; x=1711159047; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=La+2iVCXFm9nixFDLUn8X+dnCJSJftKhHVIhvf5XOuw=; b=UbByIborFU+07bEtkql2HaZgGO+2WrNsRwLjU/D/K7pHmbpPFREQahp+EZGsWNK/ST r0+cZliaDrPnjfiPqCFFbI16h92UqNx/wo/p6rffM9Bq0nFVJYrX/OzX281aDim4NCW2 +vnRvPcs2stOmp3hyxl3ggWioKcYFfWJU5piBm5w/59NCL8Fp8u785aVtJ2SraCDEjVJ kEhgjMyonW95wjKeW3xFX+ibsRCS2zh37k58oPCUaeByxFB6ydHgEgYKqudzR7VuwenW XTJA11DwWcARhcaIZkwZmNgy0RFx0XfhzcXmaj2qh6WAAOZUGTboUbd2ck1UPFd/X8wr I2gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554247; x=1711159047; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=La+2iVCXFm9nixFDLUn8X+dnCJSJftKhHVIhvf5XOuw=; b=rqX9M/BEYBoAPKMfm3k3tv+OwpOUd8MkdYweDSmKdUx7OSOMG2bURtjTKOqTjCcutO aF7k4Bnni3RsYaEXoMuilzDSNRq3fDbA8ryNfVLcoekwuFAuI6Dj8AkjinNGnv+xUUFK de2tHR3b3cBxzef+1LYiZMVbqrpjBqws6dpM5sgLNyIjefxzX0snIRmbrUy6wKRzhrVM lCBiqsvYOh+L/OcvEPlrUs5rCnfSi6htBSH+QD5nWAxwM8I64TfWA/B5ZhHgfhqMvCyj 4l50r0MyIAyuJPfzggdRmvHH+wyXyFNsb5e6+97/0N3zwQmFItOA+FyqPZpOI3HSmqZ6 EaTQ== X-Gm-Message-State: AOJu0YzBThk6B1X0T8JjoHJGJZijLaPyJgOx/FYzMso5ulpEWhs5ngGy PB4Aw5CQBf3x8edFXNlrKJsFKSE47uiR9gBVoy1mX151FIgrCCe/aX9Anuyw6h0JSzTF/0kp/e+ 0 X-Google-Smtp-Source: AGHT+IFJ4NIMfWexRm6hqRfsRZN1NlYMurPXTK64skz6sFBkiKq6RYLR1ZwGvlUBlawdgW0gDr7oUA== X-Received: by 2002:a17:902:e5c3:b0:1dd:66d4:4d46 with SMTP id u3-20020a170902e5c300b001dd66d44d46mr4935155plf.66.1710554247145; Fri, 15 Mar 2024 18:57:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 01/22] tcg: Add TCGContext.emit_before_op Date: Fri, 15 Mar 2024 15:56:59 -1000 Message-Id: <20240316015720.3661236-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554362949100001 Content-Type: text/plain; charset="utf-8" Allow operations to be emitted via normal expanders into the middle of the opcode stream. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/tcg/tcg.h | 1 + tcg/tcg.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 451f3fec41..e9d05f40b0 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -552,6 +552,7 @@ struct TCGContext { =20 QTAILQ_HEAD(, TCGOp) ops, free_ops; QSIMPLEQ_HEAD(, TCGLabel) labels; + TCGOp *emit_before_op; =20 /* Tells which temporary holds a given register. It does not take into account fixed registers */ diff --git a/tcg/tcg.c b/tcg/tcg.c index d6670237fb..0c0bb9d169 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1521,6 +1521,7 @@ void tcg_func_start(TCGContext *s) =20 QTAILQ_INIT(&s->ops); QTAILQ_INIT(&s->free_ops); + s->emit_before_op =3D NULL; QSIMPLEQ_INIT(&s->labels); =20 tcg_debug_assert(s->addr_type =3D=3D TCG_TYPE_I32 || @@ -2332,7 +2333,11 @@ static void tcg_gen_callN(TCGHelperInfo *info, TCGTe= mp *ret, TCGTemp **args) op->args[pi++] =3D (uintptr_t)info; tcg_debug_assert(pi =3D=3D total_args); =20 - QTAILQ_INSERT_TAIL(&tcg_ctx->ops, op, link); + if (tcg_ctx->emit_before_op) { + QTAILQ_INSERT_BEFORE(tcg_ctx->emit_before_op, op, link); + } else { + QTAILQ_INSERT_TAIL(&tcg_ctx->ops, op, link); + } =20 tcg_debug_assert(n_extend < ARRAY_SIZE(extend_free)); for (i =3D 0; i < n_extend; ++i) { @@ -3215,7 +3220,12 @@ static TCGOp *tcg_op_alloc(TCGOpcode opc, unsigned n= args) TCGOp *tcg_emit_op(TCGOpcode opc, unsigned nargs) { TCGOp *op =3D tcg_op_alloc(opc, nargs); - QTAILQ_INSERT_TAIL(&tcg_ctx->ops, op, link); + + if (tcg_ctx->emit_before_op) { + QTAILQ_INSERT_BEFORE(tcg_ctx->emit_before_op, op, link); + } else { + QTAILQ_INSERT_TAIL(&tcg_ctx->ops, op, link); + } return op; } =20 --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554387; cv=none; d=zohomail.com; s=zohoarc; b=iZsQYhMROypBU5D+zMvoiy+3eRWaMSlNHW0R1Zcm7/8NJH9BzFVGb8rR7mCYOFED6cuaI+BnbB1GknJL1QpKxAKsTwoNfj4HujfTwLMg4g5v4snHzEXK1AtU7h3GWnxO+KCmkQO4g6OzmvSYbuN124XyPndhfDpX42g7iWnBoj4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554387; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W87lWQOU4ax1d83X8hX13Y9WQtWIQCcPTltB0qvJM70=; b=lJ5t7QWNuNaK4SH6MvwG4pentstIehriO74bj6Rfjs3E7E++P41TCRsU9EMJVXWEJuCrJnIyyUVHRUMw7+aAYjBvMkxjyFLLyXEdTxOhoZV2l5iF7DUNQcj+VYslq3Ze9jHtSe2teKqtD3OEY4ne2WlQz/1Yse7K7mauHn/zXOI= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 171055438705397.16990182741074; Fri, 15 Mar 2024 18:59:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIs-0002lu-MJ; Fri, 15 Mar 2024 21:57:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIo-0002km-2s for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:38 -0400 Received: from mail-il1-x12d.google.com ([2607:f8b0:4864:20::12d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIh-0000hl-KD for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:34 -0400 Received: by mail-il1-x12d.google.com with SMTP id e9e14a558f8ab-3669ab1bd67so4254515ab.1 for ; Fri, 15 Mar 2024 18:57:30 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554249; x=1711159049; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=W87lWQOU4ax1d83X8hX13Y9WQtWIQCcPTltB0qvJM70=; b=AIQo43I3t2V1LJ17A2hRa72kF+jhXnvvp7xatxpgh7PyuB9Vc2yq2iep0DDU0zmZB4 koazckSCakmRYS6HtrfSK+YsUJu4qQwm5ZiwdXzFXi0mpCHHmzLIbt0mBTFXSAuWX8Q4 3c/Lop9n2AGdeaVczyAnkO2EJsjDI6Jebs6WTN9fhFwMmYlgbRU+puDExp3fWwdTVFoI YbznQ4Mbw2bfyAgsHRogYq1wJhD2cw6npphVcET1ino7K7e6Um3O20VEZdWoBF0VBryy pQXOKEcnEfhupZfPVxUa1XnzdGDr0w6Ss63b7dofXOiYx6+8u2uN5VXnoWMlLDE2d9F/ o+6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554249; x=1711159049; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=W87lWQOU4ax1d83X8hX13Y9WQtWIQCcPTltB0qvJM70=; b=tR4KUy3TFbdiQWA4O2+ZMAU4q4bW8p8EHGrjuEGBWOsP2VV+v2zAKSXvHTxpOXwwqT 4YlMp0xi8CAaqvAJ0HWdWvLdV2n2f157zFt501sHuH2QfKuoqJMic4DIRiN1UlXARq9u rp/6Jpw1j7MkNcQMs88Dv1bMyk8jHZtIdozXXc1i6PmTSEBqFQhoLI39S6NzH7yZvpa1 iGew9dfqp+NFkesTibMY12BRgdtI3TV8vbSLlkmFAiP8ovtg5khBD1lfmisrhity83U2 YvjHrQLCZ9tzGLLfxZhz3c2QnkNePxtgCovHkwS6v+mquoOSEVD3a/gIQebByWLbF2Iw QrUw== X-Gm-Message-State: AOJu0Yzn+GYHSX9g5JG0aqCz6yAqWHp9y3o64oBE5h8JNyq3R3/FV3z6 5VNEEt0XGSZPXGF4dq8fa7Vcsx8kBK054JMVw7m2o4hJaKwC76ghZku9X4V4XjyRe+dufcdQP7O j X-Google-Smtp-Source: AGHT+IGQ+zl4g+pwjueYhA3Kt3+ytJ8OW40zUB38LW+lU425Oz8io9vVOk/br2NI8KhGPu7seE5uLg== X-Received: by 2002:a92:d952:0:b0:365:d2be:3de6 with SMTP id l18-20020a92d952000000b00365d2be3de6mr5038549ilq.2.1710554249490; Fri, 15 Mar 2024 18:57:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 02/22] tcg: Make tcg/helper-info.h self-contained Date: Fri, 15 Mar 2024 15:57:00 -1000 Message-Id: <20240316015720.3661236-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::12d; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x12d.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554389002100003 Content-Type: text/plain; charset="utf-8" Move MAX_CALL_IARGS from tcg.h and include for the define of TCG_TARGET_REG_BITS. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- include/tcg/helper-info.h | 3 +++ include/tcg/tcg.h | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/tcg/helper-info.h b/include/tcg/helper-info.h index 7c27d6164a..909fe73afa 100644 --- a/include/tcg/helper-info.h +++ b/include/tcg/helper-info.h @@ -12,6 +12,9 @@ #ifdef CONFIG_TCG_INTERPRETER #include #endif +#include "tcg-target-reg-bits.h" + +#define MAX_CALL_IARGS 7 =20 /* * Describe the calling convention of a given argument type. diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index e9d05f40b0..a6e7df146a 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -39,8 +39,6 @@ /* XXX: make safe guess about sizes */ #define MAX_OP_PER_INSTR 266 =20 -#define MAX_CALL_IARGS 7 - #define CPU_TEMP_BUF_NLONGS 128 #define TCG_STATIC_FRAME_SIZE (CPU_TEMP_BUF_NLONGS * sizeof(long)) =20 --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554450; cv=none; d=zohomail.com; s=zohoarc; b=F2gkUaM8wdb56TEEZAOo4/Frm+YdWjS/6xCwE58MFt0E0WWjmtWwr2PgV+fDy9u9E+ItuWC5ytaeHFHSwcwtzYyaamPZz5SPXKKf2aQbQAsvvJz5Z2WhTFd0yDLP4GKdMaNU+O9WspK8XyO2RxE/FvA6ApZfq3bWCbUE3Wq/L/0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554450; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dO/ulOB4H8uJBhCl1h5X1j8smU5S71009KZPyttGPV8=; b=O7gZBD/pOH004NaQRBOGkQUSHlSJn6m9NqEYeCnrbtRvzcihwTcSf4/92nwy0VtjUKE+zJMzLyPzYJQS2cm0JTKsRdKTygL/AZeeP4MTm0MOLgyb0bJbEFaJQaTqtV+QdzSiSCmlDKjIchsWCJAiZNga+jlQcTf7eSm32V/prKE= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554450500994.4974545788112; Fri, 15 Mar 2024 19:00:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIs-0002lv-Qt; Fri, 15 Mar 2024 21:57:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIq-0002l6-La for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:40 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIj-0000ht-Ef for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:35 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-29e0229d6b5so711239a91.3 for ; Fri, 15 Mar 2024 18:57:32 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554251; x=1711159051; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dO/ulOB4H8uJBhCl1h5X1j8smU5S71009KZPyttGPV8=; b=sYlrfHAwPX+dQigzS46ZO84vvi54+j2px48b3iUHUt76jzC4dAlgu0OyQiMHApxe3g XM4UayPBHdAMkrHkFb9efPIJft6jWAghgT2n91cfqj3v0AhmgUN/4/tHhk3fx5UvYDvU Uy1roKF7TtnYZDVYBl4N4KxIASDG++FJxEmlMmMPWlHiQWmqJ7g1AasuJJucRVTYb378 6PUFb79FyPg+Epu+P2CDei1PaggwCTxnpc7kYB62UyKDKvJKnqi+ChM6JH4Q+tEAeTZH S0h2yaUGIfYLNy4iuW8ryaIb4+yU3oExlIazo4QaWiB9nC5r5FDR6z3PjIkqLs6/WSaN v8HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554251; x=1711159051; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dO/ulOB4H8uJBhCl1h5X1j8smU5S71009KZPyttGPV8=; b=WpShWlCTG3LKwUz6uXOkd9LS9cO0TSRBT6KL6xaIZcBnVwRZkTotBDBkwnj1JTUYXt c8CWVXvzJ0Rh8nwrkGIAzVF5hjuGviQZ4c1Ov2zPS8PLUQKlQq2h9S7O4fE1qG1dbrqv Fy7Y0CdiUO/nkj1/k61L852yMiU4/5LdQMgSg6mwxdVxvOUqexsMt2YynS+LLrsOJHVV rupbAHjxSAJ0kerlaM3bojOF6Em/XmO+nnoLLd3q59bCOHBsSmt2ZBna2q9IkRax+tc8 B7BSCygeP3TwfW0WRye08l2GDWgURCqbsK5gWfT/o6yr0jlWZybZuBjQk1lBQ3KR43z+ 1NMQ== X-Gm-Message-State: AOJu0YxyDH/XX6yh1MSRuFZp8VXqh2ZYeji2NpggGPU6eIV69vrgVBZE o4w50T9IsAvb0YT3c02EYLj56y9/8P9LInc2aAV0Vtz8JNc8A8yTpkqG/16Ce9aFmE8qDsSfp3B 9 X-Google-Smtp-Source: AGHT+IGBDrdJC9kk4z4yR0J0OcWEVDTK7+QxgPd65ycopAfZbDjQpjnyR7nt9t8al/wOBzqMxR09Aw== X-Received: by 2002:a17:902:f7d3:b0:1dd:b505:d556 with SMTP id h19-20020a170902f7d300b001ddb505d556mr5377907plw.21.1710554251553; Fri, 15 Mar 2024 18:57:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 03/22] tcg: Pass function pointer to tcg_gen_call* Date: Fri, 15 Mar 2024 15:57:01 -1000 Message-Id: <20240316015720.3661236-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554451205100001 Content-Type: text/plain; charset="utf-8" For normal helpers, read the function pointer from the structure earlier. For plugins, this will allow the function pointer to come from elsewhere. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- include/tcg/tcg.h | 21 +++++++++------- include/exec/helper-gen.h.inc | 24 ++++++++++++------- tcg/tcg.c | 45 +++++++++++++++++++---------------- 3 files changed, 52 insertions(+), 38 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index a6e7df146a..95a7f4d010 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -847,19 +847,22 @@ typedef struct TCGTargetOpDef { =20 bool tcg_op_supported(TCGOpcode op); =20 -void tcg_gen_call0(TCGHelperInfo *, TCGTemp *ret); -void tcg_gen_call1(TCGHelperInfo *, TCGTemp *ret, TCGTemp *); -void tcg_gen_call2(TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *); -void tcg_gen_call3(TCGHelperInfo *, TCGTemp *ret, TCGTemp *, +void tcg_gen_call0(void *func, TCGHelperInfo *, TCGTemp *ret); +void tcg_gen_call1(void *func, TCGHelperInfo *, TCGTemp *ret, TCGTemp *); +void tcg_gen_call2(void *func, TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *); -void tcg_gen_call4(TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *, - TCGTemp *, TCGTemp *); -void tcg_gen_call5(TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *, +void tcg_gen_call3(void *func, TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *, TCGTemp *); -void tcg_gen_call6(TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *, +void tcg_gen_call4(void *func, TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *); -void tcg_gen_call7(TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *, +void tcg_gen_call5(void *func, TCGHelperInfo *, TCGTemp *ret, TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *); +void tcg_gen_call6(void *func, TCGHelperInfo *, TCGTemp *ret, + TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *, + TCGTemp *, TCGTemp *); +void tcg_gen_call7(void *func, TCGHelperInfo *, TCGTemp *ret, + TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *, + TCGTemp *, TCGTemp *, TCGTemp *); =20 TCGOp *tcg_emit_op(TCGOpcode opc, unsigned nargs); void tcg_op_remove(TCGContext *s, TCGOp *op); diff --git a/include/exec/helper-gen.h.inc b/include/exec/helper-gen.h.inc index c009641517..f7eb59b6c1 100644 --- a/include/exec/helper-gen.h.inc +++ b/include/exec/helper-gen.h.inc @@ -14,7 +14,8 @@ extern TCGHelperInfo glue(helper_info_, name); \ static inline void glue(gen_helper_, name)(dh_retvar_decl0(ret)) \ { \ - tcg_gen_call0(&glue(helper_info_, name), dh_retvar(ret)); \ + tcg_gen_call0(glue(helper_info_,name).func, \ + &glue(helper_info_,name), dh_retvar(ret)); \ } =20 #define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \ @@ -22,7 +23,8 @@ extern TCGHelperInfo glue(helper_info_, name); = \ static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ dh_arg_decl(t1, 1)) \ { \ - tcg_gen_call1(&glue(helper_info_, name), dh_retvar(ret), \ + tcg_gen_call1(glue(helper_info_,name).func, \ + &glue(helper_info_,name), dh_retvar(ret), \ dh_arg(t1, 1)); \ } =20 @@ -31,7 +33,8 @@ extern TCGHelperInfo glue(helper_info_, name); = \ static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ dh_arg_decl(t1, 1), dh_arg_decl(t2, 2)) \ { \ - tcg_gen_call2(&glue(helper_info_, name), dh_retvar(ret), \ + tcg_gen_call2(glue(helper_info_,name).func, \ + &glue(helper_info_,name), dh_retvar(ret), \ dh_arg(t1, 1), dh_arg(t2, 2)); \ } =20 @@ -40,7 +43,8 @@ extern TCGHelperInfo glue(helper_info_, name); = \ static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \ dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3)) \ { \ - tcg_gen_call3(&glue(helper_info_, name), dh_retvar(ret), \ + tcg_gen_call3(glue(helper_info_,name).func, \ + &glue(helper_info_,name), dh_retvar(ret), \ dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3)); \ } =20 @@ -50,7 +54,8 @@ static inline void glue(gen_helper_, name)(dh_retvar_decl= (ret) \ dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), \ dh_arg_decl(t3, 3), dh_arg_decl(t4, 4)) \ { \ - tcg_gen_call4(&glue(helper_info_, name), dh_retvar(ret), \ + tcg_gen_call4(glue(helper_info_,name).func, \ + &glue(helper_info_,name), dh_retvar(ret), \ dh_arg(t1, 1), dh_arg(t2, 2), \ dh_arg(t3, 3), dh_arg(t4, 4)); \ } @@ -61,7 +66,8 @@ static inline void glue(gen_helper_, name)(dh_retvar_decl= (ret) \ dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \ dh_arg_decl(t4, 4), dh_arg_decl(t5, 5)) \ { \ - tcg_gen_call5(&glue(helper_info_, name), dh_retvar(ret), \ + tcg_gen_call5(glue(helper_info_,name).func, \ + &glue(helper_info_,name), dh_retvar(ret), \ dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \ dh_arg(t4, 4), dh_arg(t5, 5)); \ } @@ -72,7 +78,8 @@ static inline void glue(gen_helper_, name)(dh_retvar_decl= (ret) \ dh_arg_decl(t1, 1), dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \ dh_arg_decl(t4, 4), dh_arg_decl(t5, 5), dh_arg_decl(t6, 6)) \ { \ - tcg_gen_call6(&glue(helper_info_, name), dh_retvar(ret), \ + tcg_gen_call6(glue(helper_info_,name).func, \ + &glue(helper_info_,name), dh_retvar(ret), \ dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \ dh_arg(t4, 4), dh_arg(t5, 5), dh_arg(t6, 6)); \ } @@ -84,7 +91,8 @@ static inline void glue(gen_helper_, name)(dh_retvar_decl= (ret) \ dh_arg_decl(t4, 4), dh_arg_decl(t5, 5), dh_arg_decl(t6, 6), \ dh_arg_decl(t7, 7)) \ { \ - tcg_gen_call7(&glue(helper_info_, name), dh_retvar(ret), \ + tcg_gen_call7(glue(helper_info_,name).func, \ + &glue(helper_info_,name), dh_retvar(ret), \ dh_arg(t1, 1), dh_arg(t2, 2), dh_arg(t3, 3), \ dh_arg(t4, 4), dh_arg(t5, 5), dh_arg(t6, 6), \ dh_arg(t7, 7)); \ diff --git a/tcg/tcg.c b/tcg/tcg.c index 0c0bb9d169..0bf218314b 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2251,7 +2251,8 @@ bool tcg_op_supported(TCGOpcode op) =20 static TCGOp *tcg_op_alloc(TCGOpcode opc, unsigned nargs); =20 -static void tcg_gen_callN(TCGHelperInfo *info, TCGTemp *ret, TCGTemp **arg= s) +static void tcg_gen_callN(void *func, TCGHelperInfo *info, + TCGTemp *ret, TCGTemp **args) { TCGv_i64 extend_free[MAX_CALL_IARGS]; int n_extend =3D 0; @@ -2329,7 +2330,7 @@ static void tcg_gen_callN(TCGHelperInfo *info, TCGTem= p *ret, TCGTemp **args) g_assert_not_reached(); } } - op->args[pi++] =3D (uintptr_t)info->func; + op->args[pi++] =3D (uintptr_t)func; op->args[pi++] =3D (uintptr_t)info; tcg_debug_assert(pi =3D=3D total_args); =20 @@ -2345,56 +2346,58 @@ static void tcg_gen_callN(TCGHelperInfo *info, TCGT= emp *ret, TCGTemp **args) } } =20 -void tcg_gen_call0(TCGHelperInfo *info, TCGTemp *ret) +void tcg_gen_call0(void *func, TCGHelperInfo *info, TCGTemp *ret) { - tcg_gen_callN(info, ret, NULL); + tcg_gen_callN(func, info, ret, NULL); } =20 -void tcg_gen_call1(TCGHelperInfo *info, TCGTemp *ret, TCGTemp *t1) +void tcg_gen_call1(void *func, TCGHelperInfo *info, TCGTemp *ret, TCGTemp = *t1) { - tcg_gen_callN(info, ret, &t1); + tcg_gen_callN(func, info, ret, &t1); } =20 -void tcg_gen_call2(TCGHelperInfo *info, TCGTemp *ret, TCGTemp *t1, TCGTemp= *t2) +void tcg_gen_call2(void *func, TCGHelperInfo *info, TCGTemp *ret, + TCGTemp *t1, TCGTemp *t2) { TCGTemp *args[2] =3D { t1, t2 }; - tcg_gen_callN(info, ret, args); + tcg_gen_callN(func, info, ret, args); } =20 -void tcg_gen_call3(TCGHelperInfo *info, TCGTemp *ret, TCGTemp *t1, - TCGTemp *t2, TCGTemp *t3) +void tcg_gen_call3(void *func, TCGHelperInfo *info, TCGTemp *ret, + TCGTemp *t1, TCGTemp *t2, TCGTemp *t3) { TCGTemp *args[3] =3D { t1, t2, t3 }; - tcg_gen_callN(info, ret, args); + tcg_gen_callN(func, info, ret, args); } =20 -void tcg_gen_call4(TCGHelperInfo *info, TCGTemp *ret, TCGTemp *t1, - TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) +void tcg_gen_call4(void *func, TCGHelperInfo *info, TCGTemp *ret, + TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) { TCGTemp *args[4] =3D { t1, t2, t3, t4 }; - tcg_gen_callN(info, ret, args); + tcg_gen_callN(func, info, ret, args); } =20 -void tcg_gen_call5(TCGHelperInfo *info, TCGTemp *ret, TCGTemp *t1, +void tcg_gen_call5(void *func, TCGHelperInfo *info, TCGTemp *ret, TCGTemp = *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4, TCGTemp *t5) { TCGTemp *args[5] =3D { t1, t2, t3, t4, t5 }; - tcg_gen_callN(info, ret, args); + tcg_gen_callN(func, info, ret, args); } =20 -void tcg_gen_call6(TCGHelperInfo *info, TCGTemp *ret, TCGTemp *t1, TCGTemp= *t2, - TCGTemp *t3, TCGTemp *t4, TCGTemp *t5, TCGTemp *t6) +void tcg_gen_call6(void *func, TCGHelperInfo *info, TCGTemp *ret, + TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, + TCGTemp *t4, TCGTemp *t5, TCGTemp *t6) { TCGTemp *args[6] =3D { t1, t2, t3, t4, t5, t6 }; - tcg_gen_callN(info, ret, args); + tcg_gen_callN(func, info, ret, args); } =20 -void tcg_gen_call7(TCGHelperInfo *info, TCGTemp *ret, TCGTemp *t1, +void tcg_gen_call7(void *func, TCGHelperInfo *info, TCGTemp *ret, TCGTemp = *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4, TCGTemp *t5, TCGTemp *t6, TCGTemp *t7) { TCGTemp *args[7] =3D { t1, t2, t3, t4, t5, t6, t7 }; - tcg_gen_callN(info, ret, args); + tcg_gen_callN(func, info, ret, args); } =20 static void tcg_reg_alloc_start(TCGContext *s) --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554443; cv=none; d=zohomail.com; s=zohoarc; b=UKzEhDeXnGrI6f+I0S0mi5GvYetDa7/9kVS/h9ymQPnWhPlxKUIwLNORyzeAYp8/lE24gPXxVsLHAlg4IFcnIN1VXOy1mQoPHBXk4f1Tk3yhVSw3rKrSg+Aj4hwYwifdDF1/kvO22Ys4JVn1etP1W0VZlBUDoz8qyMYrfJnNWIY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554443; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4I6ltn5r5eQP6OaKsPETbZYIZfsGGG0xeYi8oAp9EDY=; b=OjwSNVbKWIPy8kyhQ4+Lsdo4H7TjzYjjw0FuwOvlPhNH/NXM769sJSdjMZiRL6oHwni71Cc3f+vAIBw2SOKVPEpl+gNOUDMIq70A0v2dkG5KNxV8LOCXo15o/DcRbtSXaf2E0aix6bh0YvH9VdMpBPUSnXJTYsFRCPGczxPA/XQ= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 171055444345556.58671934132133; Fri, 15 Mar 2024 19:00:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIs-0002le-5E; Fri, 15 Mar 2024 21:57:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIq-0002l7-Lx for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:40 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIn-0000i4-Ar for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:39 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1dddbeac9f9so19775515ad.3 for ; Fri, 15 Mar 2024 18:57:34 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554253; x=1711159053; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4I6ltn5r5eQP6OaKsPETbZYIZfsGGG0xeYi8oAp9EDY=; b=cJxFzdIa2pPVmh8TQNEOzOfqED3H+ib7rEIu+9ZI6MqwNWlHMEMSTHUisES5UgEf31 N0dXcuiU+REIyuGYd1gGnHHGi8Eh5U44HyxnpGeOss+AChhX5dBkTJu8dQelcNy1oQIr WPVC8/Vlls/An2gGldkhpk+stxrAdS5q1iU+T8ZVAnybcqG2lVcLA19FiF4PB15A0tE+ +3OHb8YfBq68Kw/Ix0zxU+n6Ln0ZGTd0FPG/Y1f/FSjt4CwNB0PuYtBwioCg91x4DIRc 3cPRhovlBpV6i9cBQAgUBXXHqgMaFs+wcxEMY8Q7WwwI9yXrQyVMq+dsGkXs6kBgoUqV yRHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554253; x=1711159053; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4I6ltn5r5eQP6OaKsPETbZYIZfsGGG0xeYi8oAp9EDY=; b=tjyYgCDIpgYOuhjrwHfVEaByTHilPBqanaR1D1uwr9l6YR8k3c4coo8MBSQA1Cg8mG vLSvZsUMStV8FhkgOCYKPsbnA+PRz4DX5JQeXAcVZnMsQDce7fr3IsvIA3C0UZ1X9Itm nw5AJsuwPZ3LKUy0id6cOdHO72vkWvdCh1OfnM9ccxea/zglgTrZnVvpHQtguhnWKfYu SJyghY4F0AzOCVDIbQvvBQi/zj16tiR1t/H8fh3aS1tKhtdDlsSMruYClDu0KSxigWdU UyTo8KcUE4e+gDPyIdBrMn6t/TsWHjO7hwWD+bapw4cZdtFptjKsa3qkzem5HywzTIdl FKuA== X-Gm-Message-State: AOJu0YxGjT3fW/vazXxXo9WJmmrZrHPALi4VDah/IeEqCy4Idl4aYulF GQ6Btktf00J6zt3VMi9dRdOXA2VbWMZIy6S2Tqv7uFUlJhcrue+do6Cs+gxTfcg0lBC5mopxAwv M X-Google-Smtp-Source: AGHT+IF0yfLjsf901IShrEUkr9telGYK6smk2Nn8XkKD5U6jzgN+sBkxVfJBWykDgu+BxBqurPx/BA== X-Received: by 2002:a17:903:11c3:b0:1dd:7d6a:d6c8 with SMTP id q3-20020a17090311c300b001dd7d6ad6c8mr7726619plh.14.1710554253537; Fri, 15 Mar 2024 18:57:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 04/22] plugins: Zero new qemu_plugin_dyn_cb entries Date: Fri, 15 Mar 2024 15:57:02 -1000 Message-Id: <20240316015720.3661236-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554445170100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- plugins/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/core.c b/plugins/core.c index 11ca20e626..4487cb7c48 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -307,7 +307,7 @@ static struct qemu_plugin_dyn_cb *plugin_get_dyn_cb(GAr= ray **arr) GArray *cbs =3D *arr; =20 if (!cbs) { - cbs =3D g_array_sized_new(false, false, + cbs =3D g_array_sized_new(false, true, sizeof(struct qemu_plugin_dyn_cb), 1); *arr =3D cbs; } --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554432; cv=none; d=zohomail.com; s=zohoarc; b=OCFnhm9Xt/kiLFSRD2VDg0ecJBEjiQPucmNeVaY3CPYCanHKKnqqqW9yrqOTofkp0AhRBnxVIY8jVnBqLW8KbpoPjMVUaSfpt2ozzLFloOqG66jPtk1PghH5+Ykpvt1YwP/5q4Qy+C4jq8qA+9jg3FW1rq2TtjZ0glgycwdXXr8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554432; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LBMQW30MaUGTTlpQEoDn37zgtsJ/Rvfav+1wxxZ/gso=; b=W6YPWLq4xcRnre7fmdrMic7KmeJTLAKvdm2r6fXtqznLdKpTi4NLeYYfqASaIRo8H652oFA11y5OHsF2SBiETds68/21WJN/S5GGQxn/ZqSwQQY1pPTyQJBSED3GUNchOKq6PJ2AUVCyWers0CNcq9smB7zr/yTK/wXJXOghw9M= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554432098778.2890628516598; Fri, 15 Mar 2024 19:00:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIt-0002mP-9d; Fri, 15 Mar 2024 21:57:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIr-0002lc-Tf for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:42 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIo-0000iM-BF for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:41 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-1dddb160a37so19824145ad.2 for ; Fri, 15 Mar 2024 18:57:37 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554256; x=1711159056; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LBMQW30MaUGTTlpQEoDn37zgtsJ/Rvfav+1wxxZ/gso=; b=Q70sISkVt5KfkVxbDCtCbSN2g25bWCAvb4ZjAXLuDplFImEoHcRr55Xsaoyaro3w6X dc31ABX8n/eNPg+oZ4+hJ3/DYG61wIDSwdVOHWcRYhL8KVNXuvQIEVeOakoWq1aaeX+i wUIpiWP6bxjTselLqnFhiTu0/PkDPIxwk3Qq9AKPhOLen/bswqqL6jwfKRsVmZ+jS1JE kjOss8hM5/b0Q3vJNj5G2sPA5jjVJ9AwHzB+0T4Ma60CAB8ekndSdsJOby8t8KVCHKOu OaDj1cAS6pO2QPtyMgBWr/TzFENXg+n3+j2GyxqV/sWWgmtnHHPLmEjx8a+0UH/juioZ J4GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554256; x=1711159056; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LBMQW30MaUGTTlpQEoDn37zgtsJ/Rvfav+1wxxZ/gso=; b=XWvlwpsHlhzV4/lf/T+5pTl5z3w1Ov625s1/AaTXEIECHIARFVk6n16Db6P4wU3ozp kQelFXB4gB1zOSrYqjgpuAbuYlKqoT0+u8AQtS1XaZpm0s8hUGlJBQSfGse5IYKaDh5I VH4hUHnfwdVvJrhIJfKfxfNUYhSDvz2ycGWNmtUR37plPmSL/O9vL9mMk3JF5nadL1Sz 2RZJNOcmE6UiCHDCsCv/gizRXWYxBYc3bLW5jD5EzmjI5FmrFaJR6dhXv/ybYI7j0C9h Xzi+SwsXTmaajjBeVotfh9+ZrLsyX6gMibJ5PoSPRMh3f2DB5Cwo8R94Sz7QLdi+GAyP M2qw== X-Gm-Message-State: AOJu0Yx5l4RpZq9WhBiL71Uz+Q+KYkjF/SdR9lnQPlqnMoOhJrBUcAoj V2OAcZZO3kA4LnpxcdQ7n3hFQnNTpHdVkhejNfCoHTUX0echaGvbz4OMBl3QTYL/RW7L96AxUs6 5 X-Google-Smtp-Source: AGHT+IE3eU6MX5U8dF4gpdE37cVWnNHjMh3meMjTA3I4YSgEkQoqpUPJMVguWxXuXZRLaqOFbX2lrQ== X-Received: by 2002:a17:903:2289:b0:1dd:eba:e744 with SMTP id b9-20020a170903228900b001dd0ebae744mr9258058plh.53.1710554256213; Fri, 15 Mar 2024 18:57:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 05/22] plugins: Move function pointer in qemu_plugin_dyn_cb Date: Fri, 15 Mar 2024 15:57:03 -1000 Message-Id: <20240316015720.3661236-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554433149100001 Content-Type: text/plain; charset="utf-8" The out-of-line function pointer is mutually exclusive with inline expansion, so move it into the union. Wrap the pointer in a structure named 'regular' to match PLUGIN_CB_REGULAR. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- include/qemu/plugin.h | 4 +++- accel/tcg/plugin-gen.c | 4 ++-- plugins/core.c | 8 ++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h index 12a96cea2a..143262dca8 100644 --- a/include/qemu/plugin.h +++ b/include/qemu/plugin.h @@ -84,13 +84,15 @@ enum plugin_dyn_cb_subtype { * instance of a callback to be called upon the execution of a particular = TB. */ struct qemu_plugin_dyn_cb { - union qemu_plugin_cb_sig f; void *userp; enum plugin_dyn_cb_subtype type; /* @rw applies to mem callbacks only (both regular and inline) */ enum qemu_plugin_mem_rw rw; /* fields specific to each dyn_cb type go here */ union { + struct { + union qemu_plugin_cb_sig f; + } regular; struct { qemu_plugin_u64 entry; enum qemu_plugin_op op; diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index 8028786c7b..c56f104aee 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -431,7 +431,7 @@ static TCGOp *append_udata_cb(const struct qemu_plugin_= dyn_cb *cb, } =20 /* call */ - op =3D copy_call(&begin_op, op, cb->f.vcpu_udata, cb_idx); + op =3D copy_call(&begin_op, op, cb->regular.f.vcpu_udata, cb_idx); =20 return op; } @@ -479,7 +479,7 @@ static TCGOp *append_mem_cb(const struct qemu_plugin_dy= n_cb *cb, =20 if (type =3D=3D PLUGIN_GEN_CB_MEM) { /* call */ - op =3D copy_call(&begin_op, op, cb->f.vcpu_udata, cb_idx); + op =3D copy_call(&begin_op, op, cb->regular.f.vcpu_udata, cb_idx); } =20 return op; diff --git a/plugins/core.c b/plugins/core.c index 4487cb7c48..837c373690 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -342,7 +342,7 @@ void plugin_register_dyn_cb__udata(GArray **arr, =20 dyn_cb->userp =3D udata; /* Note flags are discarded as unused. */ - dyn_cb->f.vcpu_udata =3D cb; + dyn_cb->regular.f.vcpu_udata =3D cb; dyn_cb->type =3D PLUGIN_CB_REGULAR; } =20 @@ -359,7 +359,7 @@ void plugin_register_vcpu_mem_cb(GArray **arr, /* Note flags are discarded as unused. */ dyn_cb->type =3D PLUGIN_CB_REGULAR; dyn_cb->rw =3D rw; - dyn_cb->f.generic =3D cb; + dyn_cb->regular.f.vcpu_mem =3D cb; } =20 /* @@ -511,8 +511,8 @@ void qemu_plugin_vcpu_mem_cb(CPUState *cpu, uint64_t va= ddr, } switch (cb->type) { case PLUGIN_CB_REGULAR: - cb->f.vcpu_mem(cpu->cpu_index, make_plugin_meminfo(oi, rw), - vaddr, cb->userp); + cb->regular.f.vcpu_mem(cpu->cpu_index, make_plugin_meminfo(oi,= rw), + vaddr, cb->userp); break; case PLUGIN_CB_INLINE: exec_inline_op(cb, cpu->cpu_index); --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554460; cv=none; d=zohomail.com; s=zohoarc; b=CFiDrOMRzpUBqvfr9mjNDI3Pg7tmI6/ewDj4GPl0LqZE4tijbXKrvDSyhC+ILd1lzXYIpp/NJyP5Eri1GyZC7TcNQPNEoNmOeDkkGOngtIaCvuEu+HvqwJYuhUcKCjr//pTw+J6nWxBruEYAOb46yO7JIj0UUfZGpw5ShIvDeY4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554460; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tejnOfEGCIS6beGjus6J1qxofDOH1tfJTZA704n4hj8=; b=hC69cieJ9lqNT9Lapy3Hsu/4RqCjpoeWlLBJRsT3FwoupEzPua9+t59x50uce+7+Ervh4h4DKMMZG0yrFQb2KsBiu8/C3FlNgJJ/eI0vXnNZauV8J9tLygJfTm4TMmBQ//CCvXJCO18gByfuWofTMQRRYaWUFpHjhtfTJDUhJDY= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554460977699.0856348130426; Fri, 15 Mar 2024 19:01:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIt-0002nD-R3; Fri, 15 Mar 2024 21:57:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIs-0002lf-3t for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:42 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIq-0000ia-Eg for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:41 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-5ce6b5e3c4eso1787639a12.2 for ; Fri, 15 Mar 2024 18:57:39 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554258; x=1711159058; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tejnOfEGCIS6beGjus6J1qxofDOH1tfJTZA704n4hj8=; b=ktHZiDj/SgCjaWxtBrbGmpge3WJ4L/3f9rxbjrEROvynoCl2vpQS76Y7IujQihJbwo YHQgDjJ4tH+lv+z6BSCS6XWD9KeHtLwBbCayfwdl5uQvYkk/7Yh9t7k1kHxSwQyvZeXI Qx1L7Zi9WpZwbm1RRW++FxcslC4RjM/8Mm0/Mfq5D5obUQ+B756aMlzOLeGdfN+psCqo ZnTF7l2EzyHL0a1pLLI+YCb4/Ur2CgnYXgNdk8ThAKmo0arWIgx2kzhDpvtLt9LrR8qm qlLTOo63i/D/cd7mOocOvdelAMEXicaZDy2AEiyLbA1eUR3g6/qG49NVFixm2vNjwJ/6 w68g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554258; x=1711159058; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tejnOfEGCIS6beGjus6J1qxofDOH1tfJTZA704n4hj8=; b=iOcgidQyVGKldAZq6QUlNA+iLfAUMf/tFtmeTyaVD4kL+DZRGCRJoaIrkyp+aXAbUe J/Fg9T1ep49gOzE/ZwR+2a4uQH1n6q283iHzEkMKn9FHhqPk+2ZcWCH7pjJIE0BgkQFo te/YU+GCvbKtmG8vQXnUDCWEmeK6T/cw/fC1f26ZFfT90DL6jyVjsumc40+Jh0jGc12z +gFfbdQOpGAoYdqavySzFg5Zi6cjdSMDXhzzO7/wGgYMzDt4zZ6W9yRtl7vZmGpb9DdI E4Jl8tsu1GNYHgtzxuuWP28iZbF9EjQhx5rBytUkWUxGfVfv3QNdmAnZ3P1A+3tVAl/Q YxjQ== X-Gm-Message-State: AOJu0YwFW/0kbrcMUvallSW81OIl27AGzn1nbygUuJPHA1NTm4IK2DsY qk2v1Lmhg+ED2kx/sYdY0g78B7k2JH8frmcUB1FMq7q/lojCiUSj4G7zAFYNuNXeSAK7GyVFiee 4 X-Google-Smtp-Source: AGHT+IFv0TAY6MwF53Hmvf7/T8L1/Zj27hHGDaVxQxEfz0b5zOgtKy65aWhDztK5f3FPx7C9gvkpoQ== X-Received: by 2002:a17:902:ce86:b0:1dd:c7ea:81f3 with SMTP id f6-20020a170902ce8600b001ddc7ea81f3mr5679327plg.1.1710554258139; Fri, 15 Mar 2024 18:57:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 06/22] plugins: Create TCGHelperInfo for all out-of-line callbacks Date: Fri, 15 Mar 2024 15:57:04 -1000 Message-Id: <20240316015720.3661236-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554461261100001 Content-Type: text/plain; charset="utf-8" TCGHelperInfo includes the ABI for every function call. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/qemu/plugin.h | 1 + plugins/core.c | 51 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h index 143262dca8..793c44f1f2 100644 --- a/include/qemu/plugin.h +++ b/include/qemu/plugin.h @@ -92,6 +92,7 @@ struct qemu_plugin_dyn_cb { union { struct { union qemu_plugin_cb_sig f; + TCGHelperInfo *info; } regular; struct { qemu_plugin_u64 entry; diff --git a/plugins/core.c b/plugins/core.c index 837c373690..b0a2e80874 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -338,12 +338,26 @@ void plugin_register_dyn_cb__udata(GArray **arr, enum qemu_plugin_cb_flags flags, void *udata) { - struct qemu_plugin_dyn_cb *dyn_cb =3D plugin_get_dyn_cb(arr); + static TCGHelperInfo info[3] =3D { + [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG | TCG_CALL_PLUG= IN, + [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG | TCG_CALL_PLUGIN, + [QEMU_PLUGIN_CB_RW_REGS].flags =3D TCG_CALL_PLUGIN, + /* + * Match qemu_plugin_vcpu_udata_cb_t: + * void (*)(uint32_t, void *) + */ + [0 ... 2].typemask =3D (dh_typemask(void, 0) | + dh_typemask(i32, 1) | + dh_typemask(ptr, 2)) + }; =20 + struct qemu_plugin_dyn_cb *dyn_cb =3D plugin_get_dyn_cb(arr); dyn_cb->userp =3D udata; - /* Note flags are discarded as unused. */ - dyn_cb->regular.f.vcpu_udata =3D cb; dyn_cb->type =3D PLUGIN_CB_REGULAR; + dyn_cb->regular.f.vcpu_udata =3D cb; + + assert((unsigned)flags < ARRAY_SIZE(info)); + dyn_cb->regular.info =3D &info[flags]; } =20 void plugin_register_vcpu_mem_cb(GArray **arr, @@ -352,14 +366,39 @@ void plugin_register_vcpu_mem_cb(GArray **arr, enum qemu_plugin_mem_rw rw, void *udata) { - struct qemu_plugin_dyn_cb *dyn_cb; + /* + * Expect that the underlying type for enum qemu_plugin_meminfo_t + * is either int32_t or uint32_t, aka int or unsigned int. + */ + QEMU_BUILD_BUG_ON( + !__builtin_types_compatible_p(qemu_plugin_meminfo_t, uint32_t) && + !__builtin_types_compatible_p(qemu_plugin_meminfo_t, int32_t)); =20 - dyn_cb =3D plugin_get_dyn_cb(arr); + static TCGHelperInfo info[3] =3D { + [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG | TCG_CALL_PLUG= IN, + [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG | TCG_CALL_PLUGIN, + [QEMU_PLUGIN_CB_RW_REGS].flags =3D TCG_CALL_PLUGIN, + /* + * Match qemu_plugin_vcpu_mem_cb_t: + * void (*)(uint32_t, qemu_plugin_meminfo_t, uint64_t, void *) + */ + [0 ... 2].typemask =3D + (dh_typemask(void, 0) | + dh_typemask(i32, 1) | + (__builtin_types_compatible_p(qemu_plugin_meminfo_t, uint32_t) + ? dh_typemask(i32, 2) : dh_typemask(s32, 2)) | + dh_typemask(i64, 3) | + dh_typemask(ptr, 4)) + }; + + struct qemu_plugin_dyn_cb *dyn_cb =3D plugin_get_dyn_cb(arr); dyn_cb->userp =3D udata; - /* Note flags are discarded as unused. */ dyn_cb->type =3D PLUGIN_CB_REGULAR; dyn_cb->rw =3D rw; dyn_cb->regular.f.vcpu_mem =3D cb; + + assert((unsigned)flags < ARRAY_SIZE(info)); + dyn_cb->regular.info =3D &info[flags]; } =20 /* --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554357; cv=none; d=zohomail.com; s=zohoarc; b=mpJDLeGnSC1ZvYiNmkLrwEpQf9XIZWHsGbBWfdu57/NU9w2EF/0VCBNkIPYGl7W/+4+HFvUV9k2vLYyCLgBXYIXtej4qp6vPyhri452h7ybi70hUalvXnPcjDmyG+ts4/6SF3Pu3RuO7dAeo3i0X/VxAAEGv150H3Gx6X6EJ5AA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554357; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5GryAJXFnUj11zs8uoNqYE1HevxmAcx5O0dvpjg9Kdo=; b=K6Tz+/k3tBKtohmOtm3wA/jz1BSci8OG+TlkpnvOogaua2x4S+UREwfBdFcgCwX++Pv+KYCvhcyXL55X6eUQ2xPLiXEI5+VjZu52Sj0KjaYYvbxZIAYVFbjgUMZQCL9shQ1NtyseS2K1y3MOWMxfO6vzgpI9eZ39CQTHQHAH7CQ= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554357115744.7618126629611; Fri, 15 Mar 2024 18:59:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIv-0002o0-Fc; Fri, 15 Mar 2024 21:57:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIt-0002mU-Ck for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:43 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIr-0000ij-6o for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:43 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-5cdbc4334edso1627687a12.3 for ; Fri, 15 Mar 2024 18:57:40 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554260; x=1711159060; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5GryAJXFnUj11zs8uoNqYE1HevxmAcx5O0dvpjg9Kdo=; b=fr5Rd8qizMkRpHiKVKSDyTvDZ5N5xCH0fnImn6PdBwpoCHQVTLQ419I5reLDU6gsdv 3Bjw2bcNjv+EI2M4Ksfiw3LOqW3xj4qVYAsSg5xVf7Yr4PBZN1TkQpBW4O6nDuxx5Zhi zuIuFTokXJGapIqYiCuWs1pChPYrT7KM/2Ub+bOMLgPRnRZ8AGW418Lufh5K9yst4MOK U6e+vumKfog98FepOaI3txXLvK6WJ6PIzpwPTgqtisd2j2PYhiPJoUisWXDU/WxubnCw 3nuPwIn3tifD6v5GlZbB6LNIG77M5DytM9vrthjtZyXUHLAtI4KEvdad94fLCZGCdS4B KE7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554260; x=1711159060; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5GryAJXFnUj11zs8uoNqYE1HevxmAcx5O0dvpjg9Kdo=; b=YFWEcmR9N0MKMgomnkX4ncvTsO7WgcL8F1qy+WHfs57PPXGnHFcFCHH/1rLr0xHNgk kDUAt+6ZEnhXrmDJhKNNhTj7VDrSbZiKSogyF6eytxKD5IYs23RY+67S/jdk1Y+Xo8p3 WKLiwnk4wndhHFQZhspQN+1uaY5E+qfjrR5FVCrbh9gyc190S4cCCVg510Y0iGDhGAr+ X/r6XdPwFGjB5/hVHyXciASr62ybU1R58I8ON92ejxqRtJDCUxBIOrrFKRAqaWeLdtO5 tWo37FQ01nSdW1ZPucsojdpAb8PjEJGQ2MRDdMMzMQclcxcVCi+Q3onNX+0i4cIYl7MN LzxA== X-Gm-Message-State: AOJu0Yy0V/gHqUVoA9T0hJvxjqnGAqe+p1BI5lCZQXqBVGZm0xjBK2XK TjnSB43P/8q7OJOTrw9uRahBc2aOISXXUlm3RNz6Tlro7nXKatVXhXW2fC/i37grlrFp9DQTOS9 Y X-Google-Smtp-Source: AGHT+IHFhP52+OweqqIyFLe2g17m8VTkg2UQkhEuUj10MhWyC+TyJPczziveuw9xmi0Q49Dqhblmbw== X-Received: by 2002:a17:902:7d98:b0:1dd:de0f:c01e with SMTP id a24-20020a1709027d9800b001ddde0fc01emr4439010plm.37.1710554259849; Fri, 15 Mar 2024 18:57:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 07/22] plugins: Use emit_before_op for PLUGIN_GEN_AFTER_INSN Date: Fri, 15 Mar 2024 15:57:05 -1000 Message-Id: <20240316015720.3661236-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554358940100003 Content-Type: text/plain; charset="utf-8" Introduce a new plugin_cb op and migrate one operation. By using emit_before_op, we do not need to emit opcodes early and modify them later -- we can simply emit the final set of opcodes once. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 1 + include/tcg/tcg-opc.h | 1 + accel/tcg/plugin-gen.c | 74 +++++++++++++++++++++---------------- tcg/tcg-op.c | 5 +++ 4 files changed, 50 insertions(+), 31 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 2d932a515e..9de5a7f280 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -74,6 +74,7 @@ void tcg_gen_goto_tb(unsigned idx); */ void tcg_gen_lookup_and_goto_ptr(void); =20 +void tcg_gen_plugin_cb(unsigned from); void tcg_gen_plugin_cb_start(unsigned from, unsigned type, unsigned wr); void tcg_gen_plugin_cb_end(void); =20 diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index b80227fa1c..3b7cb2bce1 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -197,6 +197,7 @@ DEF(exit_tb, 0, 0, 1, TCG_OPF_BB_EXIT | TCG_OPF_BB_END) DEF(goto_tb, 0, 0, 1, TCG_OPF_BB_EXIT | TCG_OPF_BB_END) DEF(goto_ptr, 0, 1, 0, TCG_OPF_BB_EXIT | TCG_OPF_BB_END) =20 +DEF(plugin_cb, 0, 0, 1, TCG_OPF_NOT_PRESENT) DEF(plugin_cb_start, 0, 0, 3, TCG_OPF_NOT_PRESENT) DEF(plugin_cb_end, 0, 0, 0, TCG_OPF_NOT_PRESENT) =20 diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index c56f104aee..8fa342b425 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -207,8 +207,7 @@ static void plugin_gen_empty_callback(enum plugin_gen_f= rom from) { switch (from) { case PLUGIN_GEN_AFTER_INSN: - gen_wrapped(from, PLUGIN_GEN_DISABLE_MEM_HELPER, - gen_empty_mem_helper); + tcg_gen_plugin_cb(from); break; case PLUGIN_GEN_FROM_INSN: /* @@ -614,16 +613,6 @@ static void inject_mem_enable_helper(struct qemu_plugi= n_tb *ptb, inject_mem_helper(begin_op, arr); } =20 -static void inject_mem_disable_helper(struct qemu_plugin_insn *plugin_insn, - TCGOp *begin_op) -{ - if (likely(!plugin_insn->mem_helper)) { - rm_ops(begin_op); - return; - } - inject_mem_helper(begin_op, NULL); -} - /* called before finishing a TB with exit_tb, goto_tb or goto_ptr */ void plugin_gen_disable_mem_helpers(void) { @@ -709,11 +698,14 @@ static void plugin_gen_enable_mem_helper(struct qemu_= plugin_tb *ptb, inject_mem_enable_helper(ptb, insn, begin_op); } =20 -static void plugin_gen_disable_mem_helper(struct qemu_plugin_tb *ptb, - TCGOp *begin_op, int insn_idx) +static void gen_disable_mem_helper(struct qemu_plugin_tb *ptb, + struct qemu_plugin_insn *insn) { - struct qemu_plugin_insn *insn =3D g_ptr_array_index(ptb->insns, insn_i= dx); - inject_mem_disable_helper(insn, begin_op); + if (insn->mem_helper) { + tcg_gen_st_ptr(tcg_constant_ptr(0), tcg_env, + offsetof(CPUState, plugin_mem_cbs) - + offsetof(ArchCPU, env)); + } } =20 /* #define DEBUG_PLUGIN_GEN_OPS */ @@ -772,16 +764,49 @@ static void pr_ops(void) =20 static void plugin_gen_inject(struct qemu_plugin_tb *plugin_tb) { - TCGOp *op; + TCGOp *op, *next; int insn_idx =3D -1; =20 pr_ops(); =20 - QTAILQ_FOREACH(op, &tcg_ctx->ops, link) { + /* + * While injecting code, we cannot afford to reuse any ebb temps + * that might be live within the existing opcode stream. + * The simplest solution is to release them all and create new. + */ + memset(tcg_ctx->free_temps, 0, sizeof(tcg_ctx->free_temps)); + + QTAILQ_FOREACH_SAFE(op, &tcg_ctx->ops, link, next) { switch (op->opc) { case INDEX_op_insn_start: insn_idx++; break; + + case INDEX_op_plugin_cb: + { + enum plugin_gen_from from =3D op->args[0]; + struct qemu_plugin_insn *insn =3D NULL; + + if (insn_idx >=3D 0) { + insn =3D g_ptr_array_index(plugin_tb->insns, insn_idx); + } + + tcg_ctx->emit_before_op =3D op; + + switch (from) { + case PLUGIN_GEN_AFTER_INSN: + assert(insn !=3D NULL); + gen_disable_mem_helper(plugin_tb, insn); + break; + default: + g_assert_not_reached(); + } + + tcg_ctx->emit_before_op =3D NULL; + tcg_op_remove(tcg_ctx, op); + break; + } + case INDEX_op_plugin_cb_start: { enum plugin_gen_from from =3D op->args[0]; @@ -846,19 +871,6 @@ static void plugin_gen_inject(struct qemu_plugin_tb *p= lugin_tb) =20 break; } - case PLUGIN_GEN_AFTER_INSN: - { - g_assert(insn_idx >=3D 0); - - switch (type) { - case PLUGIN_GEN_DISABLE_MEM_HELPER: - plugin_gen_disable_mem_helper(plugin_tb, op, insn_idx); - break; - default: - g_assert_not_reached(); - } - break; - } default: g_assert_not_reached(); } diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index aa6bc6f57d..0f2026c91c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -312,6 +312,11 @@ void tcg_gen_mb(TCGBar mb_type) } } =20 +void tcg_gen_plugin_cb(unsigned from) +{ + tcg_gen_op1(INDEX_op_plugin_cb, from); +} + void tcg_gen_plugin_cb_start(unsigned from, unsigned type, unsigned wr) { tcg_gen_op3(INDEX_op_plugin_cb_start, from, type, wr); --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554332; cv=none; d=zohomail.com; s=zohoarc; b=Z+SyyM7BOK4SDnJeiT4GPfrz+O0IcJ7nkmt1o0PX9gqAZgvs6xPEqhdo3xpcqb/h6aTSYxylsreA8vBf9F2/5faezah1xttXoeVZOOiFAf/yRXC/s593Yq4qIlBw3UDe0mu5AFpL2YROAD7sqINWP/txoU28qQMbmRHwXEMRF4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554332; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lNF27JH3rJLz68kZoTFt9GK2MSk5zOPAV8Ck18ejJIY=; b=lFbfJnPPucqu36gWMrtmtJkj70zYEbPcSyNvpuQJt1y0lzRiovCB/b9IPJPbNOYldAnbRS5oqcY+ovKkmbK8mq5ATYN6sOfRulvUvzYPguK2KqK6XnlnQnH9WP7oKBdy8d1Lc/uJa1t5ySPeagcBfSCgwMFaNIKV73zmEq6ZtBs= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554332297895.9306711084549; Fri, 15 Mar 2024 18:58:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIw-0002o3-Bb; Fri, 15 Mar 2024 21:57:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIu-0002ne-R2 for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:44 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIt-0000jB-1n for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:44 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-1dca3951ad9so19696915ad.3 for ; Fri, 15 Mar 2024 18:57:42 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554261; x=1711159061; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lNF27JH3rJLz68kZoTFt9GK2MSk5zOPAV8Ck18ejJIY=; b=bLYM9M/5r179hXEgx8PeR4rnDvWx30nS8WOz5VJyOaw0y2eVi7ptmRyLZQvEeysSIC 1ozP12sdAhJtUA4noJFuTv1M48pkTnJqlyOaG4quvqH70qn+ldv+yRZvNr4VKIZOgB+R 7IOYhstcRg7UuU7NV40lYrmob4wyea8lIQtCc4FKTfPCxR9xMYULcCC7lHLHbR0tl6qG Lk3jiPf2bDlPNXdmdl8xwBEQ+AiikvaoFspiRG0byt+NIsDeIuTCbd03RibhfxELG5Rp AvWdRsuATPcIk+k20laSDKmNgMa/hByO99g8SNTScpdS7+4Eb2KO7YN2QWczv2/HcQg0 I3vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554261; x=1711159061; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lNF27JH3rJLz68kZoTFt9GK2MSk5zOPAV8Ck18ejJIY=; b=m9wzY+CGszLwCDmpzSLn4ScjXx+Ndnlyz6Uw1fb7U9kcwpYXxHW3nGEjlNLUS7e4K9 QW++9nT2HSrcAHi3kENuoR1o50YcHEm8k9g2KW+DMJtqPAQQLVpTVGHAZwEsaN80aUcT 8AmNcQjiwhotKVU1IPysvW+DY9DDhNFhAMKnMMYHSxe57a5I448uasiCtBz2DT4bOqfq 4IaBx5de2Q6kUE4USBjqTmXgLa6hCwI2d9MJnqx5RnrLWdVyhZJFwjI6MqfC9khJ98gP /AnzR1AwFe4LFhtvyU0oBlG7icQLiHxGxKMMBLHdfUD1X0pgMo3nO0UDpySjjbNUXQrc zfBg== X-Gm-Message-State: AOJu0Yz8Xx+pATU+CAVnCOXZeXNMDsZzL9ZAlhh47urwgjqEmTpeCwEk 0Kfin6d33i75zajIsgJ/QQZCY31VsPU+WQGuWg0Bex0OCiwfpf/h7ZCGNLa15bq3ouY94acY+TB 1 X-Google-Smtp-Source: AGHT+IEm8iFZxBrSVoOoyI5OXCVx6X8i7v9Ixz7G65lqfp0B3MFPPIGedMCk+jgiifrLIkUv9WLoXA== X-Received: by 2002:a17:902:e74f:b0:1dd:8c28:8a8d with SMTP id p15-20020a170902e74f00b001dd8c288a8dmr8482107plf.68.1710554261732; Fri, 15 Mar 2024 18:57:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 08/22] plugins: Use emit_before_op for PLUGIN_GEN_FROM_TB Date: Fri, 15 Mar 2024 15:57:06 -1000 Message-Id: <20240316015720.3661236-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554333063100003 Content-Type: text/plain; charset="utf-8" By having the qemu_plugin_cb_flags be recorded in the TCGHelperInfo, we no longer need to distinguish PLUGIN_CB_REGULAR from PLUGIN_CB_REGULAR_R, so place all TB callbacks in the same queue. Signed-off-by: Richard Henderson --- accel/tcg/plugin-gen.c | 96 +++++++++++++++++++++++++----------------- plugins/api.c | 6 +-- 2 files changed, 58 insertions(+), 44 deletions(-) diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index 8fa342b425..f92aa80510 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -207,6 +207,7 @@ static void plugin_gen_empty_callback(enum plugin_gen_f= rom from) { switch (from) { case PLUGIN_GEN_AFTER_INSN: + case PLUGIN_GEN_FROM_TB: tcg_gen_plugin_cb(from); break; case PLUGIN_GEN_FROM_INSN: @@ -216,8 +217,6 @@ static void plugin_gen_empty_callback(enum plugin_gen_f= rom from) */ gen_wrapped(from, PLUGIN_GEN_ENABLE_MEM_HELPER, gen_empty_mem_helper); - /* fall through */ - case PLUGIN_GEN_FROM_TB: gen_wrapped(from, PLUGIN_GEN_CB_UDATA, gen_empty_udata_cb_no_rwg); gen_wrapped(from, PLUGIN_GEN_CB_UDATA_R, gen_empty_udata_cb_no_wg); gen_wrapped(from, PLUGIN_GEN_CB_INLINE, gen_empty_inline_cb); @@ -632,24 +631,6 @@ void plugin_gen_disable_mem_helpers(void) offsetof(CPUState, plugin_mem_cbs) - offsetof(ArchCPU, = env)); } =20 -static void plugin_gen_tb_udata(const struct qemu_plugin_tb *ptb, - TCGOp *begin_op) -{ - inject_udata_cb(ptb->cbs[PLUGIN_CB_REGULAR], begin_op); -} - -static void plugin_gen_tb_udata_r(const struct qemu_plugin_tb *ptb, - TCGOp *begin_op) -{ - inject_udata_cb(ptb->cbs[PLUGIN_CB_REGULAR_R], begin_op); -} - -static void plugin_gen_tb_inline(const struct qemu_plugin_tb *ptb, - TCGOp *begin_op) -{ - inject_inline_cb(ptb->cbs[PLUGIN_CB_INLINE], begin_op, op_ok); -} - static void plugin_gen_insn_udata(const struct qemu_plugin_tb *ptb, TCGOp *begin_op, int insn_idx) { @@ -708,6 +689,41 @@ static void gen_disable_mem_helper(struct qemu_plugin_= tb *ptb, } } =20 +static void gen_udata_cb(struct qemu_plugin_dyn_cb *cb) +{ + TCGv_i32 cpu_index =3D tcg_temp_ebb_new_i32(); + + tcg_gen_ld_i32(cpu_index, tcg_env, + -offsetof(ArchCPU, env) + offsetof(CPUState, cpu_index)= ); + tcg_gen_call2(cb->regular.f.vcpu_udata, cb->regular.info, NULL, + tcgv_i32_temp(cpu_index), + tcgv_ptr_temp(tcg_constant_ptr(cb->userp))); + tcg_temp_free_i32(cpu_index); +} + +static void gen_inline_cb(struct qemu_plugin_dyn_cb *cb) +{ + GArray *arr =3D cb->inline_insn.entry.score->data; + size_t offset =3D cb->inline_insn.entry.offset; + TCGv_i32 cpu_index =3D tcg_temp_ebb_new_i32(); + TCGv_i64 val =3D tcg_temp_ebb_new_i64(); + TCGv_ptr ptr =3D tcg_temp_ebb_new_ptr(); + + tcg_gen_ld_i32(cpu_index, tcg_env, + -offsetof(ArchCPU, env) + offsetof(CPUState, cpu_index)= ); + tcg_gen_muli_i32(cpu_index, cpu_index, g_array_get_element_size(arr)); + tcg_gen_ext_i32_ptr(ptr, cpu_index); + tcg_temp_free_i32(cpu_index); + + tcg_gen_addi_ptr(ptr, ptr, (intptr_t)arr->data); + tcg_gen_ld_i64(val, ptr, offset); + tcg_gen_addi_i64(val, val, cb->inline_insn.imm); + tcg_gen_st_i64(val, ptr, offset); + + tcg_temp_free_i64(val); + tcg_temp_free_ptr(ptr); +} + /* #define DEBUG_PLUGIN_GEN_OPS */ static void pr_ops(void) { @@ -786,6 +802,8 @@ static void plugin_gen_inject(struct qemu_plugin_tb *pl= ugin_tb) { enum plugin_gen_from from =3D op->args[0]; struct qemu_plugin_insn *insn =3D NULL; + const GArray *cbs; + int i, n; =20 if (insn_idx >=3D 0) { insn =3D g_ptr_array_index(plugin_tb->insns, insn_idx); @@ -798,6 +816,25 @@ static void plugin_gen_inject(struct qemu_plugin_tb *p= lugin_tb) assert(insn !=3D NULL); gen_disable_mem_helper(plugin_tb, insn); break; + + case PLUGIN_GEN_FROM_TB: + assert(insn =3D=3D NULL); + + cbs =3D plugin_tb->cbs[PLUGIN_CB_REGULAR]; + for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { + struct qemu_plugin_dyn_cb *cb =3D + &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); + gen_udata_cb(cb); + } + + cbs =3D plugin_tb->cbs[PLUGIN_CB_INLINE]; + for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { + struct qemu_plugin_dyn_cb *cb =3D + &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); + gen_inline_cb(cb); + } + break; + default: g_assert_not_reached(); } @@ -813,25 +850,6 @@ static void plugin_gen_inject(struct qemu_plugin_tb *p= lugin_tb) enum plugin_gen_cb type =3D op->args[1]; =20 switch (from) { - case PLUGIN_GEN_FROM_TB: - { - g_assert(insn_idx =3D=3D -1); - - switch (type) { - case PLUGIN_GEN_CB_UDATA: - plugin_gen_tb_udata(plugin_tb, op); - break; - case PLUGIN_GEN_CB_UDATA_R: - plugin_gen_tb_udata_r(plugin_tb, op); - break; - case PLUGIN_GEN_CB_INLINE: - plugin_gen_tb_inline(plugin_tb, op); - break; - default: - g_assert_not_reached(); - } - break; - } case PLUGIN_GEN_FROM_INSN: { g_assert(insn_idx >=3D 0); diff --git a/plugins/api.c b/plugins/api.c index 8fa5a600ac..5d119e8049 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -92,11 +92,7 @@ void qemu_plugin_register_vcpu_tb_exec_cb(struct qemu_pl= ugin_tb *tb, void *udata) { if (!tb->mem_only) { - int index =3D flags =3D=3D QEMU_PLUGIN_CB_R_REGS || - flags =3D=3D QEMU_PLUGIN_CB_RW_REGS ? - PLUGIN_CB_REGULAR_R : PLUGIN_CB_REGULAR; - - plugin_register_dyn_cb__udata(&tb->cbs[index], + plugin_register_dyn_cb__udata(&tb->cbs[PLUGIN_CB_REGULAR], cb, flags, udata); } } --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554375; cv=none; d=zohomail.com; s=zohoarc; b=gl1CrSVY6xv2eXqw7jMU+Z85V1D3gZvWjZirMbSWEY4DzVzgP2Ctrb38zz46rzyvjM1dID41j6Yr3KDGE0NXyMJBJhwnhtU9TJRUtBXwX3QfDkykCX24vYQaDjAbf7AH/AnClx0YAjsU25vyC+IcSV5mvKZ20qO0gyz4c++ty04= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554375; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7nfW9NMKBYgHEbFge3X4GcZHuOXPsIrrYwIsT1Iscy8=; b=PMZZ7nGuvvaBFrqTy8LGif46wgPXIM/xHomSupu8q7/KVFHPLHYMVmJqKHiLcyWaptmZvEF4f+jUGdsZeQ1SoSK82UDp1WqX0Xh9TGduLKyyT7ZBcB2tuyeC3Ym881KszmtBS98kB9U8/gYQaD9kc+e0jQKYusmEcnghB7G1UGk= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554375865404.38284765487913; Fri, 15 Mar 2024 18:59:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJIx-0002q4-U7; Fri, 15 Mar 2024 21:57:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIw-0002o5-F9 for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:46 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIu-0000jN-Re for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:46 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-1dc49b00bdbso20597895ad.3 for ; Fri, 15 Mar 2024 18:57:44 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554263; x=1711159063; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7nfW9NMKBYgHEbFge3X4GcZHuOXPsIrrYwIsT1Iscy8=; b=wH9mQHDC+n/2lF/qyOb2bDJsJAT9iKUQqg8xbVnOYYozynBEGMBT/V4CbQqirt9wqv mEommrnEYan0yHt9tX3GNy4c4mGmGJxW5Rr/SRr+bI8gK11O2rp6sR5izHHgGL8PRPDQ lj6EnkJbO8ymSpZf/X2PdIol/7Mvw+CASRAdW0604EWUmN9IQxH4DRRrYNzwh8nXT8X3 GyivU8oP/v/Yli2IFTt0iVfyg62Aiwg7dKro4VgbMiio3axl4cxL6n6XTHuneZqq7CxT w9SOy72IN2lDoEoFEqU9nmW2voDeAQ83lPoEHANGNjCVgx8gf5fyq2aSBHNUes1LqwEx 46+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554263; x=1711159063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7nfW9NMKBYgHEbFge3X4GcZHuOXPsIrrYwIsT1Iscy8=; b=I8erLO32o1f2LDxAimvttIR7Zh2c/IMVtEgkfEu/SOYCMfCZE0tiEYRNLjFu9FRq3s 7rP5BTaoILYfFlacUPISLHk2ATPj2t6if3oxaKzoB8xnOmyOb735AIaBrWZLvuuC1b84 ARBnTV4bEYtYGedo3zEpCpb1IfOp/7RSVAx7QPOcD3cFJ5MYVH5Pubkv3Su/eGrggrKM nekDmngNx3j9j7Hevhdo3LAUrgJ9RNlTEJ3Y8Gdv7kXiI3ilBRueeoUNLIfZWsnH/Ja8 BZ7tQ0Qw23saKPerpGgWCzVGhfs2oZfV2ECnFYUgB/+jQ2xlrKGYsqsyk960NkvUS6zR bEMg== X-Gm-Message-State: AOJu0YwGNv/YiwgH1xjvaoh5K7FsaZHq6aCsNm8yjhv008TE6m+5ZePj UcVcxD1lfGEpM+nYagb4svDNJG5JtQP3JPZ+J5u8NLH/7VfWn2Ga+85FLOzhtdePqG0hM7QHztL H X-Google-Smtp-Source: AGHT+IEZjLrftSXGjhrEbOh9DDLf6V9GHnvLyv+Hmf5WZLlvNn2g8xNLGb/YCksvb8M1iXA0zix/IA== X-Received: by 2002:a17:902:f68c:b0:1df:fd30:8b2d with SMTP id l12-20020a170902f68c00b001dffd308b2dmr72873plg.50.1710554263625; Fri, 15 Mar 2024 18:57:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 09/22] plugins: Add PLUGIN_GEN_AFTER_TB Date: Fri, 15 Mar 2024 15:57:07 -1000 Message-Id: <20240316015720.3661236-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554376981100002 Content-Type: text/plain; charset="utf-8" Delay test of plugin_tb->mem_helper until the inject pass. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- accel/tcg/plugin-gen.c | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index f92aa80510..aa74e580bd 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -75,6 +75,7 @@ enum plugin_gen_from { PLUGIN_GEN_FROM_INSN, PLUGIN_GEN_FROM_MEM, PLUGIN_GEN_AFTER_INSN, + PLUGIN_GEN_AFTER_TB, PLUGIN_GEN_N_FROMS, }; =20 @@ -615,20 +616,9 @@ static void inject_mem_enable_helper(struct qemu_plugi= n_tb *ptb, /* called before finishing a TB with exit_tb, goto_tb or goto_ptr */ void plugin_gen_disable_mem_helpers(void) { - /* - * We could emit the clearing unconditionally and be done. However, th= is can - * be wasteful if for instance plugins don't track memory accesses, or= if - * most TBs don't use helpers. Instead, emit the clearing iff the TB c= alls - * helpers that might access guest memory. - * - * Note: we do not reset plugin_tb->mem_helper here; a TB might have s= everal - * exit points, and we want to emit the clearing from all of them. - */ - if (!tcg_ctx->plugin_tb->mem_helper) { - return; + if (tcg_ctx->plugin_insn) { + tcg_gen_plugin_cb(PLUGIN_GEN_AFTER_TB); } - tcg_gen_st_ptr(tcg_constant_ptr(NULL), tcg_env, - offsetof(CPUState, plugin_mem_cbs) - offsetof(ArchCPU, = env)); } =20 static void plugin_gen_insn_udata(const struct qemu_plugin_tb *ptb, @@ -679,14 +669,11 @@ static void plugin_gen_enable_mem_helper(struct qemu_= plugin_tb *ptb, inject_mem_enable_helper(ptb, insn, begin_op); } =20 -static void gen_disable_mem_helper(struct qemu_plugin_tb *ptb, - struct qemu_plugin_insn *insn) +static void gen_disable_mem_helper(void) { - if (insn->mem_helper) { - tcg_gen_st_ptr(tcg_constant_ptr(0), tcg_env, - offsetof(CPUState, plugin_mem_cbs) - - offsetof(ArchCPU, env)); - } + tcg_gen_st_ptr(tcg_constant_ptr(0), tcg_env, + offsetof(CPUState, plugin_mem_cbs) - + offsetof(ArchCPU, env)); } =20 static void gen_udata_cb(struct qemu_plugin_dyn_cb *cb) @@ -812,9 +799,17 @@ static void plugin_gen_inject(struct qemu_plugin_tb *p= lugin_tb) tcg_ctx->emit_before_op =3D op; =20 switch (from) { + case PLUGIN_GEN_AFTER_TB: + if (plugin_tb->mem_helper) { + gen_disable_mem_helper(); + } + break; + case PLUGIN_GEN_AFTER_INSN: assert(insn !=3D NULL); - gen_disable_mem_helper(plugin_tb, insn); + if (insn->mem_helper) { + gen_disable_mem_helper(); + } break; =20 case PLUGIN_GEN_FROM_TB: --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554357; cv=none; d=zohomail.com; s=zohoarc; b=Fjg6oJyKw3RNMUKXfO1Fn9VOSo4eOAgHO3IYdko8DidZnHak/eZsmMct59GtwFWh1SVXscjoag1CqRp1VtZOsPHwhdUTmoOcTXFXmf8gRQ2V4ZcNed487ilKqVOITrNcvopsclN1u5Bl8H5AtBxQpHJZcjTiYta7KIYrEreGQDA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554357; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TcZkqfAEAWlYD7fR2bGgj6hyMWWgAyjlFTJyGyl+PF8=; b=j19v2j03lzVEmmBc2CQJXsnR3cnZVGPse4UuzCiG/Yh/fsbQ3CLMqrrVVtM93loEjgqRr+hdpm9yjdBVkMUo9n3MmPAhykOtAwVs4kr5kmG2oV+DQZiaSEe53oK2JoECNzWwkWOLTdhMP7OcSPXSLpsiqI+5FQA70GgyAb90VF0= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554357196863.6511036588947; Fri, 15 Mar 2024 18:59:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJ0-0002qb-5T; Fri, 15 Mar 2024 21:57:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJIz-0002qS-7i for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:49 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIx-0000jY-2U for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:48 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-5c6bd3100fcso1809194a12.3 for ; Fri, 15 Mar 2024 18:57:46 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554265; x=1711159065; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TcZkqfAEAWlYD7fR2bGgj6hyMWWgAyjlFTJyGyl+PF8=; b=yGBCYJuPr/FsnUP+Ua74zb50jm53vaaTcHa2vq3us9xOlmFXQw5byPVTf0kZ/q3Rhv B+1zXk0AYRt055tDa3Z36HCEeyeT+JJSXfKDJk8VP10OeUveLmsq2NOs9Iy3gBlDZjYc 8/NzQuXl15rCBgIbMcPWTsi9RIRovZaInduAo9jd9grh70EEK/mWN7EEklUS+Nr4SN8Y cv0Ej44bGrDshDEpQhONWgo3y9pEctwbEi7y0nLGFpKwLWGShvmxDq+xviBu9xq5X0wU pa7J1+K5c1BMSqmXnetI85jiP+Nqj8gKcr3VeBZOKHtBWuMRmBBdL9vUudCTaLyvWiJM 4p4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554265; x=1711159065; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TcZkqfAEAWlYD7fR2bGgj6hyMWWgAyjlFTJyGyl+PF8=; b=Hjf3+mtA66wERVj6U/iSW3VCoh4lLqM2cZrcZbkVzAtgdg86jQ5Enjr01+iUxMh+OS sA5zgQjrIYasOmlMvbb3z4QUVcByRX9wCx7I5IhUPID3aGBfcRUBP7FSeo7/QJDkq3Yu 29Ay/f4I4HGrrsZa9tg9yjh9YR3zMcyKYiOHTBK8RmbHY+SqB6ncoa2K4TU0yujK4q9w rGGg0bx090SUlqCaehrLDn1bzCZjZ7QCHT2YQTF7EAQMXSWTqcMtyeuNS8BlG+xyulec afbyolQHNimAGQvKyvg6+Ol7u1TjUTjJ3/sGJydC1+vfhPQaGVfb0DaeQYrAUj55r/Cv kvnQ== X-Gm-Message-State: AOJu0YwjbRBMiy+Q7eAnlZkTCH+UarolP1Y+KuGM86bm/qJPmlyTZr+E p1W0dcVRVSp38tfBHXIulcViKiJDd8j/ghDgjgVXpp1K9r0ZHGP8cEF8C9uTnoqdZ3hRu/fHHp7 6 X-Google-Smtp-Source: AGHT+IGdhzcrXkzyRFiKbOjve7Z/NMKsW/1KJC5j181xL2ZQhvF7pBMM0UISZaaLBs6zkeh599WZdA== X-Received: by 2002:a17:902:ea0c:b0:1de:e6a5:e51d with SMTP id s12-20020a170902ea0c00b001dee6a5e51dmr5867167plg.16.1710554265657; Fri, 15 Mar 2024 18:57:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 10/22] plugins: Use emit_before_op for PLUGIN_GEN_FROM_INSN Date: Fri, 15 Mar 2024 15:57:08 -1000 Message-Id: <20240316015720.3661236-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554358979100005 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/qemu/plugin.h | 1 - accel/tcg/plugin-gen.c | 286 ++++++++++------------------------------- plugins/api.c | 8 +- 3 files changed, 67 insertions(+), 228 deletions(-) diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h index 793c44f1f2..ee1c1b174a 100644 --- a/include/qemu/plugin.h +++ b/include/qemu/plugin.h @@ -73,7 +73,6 @@ enum plugin_dyn_cb_type { =20 enum plugin_dyn_cb_subtype { PLUGIN_CB_REGULAR, - PLUGIN_CB_REGULAR_R, PLUGIN_CB_INLINE, PLUGIN_N_CB_SUBTYPES, }; diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index aa74e580bd..4785838eca 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -104,30 +104,6 @@ void HELPER(plugin_vcpu_mem_cb)(unsigned int vcpu_inde= x, void *userdata) { } =20 -static void gen_empty_udata_cb(void (*gen_helper)(TCGv_i32, TCGv_ptr)) -{ - TCGv_i32 cpu_index =3D tcg_temp_ebb_new_i32(); - TCGv_ptr udata =3D tcg_temp_ebb_new_ptr(); - - tcg_gen_movi_ptr(udata, 0); - tcg_gen_ld_i32(cpu_index, tcg_env, - -offsetof(ArchCPU, env) + offsetof(CPUState, cpu_index)= ); - gen_helper(cpu_index, udata); - - tcg_temp_free_ptr(udata); - tcg_temp_free_i32(cpu_index); -} - -static void gen_empty_udata_cb_no_wg(void) -{ - gen_empty_udata_cb(gen_helper_plugin_vcpu_udata_cb_no_wg); -} - -static void gen_empty_udata_cb_no_rwg(void) -{ - gen_empty_udata_cb(gen_helper_plugin_vcpu_udata_cb_no_rwg); -} - /* * For now we only support addi_i64. * When we support more ops, we can generate one empty inline cb for each. @@ -176,51 +152,19 @@ static void gen_empty_mem_cb(TCGv_i64 addr, uint32_t = info) tcg_temp_free_i32(cpu_index); } =20 -/* - * Share the same function for enable/disable. When enabling, the NULL - * pointer will be overwritten later. - */ -static void gen_empty_mem_helper(void) -{ - TCGv_ptr ptr =3D tcg_temp_ebb_new_ptr(); - - tcg_gen_movi_ptr(ptr, 0); - tcg_gen_st_ptr(ptr, tcg_env, offsetof(CPUState, plugin_mem_cbs) - - offsetof(ArchCPU, env)); - tcg_temp_free_ptr(ptr); -} - static void gen_plugin_cb_start(enum plugin_gen_from from, enum plugin_gen_cb type, unsigned wr) { tcg_gen_plugin_cb_start(from, type, wr); } =20 -static void gen_wrapped(enum plugin_gen_from from, - enum plugin_gen_cb type, void (*func)(void)) -{ - gen_plugin_cb_start(from, type, 0); - func(); - tcg_gen_plugin_cb_end(); -} - static void plugin_gen_empty_callback(enum plugin_gen_from from) { switch (from) { case PLUGIN_GEN_AFTER_INSN: case PLUGIN_GEN_FROM_TB: - tcg_gen_plugin_cb(from); - break; case PLUGIN_GEN_FROM_INSN: - /* - * Note: plugin_gen_inject() relies on ENABLE_MEM_HELPER being - * the first callback of an instruction - */ - gen_wrapped(from, PLUGIN_GEN_ENABLE_MEM_HELPER, - gen_empty_mem_helper); - gen_wrapped(from, PLUGIN_GEN_CB_UDATA, gen_empty_udata_cb_no_rwg); - gen_wrapped(from, PLUGIN_GEN_CB_UDATA_R, gen_empty_udata_cb_no_wg); - gen_wrapped(from, PLUGIN_GEN_CB_INLINE, gen_empty_inline_cb); + tcg_gen_plugin_cb(from); break; default: g_assert_not_reached(); @@ -374,18 +318,6 @@ static TCGOp *copy_mul_i32(TCGOp **begin_op, TCGOp *op= , uint32_t v) return op; } =20 -static TCGOp *copy_st_ptr(TCGOp **begin_op, TCGOp *op) -{ - if (UINTPTR_MAX =3D=3D UINT32_MAX) { - /* st_i32 */ - op =3D copy_op(begin_op, op, INDEX_op_st_i32); - } else { - /* st_i64 */ - op =3D copy_st_i64(begin_op, op); - } - return op; -} - static TCGOp *copy_call(TCGOp **begin_op, TCGOp *op, void *func, int *cb_i= dx) { TCGOp *old_op; @@ -409,32 +341,6 @@ static TCGOp *copy_call(TCGOp **begin_op, TCGOp *op, v= oid *func, int *cb_idx) return op; } =20 -/* - * When we append/replace ops here we are sensitive to changing patterns of - * TCGOps generated by the tcg_gen_FOO calls when we generated the - * empty callbacks. This will assert very quickly in a debug build as - * we assert the ops we are replacing are the correct ones. - */ -static TCGOp *append_udata_cb(const struct qemu_plugin_dyn_cb *cb, - TCGOp *begin_op, TCGOp *op, int *cb_idx) -{ - /* const_ptr */ - op =3D copy_const_ptr(&begin_op, op, cb->userp); - - /* copy the ld_i32, but note that we only have to copy it once */ - if (*cb_idx =3D=3D -1) { - op =3D copy_op(&begin_op, op, INDEX_op_ld_i32); - } else { - begin_op =3D QTAILQ_NEXT(begin_op, link); - tcg_debug_assert(begin_op && begin_op->opc =3D=3D INDEX_op_ld_i32); - } - - /* call */ - op =3D copy_call(&begin_op, op, cb->regular.f.vcpu_udata, cb_idx); - - return op; -} - static TCGOp *append_inline_cb(const struct qemu_plugin_dyn_cb *cb, TCGOp *begin_op, TCGOp *op, int *unused) @@ -488,11 +394,6 @@ typedef TCGOp *(*inject_fn)(const struct qemu_plugin_d= yn_cb *cb, TCGOp *begin_op, TCGOp *op, int *intp); typedef bool (*op_ok_fn)(const TCGOp *op, const struct qemu_plugin_dyn_cb = *cb); =20 -static bool op_ok(const TCGOp *op, const struct qemu_plugin_dyn_cb *cb) -{ - return true; -} - static bool op_rw(const TCGOp *op, const struct qemu_plugin_dyn_cb *cb) { int w; @@ -530,12 +431,6 @@ static void inject_cb_type(const GArray *cbs, TCGOp *b= egin_op, rm_ops_range(begin_op, end_op); } =20 -static void -inject_udata_cb(const GArray *cbs, TCGOp *begin_op) -{ - inject_cb_type(cbs, begin_op, append_udata_cb, op_ok); -} - static void inject_inline_cb(const GArray *cbs, TCGOp *begin_op, op_ok_fn ok) { @@ -548,71 +443,6 @@ inject_mem_cb(const GArray *cbs, TCGOp *begin_op) inject_cb_type(cbs, begin_op, append_mem_cb, op_rw); } =20 -/* we could change the ops in place, but we can reuse more code by copying= */ -static void inject_mem_helper(TCGOp *begin_op, GArray *arr) -{ - TCGOp *orig_op =3D begin_op; - TCGOp *end_op; - TCGOp *op; - - end_op =3D find_op(begin_op, INDEX_op_plugin_cb_end); - tcg_debug_assert(end_op); - - /* const ptr */ - op =3D copy_const_ptr(&begin_op, end_op, arr); - - /* st_ptr */ - op =3D copy_st_ptr(&begin_op, op); - - rm_ops_range(orig_op, end_op); -} - -/* - * Tracking memory accesses performed from helpers requires extra work. - * If an instruction is emulated with helpers, we do two things: - * (1) copy the CB descriptors, and keep track of it so that they can be - * freed later on, and (2) point CPUState.plugin_mem_cbs to the descriptor= s, so - * that we can read them at run-time (i.e. when the helper executes). - * This run-time access is performed from qemu_plugin_vcpu_mem_cb. - * - * Note that plugin_gen_disable_mem_helpers undoes (2). Since it - * is possible that the code we generate after the instruction is - * dead, we also add checks before generating tb_exit etc. - */ -static void inject_mem_enable_helper(struct qemu_plugin_tb *ptb, - struct qemu_plugin_insn *plugin_insn, - TCGOp *begin_op) -{ - GArray *cbs[2]; - GArray *arr; - size_t n_cbs, i; - - cbs[0] =3D plugin_insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_REGULAR]; - cbs[1] =3D plugin_insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_INLINE]; - - n_cbs =3D 0; - for (i =3D 0; i < ARRAY_SIZE(cbs); i++) { - n_cbs +=3D cbs[i]->len; - } - - plugin_insn->mem_helper =3D plugin_insn->calls_helpers && n_cbs; - if (likely(!plugin_insn->mem_helper)) { - rm_ops(begin_op); - return; - } - ptb->mem_helper =3D true; - - arr =3D g_array_sized_new(false, false, - sizeof(struct qemu_plugin_dyn_cb), n_cbs); - - for (i =3D 0; i < ARRAY_SIZE(cbs); i++) { - g_array_append_vals(arr, cbs[i]->data, cbs[i]->len); - } - - qemu_plugin_add_dyn_cb_arr(arr); - inject_mem_helper(begin_op, arr); -} - /* called before finishing a TB with exit_tb, goto_tb or goto_ptr */ void plugin_gen_disable_mem_helpers(void) { @@ -621,30 +451,6 @@ void plugin_gen_disable_mem_helpers(void) } } =20 -static void plugin_gen_insn_udata(const struct qemu_plugin_tb *ptb, - TCGOp *begin_op, int insn_idx) -{ - struct qemu_plugin_insn *insn =3D g_ptr_array_index(ptb->insns, insn_i= dx); - - inject_udata_cb(insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_REGULAR], begin_op= ); -} - -static void plugin_gen_insn_udata_r(const struct qemu_plugin_tb *ptb, - TCGOp *begin_op, int insn_idx) -{ - struct qemu_plugin_insn *insn =3D g_ptr_array_index(ptb->insns, insn_i= dx); - - inject_udata_cb(insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_REGULAR_R], begin_= op); -} - -static void plugin_gen_insn_inline(const struct qemu_plugin_tb *ptb, - TCGOp *begin_op, int insn_idx) -{ - struct qemu_plugin_insn *insn =3D g_ptr_array_index(ptb->insns, insn_i= dx); - inject_inline_cb(insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_INLINE], - begin_op, op_ok); -} - static void plugin_gen_mem_regular(const struct qemu_plugin_tb *ptb, TCGOp *begin_op, int insn_idx) { @@ -662,11 +468,51 @@ static void plugin_gen_mem_inline(const struct qemu_p= lugin_tb *ptb, inject_inline_cb(cbs, begin_op, op_rw); } =20 -static void plugin_gen_enable_mem_helper(struct qemu_plugin_tb *ptb, - TCGOp *begin_op, int insn_idx) +static void gen_enable_mem_helper(struct qemu_plugin_tb *ptb, + struct qemu_plugin_insn *insn) { - struct qemu_plugin_insn *insn =3D g_ptr_array_index(ptb->insns, insn_i= dx); - inject_mem_enable_helper(ptb, insn, begin_op); + GArray *cbs[2]; + GArray *arr; + size_t n_cbs; + + /* + * Tracking memory accesses performed from helpers requires extra work. + * If an instruction is emulated with helpers, we do two things: + * (1) copy the CB descriptors, and keep track of it so that they can = be + * freed later on, and (2) point CPUState.plugin_mem_cbs to the + * descriptors, so that we can read them at run-time + * (i.e. when the helper executes). + * This run-time access is performed from qemu_plugin_vcpu_mem_cb. + * + * Note that plugin_gen_disable_mem_helpers undoes (2). Since it + * is possible that the code we generate after the instruction is + * dead, we also add checks before generating tb_exit etc. + */ + if (!insn->calls_helpers) { + return; + } + + cbs[0] =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_REGULAR]; + cbs[1] =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_INLINE]; + n_cbs =3D cbs[0]->len + cbs[1]->len; + + if (n_cbs =3D=3D 0) { + insn->mem_helper =3D false; + return; + } + insn->mem_helper =3D true; + ptb->mem_helper =3D true; + + arr =3D g_array_sized_new(false, false, + sizeof(struct qemu_plugin_dyn_cb), n_cbs); + g_array_append_vals(arr, cbs[0]->data, cbs[0]->len); + g_array_append_vals(arr, cbs[1]->data, cbs[1]->len); + + qemu_plugin_add_dyn_cb_arr(arr); + + tcg_gen_st_ptr(tcg_constant_ptr((intptr_t)arr), tcg_env, + offsetof(CPUState, plugin_mem_cbs) - + offsetof(ArchCPU, env)); } =20 static void gen_disable_mem_helper(void) @@ -830,6 +676,26 @@ static void plugin_gen_inject(struct qemu_plugin_tb *p= lugin_tb) } break; =20 + case PLUGIN_GEN_FROM_INSN: + assert(insn !=3D NULL); + + gen_enable_mem_helper(plugin_tb, insn); + + cbs =3D insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_REGULAR]; + for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { + struct qemu_plugin_dyn_cb *cb =3D + &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); + gen_udata_cb(cb); + } + + cbs =3D insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_INLINE]; + for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { + struct qemu_plugin_dyn_cb *cb =3D + &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); + gen_inline_cb(cb); + } + break; + default: g_assert_not_reached(); } @@ -845,28 +711,6 @@ static void plugin_gen_inject(struct qemu_plugin_tb *p= lugin_tb) enum plugin_gen_cb type =3D op->args[1]; =20 switch (from) { - case PLUGIN_GEN_FROM_INSN: - { - g_assert(insn_idx >=3D 0); - - switch (type) { - case PLUGIN_GEN_CB_UDATA: - plugin_gen_insn_udata(plugin_tb, op, insn_idx); - break; - case PLUGIN_GEN_CB_UDATA_R: - plugin_gen_insn_udata_r(plugin_tb, op, insn_idx); - break; - case PLUGIN_GEN_CB_INLINE: - plugin_gen_insn_inline(plugin_tb, op, insn_idx); - break; - case PLUGIN_GEN_ENABLE_MEM_HELPER: - plugin_gen_enable_mem_helper(plugin_tb, op, insn_idx); - break; - default: - g_assert_not_reached(); - } - break; - } case PLUGIN_GEN_FROM_MEM: { g_assert(insn_idx >=3D 0); diff --git a/plugins/api.c b/plugins/api.c index 5d119e8049..29cce2d97c 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -115,12 +115,8 @@ void qemu_plugin_register_vcpu_insn_exec_cb(struct qem= u_plugin_insn *insn, void *udata) { if (!insn->mem_only) { - int index =3D flags =3D=3D QEMU_PLUGIN_CB_R_REGS || - flags =3D=3D QEMU_PLUGIN_CB_RW_REGS ? - PLUGIN_CB_REGULAR_R : PLUGIN_CB_REGULAR; - - plugin_register_dyn_cb__udata(&insn->cbs[PLUGIN_CB_INSN][index], - cb, flags, udata); + plugin_register_dyn_cb__udata( + &insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_REGULAR], cb, flags, udat= a); } } =20 --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554332; cv=none; d=zohomail.com; s=zohoarc; b=eFAbvWN0cYo9rTjcdqqFPzERfPCPCl3kVcuRePYRGwrplpo0rtqjrzYHfGQC5aNcoTISIixAfOPcmnbRxLkWp5SiBxd2p8O+CTDtOvzhSjVIWuhD0JV+uvuNPyDZEVDZpv9ZVYdlit3h7n8ng2y27RzLINk+6DhrCG5zjrYJjWA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554332; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=de7L7Bv5q1ei3kBB2iSJsavrnToybDFv6t5y0UURxTU=; b=ONoiXbyk80WiMOI6oJYlrrOouXzxJ8iWfWLRk7cnNgHOe4peAy9rBg1jS0vPp53mcs9FezkMvCtQVSilsSPDYoLvr/XkD2dbnt9Ur4ge3Oog3pAgmmK7A81qn+99m6Q1GrskmpkrJbCZbWZNp49lXyIBH9T0rKQMTFzZQ5kXN+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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554332393584.5165306951977; Fri, 15 Mar 2024 18:58:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJ4-0002rI-Lp; Fri, 15 Mar 2024 21:57:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJ1-0002qr-73 for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:51 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJIy-0000l5-RW for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:50 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-1dddaa02d22so15799565ad.2 for ; Fri, 15 Mar 2024 18:57:48 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554267; x=1711159067; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=de7L7Bv5q1ei3kBB2iSJsavrnToybDFv6t5y0UURxTU=; b=KIwLbHUimXZQptdwV53LNjd5dDT9nwbqDo+QUOryLbg+S+2GyYOCSYBBbnX5PaGWT7 7HRygRlgeJm2B1etGpeS/3nBTbRcNpeLQBdqp0m1b+LU+o6kQT9K5jdTeDqc6NaKQSn7 d9lf5ndaawYOqYu9930CFDo8PYx9sLSxrdNf32TRwl6ZtYTD9RRYsO2Py/MeeXI9yr8u O7cxljItoJh1vuOfc7wS9Fa+uy9ZGL7fjA+WsrO9J7YBQACgE20pY/hClNKDWdl4l18Z hSVjWWpNfgQdno3JzeTNkLcP+Gx2xs2GSDaBnMC8lgPAvYiPjQ1YXGNfpExkS3FoQTMT 9jDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554267; x=1711159067; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=de7L7Bv5q1ei3kBB2iSJsavrnToybDFv6t5y0UURxTU=; b=KfyiGkqAG4ENqXxGu00f+8j7EiiG7Xx/hbSiCCvtH7pMDoc3BWQdZWlVsqekWr/myH 5rLVor7/tbh+bZnASbbCNAqhc5KY2/g2ObC/XXga+omPTqpmPC8/tIG8vz6f5NChcYV0 klnEi9U405asbTjeKLmM+Gs8nZt2xqkkBa9Z/Dd2H/MLaD2PSwvc0Uj+akS685dkNwaR MlpGzRe0p2f34XE+VFZCLwv8OcOAfhdTTH+ApD91hZJhJmDPAwOOoV63KTW5JcRCiVUk MdfV6i1oha6BZTe/92NSCCE5y3zTcPOmU0qRV6E/b6m9ylC/vXFE0ZGhShkrk3JGTV4L LpMQ== X-Gm-Message-State: AOJu0Ywxg7jBm1x/PH1VXArvoQePpusP8CbmCOjvKHj9Sowi7psTJDrT kaMy0xNlXkoKqpueXntVg42HkpayRHLUGhMysRM+TQbQ4rr7QuQxIL2c5bi7F/hlMR4J3E267pf J X-Google-Smtp-Source: AGHT+IHiAbwMaW5X8nIWiGj/dShjXcXyrjxXrM0yG70ZiJ7y7nAxksCZaqYEKxHNtKU/7im8U/b/zA== X-Received: by 2002:a17:902:f64d:b0:1dd:a16e:dea4 with SMTP id m13-20020a170902f64d00b001dda16edea4mr6207758plg.67.1710554267505; Fri, 15 Mar 2024 18:57:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 11/22] plugins: Use emit_before_op for PLUGIN_GEN_FROM_MEM Date: Fri, 15 Mar 2024 15:57:09 -1000 Message-Id: <20240316015720.3661236-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554333048100002 Content-Type: text/plain; charset="utf-8" Introduce a new plugin_mem_cb op to hold the address temp and meminfo computed by tcg-op-ldst.c. Because this now has its own opcode, we no longer need PLUGIN_GEN_FROM_MEM. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/exec/plugin-gen.h | 4 - include/tcg/tcg-op-common.h | 1 + include/tcg/tcg-opc.h | 1 + accel/tcg/plugin-gen.c | 408 ++++-------------------------------- tcg/tcg-op-ldst.c | 6 +- tcg/tcg-op.c | 5 + 6 files changed, 54 insertions(+), 371 deletions(-) diff --git a/include/exec/plugin-gen.h b/include/exec/plugin-gen.h index c4552b5061..f333f33198 100644 --- a/include/exec/plugin-gen.h +++ b/include/exec/plugin-gen.h @@ -25,7 +25,6 @@ void plugin_gen_insn_start(CPUState *cpu, const struct Di= sasContextBase *db); void plugin_gen_insn_end(void); =20 void plugin_gen_disable_mem_helpers(void); -void plugin_gen_empty_mem_callback(TCGv_i64 addr, uint32_t info); =20 #else /* !CONFIG_PLUGIN */ =20 @@ -48,9 +47,6 @@ static inline void plugin_gen_tb_end(CPUState *cpu, size_= t num_insns) static inline void plugin_gen_disable_mem_helpers(void) { } =20 -static inline void plugin_gen_empty_mem_callback(TCGv_i64 addr, uint32_t i= nfo) -{ } - #endif /* CONFIG_PLUGIN */ =20 #endif /* QEMU_PLUGIN_GEN_H */ diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9de5a7f280..72b80b20d0 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -75,6 +75,7 @@ void tcg_gen_goto_tb(unsigned idx); void tcg_gen_lookup_and_goto_ptr(void); =20 void tcg_gen_plugin_cb(unsigned from); +void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminfo); void tcg_gen_plugin_cb_start(unsigned from, unsigned type, unsigned wr); void tcg_gen_plugin_cb_end(void); =20 diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index 3b7cb2bce1..be9e36e386 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -198,6 +198,7 @@ DEF(goto_tb, 0, 0, 1, TCG_OPF_BB_EXIT | TCG_OPF_BB_END) DEF(goto_ptr, 0, 1, 0, TCG_OPF_BB_EXIT | TCG_OPF_BB_END) =20 DEF(plugin_cb, 0, 0, 1, TCG_OPF_NOT_PRESENT) +DEF(plugin_mem_cb, 0, 1, 1, TCG_OPF_NOT_PRESENT) DEF(plugin_cb_start, 0, 0, 3, TCG_OPF_NOT_PRESENT) DEF(plugin_cb_end, 0, 0, 0, TCG_OPF_NOT_PRESENT) =20 diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index 4785838eca..be7fd548cc 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -73,7 +73,6 @@ enum plugin_gen_from { PLUGIN_GEN_FROM_TB, PLUGIN_GEN_FROM_INSN, - PLUGIN_GEN_FROM_MEM, PLUGIN_GEN_AFTER_INSN, PLUGIN_GEN_AFTER_TB, PLUGIN_GEN_N_FROMS, @@ -104,60 +103,6 @@ void HELPER(plugin_vcpu_mem_cb)(unsigned int vcpu_inde= x, void *userdata) { } =20 -/* - * For now we only support addi_i64. - * When we support more ops, we can generate one empty inline cb for each. - */ -static void gen_empty_inline_cb(void) -{ - TCGv_i32 cpu_index =3D tcg_temp_ebb_new_i32(); - TCGv_ptr cpu_index_as_ptr =3D tcg_temp_ebb_new_ptr(); - TCGv_i64 val =3D tcg_temp_ebb_new_i64(); - TCGv_ptr ptr =3D tcg_temp_ebb_new_ptr(); - - tcg_gen_ld_i32(cpu_index, tcg_env, - -offsetof(ArchCPU, env) + offsetof(CPUState, cpu_index)= ); - /* second operand will be replaced by immediate value */ - tcg_gen_mul_i32(cpu_index, cpu_index, cpu_index); - tcg_gen_ext_i32_ptr(cpu_index_as_ptr, cpu_index); - - tcg_gen_movi_ptr(ptr, 0); - tcg_gen_add_ptr(ptr, ptr, cpu_index_as_ptr); - tcg_gen_ld_i64(val, ptr, 0); - /* second operand will be replaced by immediate value */ - tcg_gen_add_i64(val, val, val); - - tcg_gen_st_i64(val, ptr, 0); - tcg_temp_free_ptr(ptr); - tcg_temp_free_i64(val); - tcg_temp_free_ptr(cpu_index_as_ptr); - tcg_temp_free_i32(cpu_index); -} - -static void gen_empty_mem_cb(TCGv_i64 addr, uint32_t info) -{ - TCGv_i32 cpu_index =3D tcg_temp_ebb_new_i32(); - TCGv_i32 meminfo =3D tcg_temp_ebb_new_i32(); - TCGv_ptr udata =3D tcg_temp_ebb_new_ptr(); - - tcg_gen_movi_i32(meminfo, info); - tcg_gen_movi_ptr(udata, 0); - tcg_gen_ld_i32(cpu_index, tcg_env, - -offsetof(ArchCPU, env) + offsetof(CPUState, cpu_index)= ); - - gen_helper_plugin_vcpu_mem_cb(cpu_index, meminfo, addr, udata); - - tcg_temp_free_ptr(udata); - tcg_temp_free_i32(meminfo); - tcg_temp_free_i32(cpu_index); -} - -static void gen_plugin_cb_start(enum plugin_gen_from from, - enum plugin_gen_cb type, unsigned wr) -{ - tcg_gen_plugin_cb_start(from, type, wr); -} - static void plugin_gen_empty_callback(enum plugin_gen_from from) { switch (from) { @@ -171,278 +116,6 @@ static void plugin_gen_empty_callback(enum plugin_gen= _from from) } } =20 -void plugin_gen_empty_mem_callback(TCGv_i64 addr, uint32_t info) -{ - enum qemu_plugin_mem_rw rw =3D get_plugin_meminfo_rw(info); - - gen_plugin_cb_start(PLUGIN_GEN_FROM_MEM, PLUGIN_GEN_CB_MEM, rw); - gen_empty_mem_cb(addr, info); - tcg_gen_plugin_cb_end(); - - gen_plugin_cb_start(PLUGIN_GEN_FROM_MEM, PLUGIN_GEN_CB_INLINE, rw); - gen_empty_inline_cb(); - tcg_gen_plugin_cb_end(); -} - -static TCGOp *find_op(TCGOp *op, TCGOpcode opc) -{ - while (op) { - if (op->opc =3D=3D opc) { - return op; - } - op =3D QTAILQ_NEXT(op, link); - } - return NULL; -} - -static TCGOp *rm_ops_range(TCGOp *begin, TCGOp *end) -{ - TCGOp *ret =3D QTAILQ_NEXT(end, link); - - QTAILQ_REMOVE_SEVERAL(&tcg_ctx->ops, begin, end, link); - return ret; -} - -/* remove all ops until (and including) plugin_cb_end */ -static TCGOp *rm_ops(TCGOp *op) -{ - TCGOp *end_op =3D find_op(op, INDEX_op_plugin_cb_end); - - tcg_debug_assert(end_op); - return rm_ops_range(op, end_op); -} - -static TCGOp *copy_op_nocheck(TCGOp **begin_op, TCGOp *op) -{ - TCGOp *old_op =3D QTAILQ_NEXT(*begin_op, link); - unsigned nargs =3D old_op->nargs; - - *begin_op =3D old_op; - op =3D tcg_op_insert_after(tcg_ctx, op, old_op->opc, nargs); - memcpy(op->args, old_op->args, sizeof(op->args[0]) * nargs); - - return op; -} - -static TCGOp *copy_op(TCGOp **begin_op, TCGOp *op, TCGOpcode opc) -{ - op =3D copy_op_nocheck(begin_op, op); - tcg_debug_assert((*begin_op)->opc =3D=3D opc); - return op; -} - -static TCGOp *copy_const_ptr(TCGOp **begin_op, TCGOp *op, void *ptr) -{ - if (UINTPTR_MAX =3D=3D UINT32_MAX) { - /* mov_i32 */ - op =3D copy_op(begin_op, op, INDEX_op_mov_i32); - op->args[1] =3D tcgv_i32_arg(tcg_constant_i32((uintptr_t)ptr)); - } else { - /* mov_i64 */ - op =3D copy_op(begin_op, op, INDEX_op_mov_i64); - op->args[1] =3D tcgv_i64_arg(tcg_constant_i64((uintptr_t)ptr)); - } - return op; -} - -static TCGOp *copy_ld_i32(TCGOp **begin_op, TCGOp *op) -{ - return copy_op(begin_op, op, INDEX_op_ld_i32); -} - -static TCGOp *copy_ext_i32_ptr(TCGOp **begin_op, TCGOp *op) -{ - if (UINTPTR_MAX =3D=3D UINT32_MAX) { - op =3D copy_op(begin_op, op, INDEX_op_mov_i32); - } else { - op =3D copy_op(begin_op, op, INDEX_op_ext_i32_i64); - } - return op; -} - -static TCGOp *copy_add_ptr(TCGOp **begin_op, TCGOp *op) -{ - if (UINTPTR_MAX =3D=3D UINT32_MAX) { - op =3D copy_op(begin_op, op, INDEX_op_add_i32); - } else { - op =3D copy_op(begin_op, op, INDEX_op_add_i64); - } - return op; -} - -static TCGOp *copy_ld_i64(TCGOp **begin_op, TCGOp *op) -{ - if (TCG_TARGET_REG_BITS =3D=3D 32) { - /* 2x ld_i32 */ - op =3D copy_ld_i32(begin_op, op); - op =3D copy_ld_i32(begin_op, op); - } else { - /* ld_i64 */ - op =3D copy_op(begin_op, op, INDEX_op_ld_i64); - } - return op; -} - -static TCGOp *copy_st_i64(TCGOp **begin_op, TCGOp *op) -{ - if (TCG_TARGET_REG_BITS =3D=3D 32) { - /* 2x st_i32 */ - op =3D copy_op(begin_op, op, INDEX_op_st_i32); - op =3D copy_op(begin_op, op, INDEX_op_st_i32); - } else { - /* st_i64 */ - op =3D copy_op(begin_op, op, INDEX_op_st_i64); - } - return op; -} - -static TCGOp *copy_add_i64(TCGOp **begin_op, TCGOp *op, uint64_t v) -{ - if (TCG_TARGET_REG_BITS =3D=3D 32) { - /* all 32-bit backends must implement add2_i32 */ - g_assert(TCG_TARGET_HAS_add2_i32); - op =3D copy_op(begin_op, op, INDEX_op_add2_i32); - op->args[4] =3D tcgv_i32_arg(tcg_constant_i32(v)); - op->args[5] =3D tcgv_i32_arg(tcg_constant_i32(v >> 32)); - } else { - op =3D copy_op(begin_op, op, INDEX_op_add_i64); - op->args[2] =3D tcgv_i64_arg(tcg_constant_i64(v)); - } - return op; -} - -static TCGOp *copy_mul_i32(TCGOp **begin_op, TCGOp *op, uint32_t v) -{ - op =3D copy_op(begin_op, op, INDEX_op_mul_i32); - op->args[2] =3D tcgv_i32_arg(tcg_constant_i32(v)); - return op; -} - -static TCGOp *copy_call(TCGOp **begin_op, TCGOp *op, void *func, int *cb_i= dx) -{ - TCGOp *old_op; - int func_idx; - - /* copy all ops until the call */ - do { - op =3D copy_op_nocheck(begin_op, op); - } while (op->opc !=3D INDEX_op_call); - - /* fill in the op call */ - old_op =3D *begin_op; - TCGOP_CALLI(op) =3D TCGOP_CALLI(old_op); - TCGOP_CALLO(op) =3D TCGOP_CALLO(old_op); - tcg_debug_assert(op->life =3D=3D 0); - - func_idx =3D TCGOP_CALLO(op) + TCGOP_CALLI(op); - *cb_idx =3D func_idx; - op->args[func_idx] =3D (uintptr_t)func; - - return op; -} - -static TCGOp *append_inline_cb(const struct qemu_plugin_dyn_cb *cb, - TCGOp *begin_op, TCGOp *op, - int *unused) -{ - char *ptr =3D cb->inline_insn.entry.score->data->data; - size_t elem_size =3D g_array_get_element_size( - cb->inline_insn.entry.score->data); - size_t offset =3D cb->inline_insn.entry.offset; - - op =3D copy_ld_i32(&begin_op, op); - op =3D copy_mul_i32(&begin_op, op, elem_size); - op =3D copy_ext_i32_ptr(&begin_op, op); - op =3D copy_const_ptr(&begin_op, op, ptr + offset); - op =3D copy_add_ptr(&begin_op, op); - op =3D copy_ld_i64(&begin_op, op); - op =3D copy_add_i64(&begin_op, op, cb->inline_insn.imm); - op =3D copy_st_i64(&begin_op, op); - return op; -} - -static TCGOp *append_mem_cb(const struct qemu_plugin_dyn_cb *cb, - TCGOp *begin_op, TCGOp *op, int *cb_idx) -{ - enum plugin_gen_cb type =3D begin_op->args[1]; - - tcg_debug_assert(type =3D=3D PLUGIN_GEN_CB_MEM); - - /* const_i32 =3D=3D mov_i32 ("info", so it remains as is) */ - op =3D copy_op(&begin_op, op, INDEX_op_mov_i32); - - /* const_ptr */ - op =3D copy_const_ptr(&begin_op, op, cb->userp); - - /* copy the ld_i32, but note that we only have to copy it once */ - if (*cb_idx =3D=3D -1) { - op =3D copy_op(&begin_op, op, INDEX_op_ld_i32); - } else { - begin_op =3D QTAILQ_NEXT(begin_op, link); - tcg_debug_assert(begin_op && begin_op->opc =3D=3D INDEX_op_ld_i32); - } - - if (type =3D=3D PLUGIN_GEN_CB_MEM) { - /* call */ - op =3D copy_call(&begin_op, op, cb->regular.f.vcpu_udata, cb_idx); - } - - return op; -} - -typedef TCGOp *(*inject_fn)(const struct qemu_plugin_dyn_cb *cb, - TCGOp *begin_op, TCGOp *op, int *intp); -typedef bool (*op_ok_fn)(const TCGOp *op, const struct qemu_plugin_dyn_cb = *cb); - -static bool op_rw(const TCGOp *op, const struct qemu_plugin_dyn_cb *cb) -{ - int w; - - w =3D op->args[2]; - return !!(cb->rw & (w + 1)); -} - -static void inject_cb_type(const GArray *cbs, TCGOp *begin_op, - inject_fn inject, op_ok_fn ok) -{ - TCGOp *end_op; - TCGOp *op; - int cb_idx =3D -1; - int i; - - if (!cbs || cbs->len =3D=3D 0) { - rm_ops(begin_op); - return; - } - - end_op =3D find_op(begin_op, INDEX_op_plugin_cb_end); - tcg_debug_assert(end_op); - - op =3D end_op; - for (i =3D 0; i < cbs->len; i++) { - struct qemu_plugin_dyn_cb *cb =3D - &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - - if (!ok(begin_op, cb)) { - continue; - } - op =3D inject(cb, begin_op, op, &cb_idx); - } - rm_ops_range(begin_op, end_op); -} - -static void -inject_inline_cb(const GArray *cbs, TCGOp *begin_op, op_ok_fn ok) -{ - inject_cb_type(cbs, begin_op, append_inline_cb, ok); -} - -static void -inject_mem_cb(const GArray *cbs, TCGOp *begin_op) -{ - inject_cb_type(cbs, begin_op, append_mem_cb, op_rw); -} - /* called before finishing a TB with exit_tb, goto_tb or goto_ptr */ void plugin_gen_disable_mem_helpers(void) { @@ -451,23 +124,6 @@ void plugin_gen_disable_mem_helpers(void) } } =20 -static void plugin_gen_mem_regular(const struct qemu_plugin_tb *ptb, - TCGOp *begin_op, int insn_idx) -{ - struct qemu_plugin_insn *insn =3D g_ptr_array_index(ptb->insns, insn_i= dx); - inject_mem_cb(insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_REGULAR], begin_op); -} - -static void plugin_gen_mem_inline(const struct qemu_plugin_tb *ptb, - TCGOp *begin_op, int insn_idx) -{ - const GArray *cbs; - struct qemu_plugin_insn *insn =3D g_ptr_array_index(ptb->insns, insn_i= dx); - - cbs =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_INLINE]; - inject_inline_cb(cbs, begin_op, op_rw); -} - static void gen_enable_mem_helper(struct qemu_plugin_tb *ptb, struct qemu_plugin_insn *insn) { @@ -557,6 +213,21 @@ static void gen_inline_cb(struct qemu_plugin_dyn_cb *c= b) tcg_temp_free_ptr(ptr); } =20 +static void gen_mem_cb(struct qemu_plugin_dyn_cb *cb, + qemu_plugin_meminfo_t meminfo, TCGv_i64 addr) +{ + TCGv_i32 cpu_index =3D tcg_temp_ebb_new_i32(); + + tcg_gen_ld_i32(cpu_index, tcg_env, + -offsetof(ArchCPU, env) + offsetof(CPUState, cpu_index)= ); + tcg_gen_call4(cb->regular.f.vcpu_mem, cb->regular.info, NULL, + tcgv_i32_temp(cpu_index), + tcgv_i32_temp(tcg_constant_i32(meminfo)), + tcgv_i64_temp(addr), + tcgv_ptr_temp(tcg_constant_ptr(cb->userp))); + tcg_temp_free_i32(cpu_index); +} + /* #define DEBUG_PLUGIN_GEN_OPS */ static void pr_ops(void) { @@ -705,34 +376,43 @@ static void plugin_gen_inject(struct qemu_plugin_tb *= plugin_tb) break; } =20 - case INDEX_op_plugin_cb_start: + case INDEX_op_plugin_mem_cb: { - enum plugin_gen_from from =3D op->args[0]; - enum plugin_gen_cb type =3D op->args[1]; + TCGv_i64 addr =3D temp_tcgv_i64(arg_temp(op->args[0])); + qemu_plugin_meminfo_t meminfo =3D op->args[1]; + struct qemu_plugin_insn *insn; + const GArray *cbs; + int i, n, rw; =20 - switch (from) { - case PLUGIN_GEN_FROM_MEM: - { - g_assert(insn_idx >=3D 0); + assert(insn_idx >=3D 0); + insn =3D g_ptr_array_index(plugin_tb->insns, insn_idx); + rw =3D qemu_plugin_mem_is_store(meminfo) ? 2 : 1; =20 - switch (type) { - case PLUGIN_GEN_CB_MEM: - plugin_gen_mem_regular(plugin_tb, op, insn_idx); - break; - case PLUGIN_GEN_CB_INLINE: - plugin_gen_mem_inline(plugin_tb, op, insn_idx); - break; - default: - g_assert_not_reached(); + tcg_ctx->emit_before_op =3D op; + + cbs =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_REGULAR]; + for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { + struct qemu_plugin_dyn_cb *cb =3D + &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); + if (cb->rw & rw) { + gen_mem_cb(cb, meminfo, addr); } + } =20 - break; - } - default: - g_assert_not_reached(); + cbs =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_INLINE]; + for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { + struct qemu_plugin_dyn_cb *cb =3D + &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); + if (cb->rw & rw) { + gen_inline_cb(cb); + } } + + tcg_ctx->emit_before_op =3D NULL; + tcg_op_remove(tcg_ctx, op); break; } + default: /* plugins don't care about any other ops */ break; diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index f11043b449..8510160258 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -161,14 +161,14 @@ plugin_gen_mem_callbacks(TCGv_i64 copy_addr, TCGTemp = *orig_addr, MemOpIdx oi, copy_addr =3D tcg_temp_ebb_new_i64(); tcg_gen_extu_i32_i64(copy_addr, temp_tcgv_i32(orig_addr)); } - plugin_gen_empty_mem_callback(copy_addr, info); + tcg_gen_plugin_mem_cb(copy_addr, info); tcg_temp_free_i64(copy_addr); } else { if (copy_addr) { - plugin_gen_empty_mem_callback(copy_addr, info); + tcg_gen_plugin_mem_cb(copy_addr, info); tcg_temp_free_i64(copy_addr); } else { - plugin_gen_empty_mem_callback(temp_tcgv_i64(orig_addr), in= fo); + tcg_gen_plugin_mem_cb(temp_tcgv_i64(orig_addr), info); } } } diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 0f2026c91c..0ae12fa49d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -317,6 +317,11 @@ void tcg_gen_plugin_cb(unsigned from) tcg_gen_op1(INDEX_op_plugin_cb, from); } =20 +void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminfo) +{ + tcg_gen_op2(INDEX_op_plugin_mem_cb, tcgv_i64_arg(addr), meminfo); +} + void tcg_gen_plugin_cb_start(unsigned from, unsigned type, unsigned wr) { tcg_gen_op3(INDEX_op_plugin_cb_start, from, type, wr); --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554378; cv=none; d=zohomail.com; s=zohoarc; b=HVxQnudyX+N2IWOR7O75LM+axiMY75EFhJfERK6xFbXrqT59k4Urlh2Z8m7xAHeuvsNhIRkZhzVKcyW6LGI+wgvSBm6Cnut5vat3rVaXNOYVGEijXkMauz8VYuLlvY1KIf0/EbM8etCHop+p1ShwczID1TF/AMFd7ymR8CZOFEs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554378; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=r3h8QUtdpv2Bkm8l3PLViSF5XzQ3nzd/ZWsA5m75Pu0=; b=lseumiKFJnhVLzmwIjzyHoFmXfBqbQ5NyPqXNj0vlnfP0FA/UwAz0ZAbYC1ADEFcHBTick1OXPI7Mlu+R7/uo4hy2qOjZJsxu28oGSYxbbrE0FLu5hj8VrLYWb1bx4syhCq/fbKZphi7vyQp1lnJr/fikS99sK2DwJsqHuQB9ZA= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17105543783381008.0470456312431; Fri, 15 Mar 2024 18:59:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJ4-0002rY-38; Fri, 15 Mar 2024 21:57:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJ2-0002r0-1A for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:52 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJ0-0000lG-FA for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:51 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1dd9b6098aeso20337085ad.0 for ; Fri, 15 Mar 2024 18:57:50 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554269; x=1711159069; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r3h8QUtdpv2Bkm8l3PLViSF5XzQ3nzd/ZWsA5m75Pu0=; b=gmN2AxlKeiDcACMGGZv+zBUn184OKaH0coHm2iMLsCyVdUGFV8LArSGq294M3/o55U JHG4PGTLG2blXtvb74J+2JeagaCP7o0C0qtVCSU21qnQ30khwQpI9tDv6xsDioY979vF WUuup9OH5ewXoriu44/q7y4f25U0czW8YnLbQMPdTrTQD7jZ7Fd2zpX/rzT11pPXSKDh BAaizdSUpdYBzbbPvQJQqeyKHc/iYAf0/iHitkl4TxVmMrHFAH5lUe0IQojL/2c0dlKw 34eVwcJeLvxJXpo3ITr5m4Hn0x4gCfnb5hpTEnKegRp9ZBwxqY9/NkckWJRWPRDJV7q5 dbQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554269; x=1711159069; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r3h8QUtdpv2Bkm8l3PLViSF5XzQ3nzd/ZWsA5m75Pu0=; b=vVF/j5GtNOfDSx8UhSQs/yhOyC8hC2j59/oOqt168nC9vHmnupZFwxH4NqB8zF0iKl Xh4KZA2mbzRPq9V7u8TXMXaaFq8Y6Y/tJlcga3bFTK++dOhoMiL+22rZh/9eBBTnBWTO glCakQp/D5RCiCFJLFizX3jIR9krvq5+iCJgDZo9Cqf+CQGGoVhtgx9HH+KnOqaxTE0V qPgaQ/KVcR7CV5OdDjNkhDTSU4+nrwpgAf5Mlg8JdvIvwfCDEVn1jf3abxxLkP9TPoL+ xMPOgu2XB0dWhITtHOKZdDmK3GEnKo9YmYaPTHfgFf/OV/cKpguSF5ONFE2zsUbZ6RPj 03Bw== X-Gm-Message-State: AOJu0Yx7QSUYXpoupxPfpegOldSj+gDOy0ixyAyBAZjZHkKuRksB97I1 66dm3d4j3lEbnxbpbDoC9YEE+UBbn2intxc9ZOW/rq8+IlMSpi3Xxnjl/m4Xp2UH4JHStcoVYEb T X-Google-Smtp-Source: AGHT+IE2rTUxv5BPmAqFPrYqJMHMJNyf3Fzd7ZxRv+oqlunUcrQiThcnv4gMv4vm6zdSiU6hh+DNJQ== X-Received: by 2002:a17:903:187:b0:1de:de58:2a55 with SMTP id z7-20020a170903018700b001dede582a55mr6684883plg.26.1710554269156; Fri, 15 Mar 2024 18:57:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 12/22] plugins: Remove plugin helpers Date: Fri, 15 Mar 2024 15:57:10 -1000 Message-Id: <20240316015720.3661236-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554378979100009 Content-Type: text/plain; charset="utf-8" These placeholder helpers are no longer required. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- accel/tcg/plugin-helpers.h | 5 ----- include/exec/helper-gen-common.h | 4 ---- include/exec/helper-proto-common.h | 4 ---- accel/tcg/plugin-gen.c | 20 -------------------- 4 files changed, 33 deletions(-) delete mode 100644 accel/tcg/plugin-helpers.h diff --git a/accel/tcg/plugin-helpers.h b/accel/tcg/plugin-helpers.h deleted file mode 100644 index 11796436f3..0000000000 --- a/accel/tcg/plugin-helpers.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef CONFIG_PLUGIN -DEF_HELPER_FLAGS_2(plugin_vcpu_udata_cb_no_wg, TCG_CALL_NO_WG | TCG_CALL_P= LUGIN, void, i32, ptr) -DEF_HELPER_FLAGS_2(plugin_vcpu_udata_cb_no_rwg, TCG_CALL_NO_RWG | TCG_CALL= _PLUGIN, void, i32, ptr) -DEF_HELPER_FLAGS_4(plugin_vcpu_mem_cb, TCG_CALL_NO_RWG | TCG_CALL_PLUGIN, = void, i32, i32, i64, ptr) -#endif diff --git a/include/exec/helper-gen-common.h b/include/exec/helper-gen-com= mon.h index 5d6d78a625..834590dc4e 100644 --- a/include/exec/helper-gen-common.h +++ b/include/exec/helper-gen-common.h @@ -11,8 +11,4 @@ #include "exec/helper-gen.h.inc" #undef HELPER_H =20 -#define HELPER_H "accel/tcg/plugin-helpers.h" -#include "exec/helper-gen.h.inc" -#undef HELPER_H - #endif /* HELPER_GEN_COMMON_H */ diff --git a/include/exec/helper-proto-common.h b/include/exec/helper-proto= -common.h index 8b67170a22..16782ef46c 100644 --- a/include/exec/helper-proto-common.h +++ b/include/exec/helper-proto-common.h @@ -13,8 +13,4 @@ #include "exec/helper-proto.h.inc" #undef HELPER_H =20 -#define HELPER_H "accel/tcg/plugin-helpers.h" -#include "exec/helper-proto.h.inc" -#undef HELPER_H - #endif /* HELPER_PROTO_COMMON_H */ diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index be7fd548cc..b5261edc38 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -51,11 +51,6 @@ #include "exec/exec-all.h" #include "exec/plugin-gen.h" #include "exec/translator.h" -#include "exec/helper-proto-common.h" - -#define HELPER_H "accel/tcg/plugin-helpers.h" -#include "exec/helper-info.c.inc" -#undef HELPER_H =20 #ifdef CONFIG_SOFTMMU # define CONFIG_SOFTMMU_GATE 1 @@ -88,21 +83,6 @@ enum plugin_gen_cb { PLUGIN_GEN_N_CBS, }; =20 -/* - * These helpers are stubs that get dynamically switched out for calls - * direct to the plugin if they are subscribed to. - */ -void HELPER(plugin_vcpu_udata_cb_no_wg)(uint32_t cpu_index, void *udata) -{ } - -void HELPER(plugin_vcpu_udata_cb_no_rwg)(uint32_t cpu_index, void *udata) -{ } - -void HELPER(plugin_vcpu_mem_cb)(unsigned int vcpu_index, - qemu_plugin_meminfo_t info, uint64_t vaddr, - void *userdata) -{ } - static void plugin_gen_empty_callback(enum plugin_gen_from from) { switch (from) { --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554350; cv=none; d=zohomail.com; s=zohoarc; b=Jv1wugLLh1tviTLt5XwUc+TzSXrASBS2Xd1dphswYPvIE5BRU+v0oIS+Y87j51YP4tAbJZwgRUr+6yL81qCwVcx1bjm47+VZJuk7NqPVIhLbEHIVzOSp2ilo/x2F4QyixviLqtXeDbSP9x8h8xkx496g3VT2H3BsxqSmKH6KHkA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554350; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=a4/P6RWm6w7Ud7tHYlYhwMNF/R2rr67Q03MPgnoMVeQ=; b=bx4llsTH+yYd0NAAs5gjRTLP7OmmsdG/ZA0F6ffyC5LaVgcAkGIxjTpR2TeeFjI7a72bNEs3kkdIS9wD/vfdbUfRIGyKiU4s8RVifd4NFdCH9g0kbRLRzjVOZ9sK4Lg57sAii4bdDEH8x6tJTSE2m94HebHXAWueJwWWQjQygVk= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554350258259.7087880876028; Fri, 15 Mar 2024 18:59:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJH-0002xr-F6; Fri, 15 Mar 2024 21:58:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJ4-0002ra-3g for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:54 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJ2-0000lW-G7 for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:53 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-29de4c33441so1467807a91.1 for ; Fri, 15 Mar 2024 18:57:52 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554271; x=1711159071; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=a4/P6RWm6w7Ud7tHYlYhwMNF/R2rr67Q03MPgnoMVeQ=; b=XT2cDvRcs9v1z7XDuYkT2v6GLve2SGglhG7IgEKj/bMFS0PHH/mx0qqlrpU1CD9Bs7 R+1b+c9NHcGKR2+p5NMmh8T/ZRZnB5tlTBYtO7aWTt4J/5HDumo8ROVhekSIZVZ7Duv2 LQH71ChXGhcl2TVCjBY1GCFzfvSqcpm4Cft6KvDrcbRyVm+WppHEaidxyFu+ahlktpVF w/JFzKun4DZCEJRteFUvUQJ7vAHoiF65Vi9qbzmWzMd4pHFdFA6u1C57jgxkd7QiVX7L j3ofxdOr7mmCG63TNRz2tuyVsZcVCdZYcnC0uNyRLgHIXiyLSIoE8V89hNEHLnr94xl9 C3Iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554271; x=1711159071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=a4/P6RWm6w7Ud7tHYlYhwMNF/R2rr67Q03MPgnoMVeQ=; b=jpJAZHexfk6WNN5adjRJArw5qLXdxTBw+jsKWrk4V2xKmw0YbIJhN++ZkiHD9GbVkY u1Kx8+gmZAHEXhWF5NTHlfQyt20whyQh/iHy7rKx07X4MRhlAfCPU2G8JeyFNXjCk++U dUffGUQKibYgMXeCmUDwsbHPG/DDIiI8Xkictz8i8qRxgVBZtJrrACyH/dloG19+TKNs sdhgRlCo4eNkPjz/OMX2E9XA8AsRHdmVfdKvnvq8qJ4EFiYY/Sv+Kum/mfd/KikReLoK 2qh+72tyrJy/fnadZdmcdmZA5W76nwsjY+IQYDTmNsv1jS8nXibeexJP0lCUZf5rl5ry NxBg== X-Gm-Message-State: AOJu0YwnMWe+gU/VPDd/ZYF/Sr5Ebyo53h3tCgkV04mwG8sJtIbe58D1 Ttd4VcMBr3qRxXHocZtzgQGsNSX19hb4wtYcnLxbIFnEgW7Irus6RWlaLA0xCJRa1KxPhUZ/Qgh D X-Google-Smtp-Source: AGHT+IER7hahu9Bz95UeDTFUDA/iqNGXaOLZU4ukf7dZR96GT5hLU+nWSZN1tSDCJz/uQ9125hCCgQ== X-Received: by 2002:a17:903:943:b0:1de:de26:f6b3 with SMTP id ma3-20020a170903094300b001dede26f6b3mr6499331plb.26.1710554271164; Fri, 15 Mar 2024 18:57:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 13/22] tcg: Remove TCG_CALL_PLUGIN Date: Fri, 15 Mar 2024 15:57:11 -1000 Message-Id: <20240316015720.3661236-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554350942100001 Content-Type: text/plain; charset="utf-8" Since we no longer emit plugin helpers during the initial code translation phase, we don't need to specially mark plugin helpers. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/tcg/tcg.h | 2 -- plugins/core.c | 10 ++++------ tcg/tcg.c | 4 +--- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 95a7f4d010..df66e8f012 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -353,8 +353,6 @@ typedef TCGv_ptr TCGv_env; #define TCG_CALL_NO_SIDE_EFFECTS 0x0004 /* Helper is G_NORETURN. */ #define TCG_CALL_NO_RETURN 0x0008 -/* Helper is part of Plugins. */ -#define TCG_CALL_PLUGIN 0x0010 =20 /* convenience version of most used call flags */ #define TCG_CALL_NO_RWG TCG_CALL_NO_READ_GLOBALS diff --git a/plugins/core.c b/plugins/core.c index b0a2e80874..b0615f1e7f 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -339,9 +339,8 @@ void plugin_register_dyn_cb__udata(GArray **arr, void *udata) { static TCGHelperInfo info[3] =3D { - [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG | TCG_CALL_PLUG= IN, - [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG | TCG_CALL_PLUGIN, - [QEMU_PLUGIN_CB_RW_REGS].flags =3D TCG_CALL_PLUGIN, + [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG, + [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG, /* * Match qemu_plugin_vcpu_udata_cb_t: * void (*)(uint32_t, void *) @@ -375,9 +374,8 @@ void plugin_register_vcpu_mem_cb(GArray **arr, !__builtin_types_compatible_p(qemu_plugin_meminfo_t, int32_t)); =20 static TCGHelperInfo info[3] =3D { - [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG | TCG_CALL_PLUG= IN, - [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG | TCG_CALL_PLUGIN, - [QEMU_PLUGIN_CB_RW_REGS].flags =3D TCG_CALL_PLUGIN, + [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG, + [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG, /* * Match qemu_plugin_vcpu_mem_cb_t: * void (*)(uint32_t, qemu_plugin_meminfo_t, uint64_t, void *) diff --git a/tcg/tcg.c b/tcg/tcg.c index 0bf218314b..363a065e28 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2269,9 +2269,7 @@ static void tcg_gen_callN(void *func, TCGHelperInfo *= info, =20 #ifdef CONFIG_PLUGIN /* Flag helpers that may affect guest state */ - if (tcg_ctx->plugin_insn && - !(info->flags & TCG_CALL_PLUGIN) && - !(info->flags & TCG_CALL_NO_SIDE_EFFECTS)) { + if (tcg_ctx->plugin_insn && !(info->flags & TCG_CALL_NO_SIDE_EFFECTS))= { tcg_ctx->plugin_insn->calls_helpers =3D true; } #endif --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554332; cv=none; d=zohomail.com; s=zohoarc; b=nObwOqxxDnDk1W5XYoFR+sjqoPaoDDv6C4uRK63ro5kfcLQ+iSbahvhwZw+RUx+OjEwu/ufummGs3Pk6YpzM+l55l3hmUSHKssqq6JQ4C15xXFYb1ZCFcy16haeMjXn+2jgcrf3fs0lCPiJcpYz5AoMniHpurqoZvYxcnNK2A9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554332; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pfrhB6wtiY1dRspgCcVihnqjgoTQCBAZYhtK1KymQU8=; b=fSPhMv92ETG+PY74rD5VlrHi0zlIcL3mHR718JlVk8dcZra7IX7bapiC4LH1VZLfQeFyZI1Ic+zGTMAVVwfcIIfDE5N05Ggrk9Eh0nbevJgG+cXtg/GhsAgu0ie1CasWJGvAQAL+S7lQjCFUAxJXorzqazzaGb8a/sOpAQHbWps= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554332398751.0247180093675; Fri, 15 Mar 2024 18:58:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJC-0002v5-Ej; Fri, 15 Mar 2024 21:58:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJ6-0002s5-Uh for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:59 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJ5-0000m2-5g for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:57:56 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-1dee5daa236so15052625ad.0 for ; Fri, 15 Mar 2024 18:57:54 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554273; x=1711159073; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pfrhB6wtiY1dRspgCcVihnqjgoTQCBAZYhtK1KymQU8=; b=ZDXl6Je7jGLn16nCYdR4z7RTllvyIjvsYUgmSvNxFvajUIegfVv7WS1K3IyT1GRLR0 4vbxdgm5gGq+K1JuqUpTAr8bDOEwh8CX0P2/48gcMoYyd1yCDUzsJ8kBv6J8q0+dvcJd j17DJIvvTZaG69KkbxBzULHRHSEYomgfAiqy/zYSV8nE+Q17iraTBa2sUJ5uH2PNXpVi IqOijzjNkTfsiDec/5jRZbCna1eQIdl4UaUtqm9zoakPfnR8rh5dIB7I8sLA+fyF0+qG E4vxMWGwpr2tKjnBpMA8obUg+mRMR4a/+3iKRz0wYp96Z0n6+MkgeGLSkRmDMgfHCdyY bzhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554273; x=1711159073; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pfrhB6wtiY1dRspgCcVihnqjgoTQCBAZYhtK1KymQU8=; b=eEMu38Yu0suMy4qqDrvIuTOYIy3pSO6NqKLmd0IXFfYNLoC6i79ZZ1oPkECs1fNdyO /bBBGsoTUfMlAOplqccVc0BlvwkXDTzjlo/3B3Xoz6jhIBryKP3M8VnhcoNkseqqkt/x ZwTvlamAVhFYvkMeU1f8bJ7lbwAvNSGta9+yK7w6MYgsv+P462mtsIIrZ6meIeMjmLNX bLKLJdIrFG1dH3vz2rfOOOvBYcKirgbeWImz24rtAy7YchANvQPszUtUdr8P2JP2Ae+r MV2DtS8g7VNjrWoXBhsi6gn5N3TfzyohdY76kq0/iLEzgoSR022YC0KtTWJ5Sqz01vxz aVbA== X-Gm-Message-State: AOJu0Yx126+IM7Xikvo7covqNxSrref0+40kV4fqjL1j1CWBVq17ReF5 Up2SCLVUb7/Xs8EUWD83hg/uNT7zJomlfInwyaQi29UdvLqLwqCYp+UHT6hmm8kNnS89qiFn2g7 w X-Google-Smtp-Source: AGHT+IEq9WsJg7CuaTKFZJ7C0azoW88XvhxDcoUysH22FutYdCk7rhUxe5fCUwncIkmRmUMnDdwzVw== X-Received: by 2002:a17:902:d2d0:b0:1dc:6d64:dcff with SMTP id n16-20020a170902d2d000b001dc6d64dcffmr6432966plc.37.1710554272928; Fri, 15 Mar 2024 18:57:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 14/22] tcg: Remove INDEX_op_plugin_cb_{start,end} Date: Fri, 15 Mar 2024 15:57:12 -1000 Message-Id: <20240316015720.3661236-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554333035100001 Content-Type: text/plain; charset="utf-8" These opcodes are no longer used. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-opc.h | 2 -- accel/tcg/plugin-gen.c | 18 ------------------ tcg/tcg-op.c | 10 ---------- 4 files changed, 32 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 72b80b20d0..009e2778c5 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -76,8 +76,6 @@ void tcg_gen_lookup_and_goto_ptr(void); =20 void tcg_gen_plugin_cb(unsigned from); void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminfo); -void tcg_gen_plugin_cb_start(unsigned from, unsigned type, unsigned wr); -void tcg_gen_plugin_cb_end(void); =20 /* 32 bit ops */ =20 diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index be9e36e386..546eb49c11 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -199,8 +199,6 @@ DEF(goto_ptr, 0, 1, 0, TCG_OPF_BB_EXIT | TCG_OPF_BB_END) =20 DEF(plugin_cb, 0, 0, 1, TCG_OPF_NOT_PRESENT) DEF(plugin_mem_cb, 0, 1, 1, TCG_OPF_NOT_PRESENT) -DEF(plugin_cb_start, 0, 0, 3, TCG_OPF_NOT_PRESENT) -DEF(plugin_cb_end, 0, 0, 0, TCG_OPF_NOT_PRESENT) =20 /* Replicate ld/st ops for 32 and 64-bit guest addresses. */ DEF(qemu_ld_a32_i32, 1, 1, 1, diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index b5261edc38..c8f0e0ecaa 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -58,29 +58,11 @@ # define CONFIG_SOFTMMU_GATE 0 #endif =20 -/* - * plugin_cb_start TCG op args[]: - * 0: enum plugin_gen_from - * 1: enum plugin_gen_cb - * 2: set to 1 for mem callback that is a write, 0 otherwise. - */ - enum plugin_gen_from { PLUGIN_GEN_FROM_TB, PLUGIN_GEN_FROM_INSN, PLUGIN_GEN_AFTER_INSN, PLUGIN_GEN_AFTER_TB, - PLUGIN_GEN_N_FROMS, -}; - -enum plugin_gen_cb { - PLUGIN_GEN_CB_UDATA, - PLUGIN_GEN_CB_UDATA_R, - PLUGIN_GEN_CB_INLINE, - PLUGIN_GEN_CB_MEM, - PLUGIN_GEN_ENABLE_MEM_HELPER, - PLUGIN_GEN_DISABLE_MEM_HELPER, - PLUGIN_GEN_N_CBS, }; =20 static void plugin_gen_empty_callback(enum plugin_gen_from from) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 0ae12fa49d..eff3728622 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -322,16 +322,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) tcg_gen_op2(INDEX_op_plugin_mem_cb, tcgv_i64_arg(addr), meminfo); } =20 -void tcg_gen_plugin_cb_start(unsigned from, unsigned type, unsigned wr) -{ - tcg_gen_op3(INDEX_op_plugin_cb_start, from, type, wr); -} - -void tcg_gen_plugin_cb_end(void) -{ - tcg_emit_op(INDEX_op_plugin_cb_end, 0); -} - /* 32 bit ops */ =20 void tcg_gen_discard_i32(TCGv_i32 arg) --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554409; cv=none; d=zohomail.com; s=zohoarc; b=dLuhwaybYYce/QHS8CfCRwHnfsemRT/GEgNrOS2KV8IIbqk6Qej9MUJQje/cnEyl0mMJVTmY48UbLwP8iYz79nr2VdlslCtbLipdBNugsYjJT+AOJc9kYAmtca2ljd+Csn1H9x3EHbgAOR+heUKwH/PnSh82oEb2fJnESu8efKM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554409; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1r860Fs0umWNdHdT/Kjt1p732OG4U2qCU3kOvvc/EXA=; b=SnuSXLXmNfZ2yeUEI2HwnAUPgtr8wxyC9tsDVGVvdnzSzIb/+PoymfBnmhC9HrbX4AQy172ERdpGRcN085Q/cwuNQBJmMNdN7sn9AW/yABJqrWczAy2BvotKbsV2q8l67KInrN1TP6exkVHN1bzD5JsaZGcyCQHpPj63Md4R9nA= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554409079208.53758654430146; Fri, 15 Mar 2024 19:00:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJP-00031w-7b; Fri, 15 Mar 2024 21:58:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJI-0002zB-LJ for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:10 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJ6-0000mC-2i for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:08 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-1def142ae7bso11280255ad.3 for ; Fri, 15 Mar 2024 18:57:55 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554274; x=1711159074; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1r860Fs0umWNdHdT/Kjt1p732OG4U2qCU3kOvvc/EXA=; b=C6hqQhucmvJoFsRhlkclp1wl8V7zDuNe5RZBlIi09iLbivPehlQZjvEwdKNAUTWLPy bRJQ7fKtO8qArytBULWJCiTWjX8LPG62VRPYYjcPzrkmwAbZQw3PFJbaSAMnfOWnGAe5 8GYfH0RnQSR5FAqhKBFqcTtz408MHkkLv6Om4f3zvH08OWsfv/K0a5SdylD21rcvyDTh 97jqcYYmC4wWWxwSgWaEU+1XGUbraWa25o6u7uQ7zyBMLXkzzQIxF5yeQjSiIpTtWH0P 2j6BQQT+SiUWSORWc9Wcew/Pml+V+mHi8bYCn/am9osJxaJ+SFzU6mER7W58hMG+ZxZZ PH4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554275; x=1711159075; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1r860Fs0umWNdHdT/Kjt1p732OG4U2qCU3kOvvc/EXA=; b=ESUD6caqfXdaWdrciUjKPY4DiLvdTXaKf3BK3PZyN8aQqO60Jfhftzf8ep9sG9C3qt c+mUJeioCppkcsco5XMM4jU8Swq81l6XvYVIYTusmB6yIJ7p07DHwM7o0fvC4csbzbYh 0NMfCvn6fRMngMCeBudhyc6n9hJIOF/qOdgQmFSGKFEpboj9k5ScBFn4ay7A5ctNyq89 ywWmi1GCh2eb3B82OcvLYPvIDkGeX8Ot+S8Mv7W4Djql6w0WSAt6NRW+avvIjkoiZUjM pgVXcJoVlV61bNIHK6lbUuEluio7uR1+RalIJOq62jKNuicEz4Y6AyqgQOlQR91u8M5x wGYA== X-Gm-Message-State: AOJu0YxEQY132qVmIgGk7cC2kaBwQPGuC3UjZhuEgHBvAqjMH5Cyoa75 dPME703zPeC9SZ8e322zZIiiT+kN9nE7YicPIuxvHe2t5X9gNPDIKJMqzd/RQJW6EnKr6f/3SW+ G X-Google-Smtp-Source: AGHT+IHt4Nin4peh6BI9ITOXXcJ1+cMRzSCAyoWN9iMSXq+6XbyJySGAmFzQ6RmjuFfUCkRxWeRDYQ== X-Received: by 2002:a17:902:e551:b0:1dd:c24d:4d1f with SMTP id n17-20020a170902e55100b001ddc24d4d1fmr7475289plf.67.1710554274583; Fri, 15 Mar 2024 18:57:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 15/22] plugins: Simplify callback queues Date: Fri, 15 Mar 2024 15:57:13 -1000 Message-Id: <20240316015720.3661236-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554411101100003 Content-Type: text/plain; charset="utf-8" We have qemu_plugin_dyn_cb.type to differentiate the various callback types, so we do not need to keep them in separate queues. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/qemu/plugin.h | 35 ++++++---------- accel/tcg/plugin-gen.c | 90 ++++++++++++++++++++++-------------------- plugins/api.c | 18 +++------ 3 files changed, 65 insertions(+), 78 deletions(-) diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h index ee1c1b174a..cf9758be55 100644 --- a/include/qemu/plugin.h +++ b/include/qemu/plugin.h @@ -66,15 +66,8 @@ union qemu_plugin_cb_sig { }; =20 enum plugin_dyn_cb_type { - PLUGIN_CB_INSN, - PLUGIN_CB_MEM, - PLUGIN_N_CB_TYPES, -}; - -enum plugin_dyn_cb_subtype { PLUGIN_CB_REGULAR, PLUGIN_CB_INLINE, - PLUGIN_N_CB_SUBTYPES, }; =20 /* @@ -84,7 +77,7 @@ enum plugin_dyn_cb_subtype { */ struct qemu_plugin_dyn_cb { void *userp; - enum plugin_dyn_cb_subtype type; + enum plugin_dyn_cb_type type; /* @rw applies to mem callbacks only (both regular and inline) */ enum qemu_plugin_mem_rw rw; /* fields specific to each dyn_cb type go here */ @@ -106,7 +99,8 @@ struct qemu_plugin_insn { GByteArray *data; uint64_t vaddr; void *haddr; - GArray *cbs[PLUGIN_N_CB_TYPES][PLUGIN_N_CB_SUBTYPES]; + GArray *insn_cbs; + GArray *mem_cbs; bool calls_helpers; =20 /* if set, the instruction calls helpers that might access guest memor= y */ @@ -135,16 +129,9 @@ static inline void qemu_plugin_insn_cleanup_fn(gpointe= r data) =20 static inline struct qemu_plugin_insn *qemu_plugin_insn_alloc(void) { - int i, j; struct qemu_plugin_insn *insn =3D g_new0(struct qemu_plugin_insn, 1); - insn->data =3D g_byte_array_sized_new(4); =20 - for (i =3D 0; i < PLUGIN_N_CB_TYPES; i++) { - for (j =3D 0; j < PLUGIN_N_CB_SUBTYPES; j++) { - insn->cbs[i][j] =3D g_array_new(false, false, - sizeof(struct qemu_plugin_dyn_cb= )); - } - } + insn->data =3D g_byte_array_sized_new(4); return insn; } =20 @@ -161,7 +148,7 @@ struct qemu_plugin_tb { /* if set, the TB calls helpers that might access guest memory */ bool mem_helper; =20 - GArray *cbs[PLUGIN_N_CB_SUBTYPES]; + GArray *cbs; }; =20 /** @@ -174,22 +161,22 @@ struct qemu_plugin_insn *qemu_plugin_tb_insn_get(stru= ct qemu_plugin_tb *tb, uint64_t pc) { struct qemu_plugin_insn *insn; - int i, j; =20 if (unlikely(tb->n =3D=3D tb->insns->len)) { struct qemu_plugin_insn *new_insn =3D qemu_plugin_insn_alloc(); g_ptr_array_add(tb->insns, new_insn); } + insn =3D g_ptr_array_index(tb->insns, tb->n++); g_byte_array_set_size(insn->data, 0); insn->calls_helpers =3D false; insn->mem_helper =3D false; insn->vaddr =3D pc; - - for (i =3D 0; i < PLUGIN_N_CB_TYPES; i++) { - for (j =3D 0; j < PLUGIN_N_CB_SUBTYPES; j++) { - g_array_set_size(insn->cbs[i][j], 0); - } + if (insn->insn_cbs) { + g_array_set_size(insn->insn_cbs, 0); + } + if (insn->mem_cbs) { + g_array_set_size(insn->mem_cbs, 0); } =20 return insn; diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index c8f0e0ecaa..669e343cfb 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -89,9 +89,8 @@ void plugin_gen_disable_mem_helpers(void) static void gen_enable_mem_helper(struct qemu_plugin_tb *ptb, struct qemu_plugin_insn *insn) { - GArray *cbs[2]; GArray *arr; - size_t n_cbs; + size_t len; =20 /* * Tracking memory accesses performed from helpers requires extra work. @@ -110,22 +109,25 @@ static void gen_enable_mem_helper(struct qemu_plugin_= tb *ptb, return; } =20 - cbs[0] =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_REGULAR]; - cbs[1] =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_INLINE]; - n_cbs =3D cbs[0]->len + cbs[1]->len; - - if (n_cbs =3D=3D 0) { + if (!insn->mem_cbs || !insn->mem_cbs->len) { insn->mem_helper =3D false; return; } insn->mem_helper =3D true; ptb->mem_helper =3D true; =20 + /* + * TODO: It seems like we should be able to use ref/unref + * to avoid needing to actually copy this array. + * Alternately, perhaps we could allocate new memory adjacent + * to the TranslationBlock itself, so that we do not have to + * actively manage the lifetime after this. + */ + len =3D insn->mem_cbs->len; arr =3D g_array_sized_new(false, false, - sizeof(struct qemu_plugin_dyn_cb), n_cbs); - g_array_append_vals(arr, cbs[0]->data, cbs[0]->len); - g_array_append_vals(arr, cbs[1]->data, cbs[1]->len); - + sizeof(struct qemu_plugin_dyn_cb), len); + memcpy(arr->data, insn->mem_cbs->data, + len * sizeof(struct qemu_plugin_dyn_cb)); qemu_plugin_add_dyn_cb_arr(arr); =20 tcg_gen_st_ptr(tcg_constant_ptr((intptr_t)arr), tcg_env, @@ -294,18 +296,21 @@ static void plugin_gen_inject(struct qemu_plugin_tb *= plugin_tb) case PLUGIN_GEN_FROM_TB: assert(insn =3D=3D NULL); =20 - cbs =3D plugin_tb->cbs[PLUGIN_CB_REGULAR]; + cbs =3D plugin_tb->cbs; for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { struct qemu_plugin_dyn_cb *cb =3D &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - gen_udata_cb(cb); - } =20 - cbs =3D plugin_tb->cbs[PLUGIN_CB_INLINE]; - for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { - struct qemu_plugin_dyn_cb *cb =3D - &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - gen_inline_cb(cb); + switch (cb->type) { + case PLUGIN_CB_REGULAR: + gen_udata_cb(cb); + break; + case PLUGIN_CB_INLINE: + gen_inline_cb(cb); + break; + default: + g_assert_not_reached(); + } } break; =20 @@ -314,18 +319,21 @@ static void plugin_gen_inject(struct qemu_plugin_tb *= plugin_tb) =20 gen_enable_mem_helper(plugin_tb, insn); =20 - cbs =3D insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_REGULAR]; + cbs =3D insn->insn_cbs; for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { struct qemu_plugin_dyn_cb *cb =3D &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - gen_udata_cb(cb); - } =20 - cbs =3D insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_INLINE]; - for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { - struct qemu_plugin_dyn_cb *cb =3D - &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - gen_inline_cb(cb); + switch (cb->type) { + case PLUGIN_CB_REGULAR: + gen_udata_cb(cb); + break; + case PLUGIN_CB_INLINE: + gen_inline_cb(cb); + break; + default: + g_assert_not_reached(); + } } break; =20 @@ -352,21 +360,22 @@ static void plugin_gen_inject(struct qemu_plugin_tb *= plugin_tb) =20 tcg_ctx->emit_before_op =3D op; =20 - cbs =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_REGULAR]; + cbs =3D insn->mem_cbs; for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { struct qemu_plugin_dyn_cb *cb =3D &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - if (cb->rw & rw) { - gen_mem_cb(cb, meminfo, addr); - } - } =20 - cbs =3D insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_INLINE]; - for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { - struct qemu_plugin_dyn_cb *cb =3D - &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); if (cb->rw & rw) { - gen_inline_cb(cb); + switch (cb->type) { + case PLUGIN_CB_REGULAR: + gen_mem_cb(cb, meminfo, addr); + break; + case PLUGIN_CB_INLINE: + gen_inline_cb(cb); + break; + default: + g_assert_not_reached(); + } } } =20 @@ -390,13 +399,10 @@ bool plugin_gen_tb_start(CPUState *cpu, const DisasCo= ntextBase *db, =20 if (test_bit(QEMU_PLUGIN_EV_VCPU_TB_TRANS, cpu->plugin_state->event_ma= sk)) { struct qemu_plugin_tb *ptb =3D tcg_ctx->plugin_tb; - int i; =20 /* reset callbacks */ - for (i =3D 0; i < PLUGIN_N_CB_SUBTYPES; i++) { - if (ptb->cbs[i]) { - g_array_set_size(ptb->cbs[i], 0); - } + if (ptb->cbs) { + g_array_set_size(ptb->cbs, 0); } ptb->n =3D 0; =20 diff --git a/plugins/api.c b/plugins/api.c index 29cce2d97c..3912c9cc8f 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -92,8 +92,7 @@ void qemu_plugin_register_vcpu_tb_exec_cb(struct qemu_plu= gin_tb *tb, void *udata) { if (!tb->mem_only) { - plugin_register_dyn_cb__udata(&tb->cbs[PLUGIN_CB_REGULAR], - cb, flags, udata); + plugin_register_dyn_cb__udata(&tb->cbs, cb, flags, udata); } } =20 @@ -104,8 +103,7 @@ void qemu_plugin_register_vcpu_tb_exec_inline_per_vcpu( uint64_t imm) { if (!tb->mem_only) { - plugin_register_inline_op_on_entry( - &tb->cbs[PLUGIN_CB_INLINE], 0, op, entry, imm); + plugin_register_inline_op_on_entry(&tb->cbs, 0, op, entry, imm); } } =20 @@ -115,8 +113,7 @@ void qemu_plugin_register_vcpu_insn_exec_cb(struct qemu= _plugin_insn *insn, void *udata) { if (!insn->mem_only) { - plugin_register_dyn_cb__udata( - &insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_REGULAR], cb, flags, udat= a); + plugin_register_dyn_cb__udata(&insn->insn_cbs, cb, flags, udata); } } =20 @@ -127,8 +124,7 @@ void qemu_plugin_register_vcpu_insn_exec_inline_per_vcp= u( uint64_t imm) { if (!insn->mem_only) { - plugin_register_inline_op_on_entry( - &insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_INLINE], 0, op, entry, im= m); + plugin_register_inline_op_on_entry(&insn->insn_cbs, 0, op, entry, = imm); } } =20 @@ -143,8 +139,7 @@ void qemu_plugin_register_vcpu_mem_cb(struct qemu_plugi= n_insn *insn, enum qemu_plugin_mem_rw rw, void *udata) { - plugin_register_vcpu_mem_cb(&insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_REGULA= R], - cb, flags, rw, udata); + plugin_register_vcpu_mem_cb(&insn->mem_cbs, cb, flags, rw, udata); } =20 void qemu_plugin_register_vcpu_mem_inline_per_vcpu( @@ -154,8 +149,7 @@ void qemu_plugin_register_vcpu_mem_inline_per_vcpu( qemu_plugin_u64 entry, uint64_t imm) { - plugin_register_inline_op_on_entry( - &insn->cbs[PLUGIN_CB_MEM][PLUGIN_CB_INLINE], rw, op, entry, imm); + plugin_register_inline_op_on_entry(&insn->mem_cbs, rw, op, entry, imm); } =20 void qemu_plugin_register_vcpu_tb_trans_cb(qemu_plugin_id_t id, --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554382; cv=none; d=zohomail.com; s=zohoarc; b=M9C17wFVuCXHClMkRStSxw8hIZoB8JXmrXf6EQb0a7SaMKCPQmSUEdJIg2wQ/lxANyROtmrZIvtOJc5bI2hxOdu1T2UvWNT23cegfulG2XA+iTxjjSdlUPDb4sceLiQWnRoKvSgXKPY4mgawng3QMD97HyWs3uBQnl4Nwbm47LA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554382; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wurtzFqTOAUqad7j3dN96Y1gK8V7tm4jLC9zvYbsnSw=; b=YApuyKnVF/iWHl6mpsbtfQRNLKkr2gDvdwW4/dZ4fCLkgsOBfW2LbfOQKtsWIqrYiU/GnHLZjQ+y73AGf1u+tUnB4icWX2z+UWarcQK5v4KIlviFxHc3hxuXCwf+H12XLWKb5466OiZDfZgwge97cogzy0gsypAJzkVUrasfpIo= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554382234713.7698819708427; Fri, 15 Mar 2024 18:59:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJN-00030o-Ll; Fri, 15 Mar 2024 21:58:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJD-0002x9-Rz for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:05 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJ7-0000mP-Ts for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:03 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-1dffd764036so23015ad.1 for ; Fri, 15 Mar 2024 18:57:57 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554276; x=1711159076; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wurtzFqTOAUqad7j3dN96Y1gK8V7tm4jLC9zvYbsnSw=; b=VHRSitp0PaRKdlhLXq8aAOGV3LAcwS86Wz67sYdIWE8tqaocsGwM3CpStaswWrcZ9y XjeQcFknkZV1JNzxBpPMPSyOfVXmN5wSjp5JNmqrzmswFs7WVChqAWxDxozH2xtU0aFf rz1csP/ro8BsBBeEAoZaNOUqa3HQ5KTadYdm4Avuoym0FzIOAqDEOxvN01pTfDphLFuC 7sle6AJ+6RMtVX5uxed1fqgLwhk8fOaLBy0g23b3Nb6O0+PWBlL7DrXCP5g3WOAjc1zF Uu0QpqBvRbtqlZMrZgTClc+04og5cQli9zo2ISwGa0w7YyvrB8h/jcUkLNdxAEhiZh9w CMrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554276; x=1711159076; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wurtzFqTOAUqad7j3dN96Y1gK8V7tm4jLC9zvYbsnSw=; b=KX4C8674pcYdNY/+787m8U61Jv4Pg2NaM+3LKg09ob0irKyZVTTZrykDa+tinsrVAq 47WH3PtHW1Wu+eKOhQsgvIi+Rs17jtBl92TfSE62eR0uENvI1jYy9rupiS2sbfDooKuu 5ZgV/U5H//IfcE/DDXec4stHy93EU0tjl98rIrHcL7tPb2mAygMFhFBwGR43BEsiiFgl QvHbspAwXgvWDQc7kk53FaV/abHa/ibjTkiK9dczasucbIWFNK+/9wxY9EMD4QeboSEO Mzj8iZECW/QdPoels0xcsEjidxwM9h9ep7z+in5ZUL+3R/ncQl3y4M0QVri3pkdVkP/T f0CQ== X-Gm-Message-State: AOJu0Yz9WJ6ISmZs6MXBl699ShBq1IFvztZZEehnUQ5/EWhkm5m+MgDf jSC5shZ3c30ELzPKyWiwJuFw5BMZbmSaPFmTdixPMDQDRaJrREH5wwXxqzGWDu5oyuXFZpdR8Hb 5 X-Google-Smtp-Source: AGHT+IF1sp00SJ4E7IcIZ6iIu2Moz23Xf1a0uPgz5y9WOuxzOdkq5C9ZiJF0xQPA5MCGDsdkpFUHew== X-Received: by 2002:a17:902:f68b:b0:1dc:af70:9f78 with SMTP id l11-20020a170902f68b00b001dcaf709f78mr7915128plg.46.1710554276419; Fri, 15 Mar 2024 18:57:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 16/22] plugins: Introduce PLUGIN_CB_MEM_REGULAR Date: Fri, 15 Mar 2024 15:57:14 -1000 Message-Id: <20240316015720.3661236-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554382954100001 Content-Type: text/plain; charset="utf-8" Use different enumerators for vcpu_udata and vcpu_mem callbacks. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/qemu/plugin.h | 1 + accel/tcg/plugin-gen.c | 2 +- plugins/core.c | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h index cf9758be55..34498da717 100644 --- a/include/qemu/plugin.h +++ b/include/qemu/plugin.h @@ -67,6 +67,7 @@ union qemu_plugin_cb_sig { =20 enum plugin_dyn_cb_type { PLUGIN_CB_REGULAR, + PLUGIN_CB_MEM_REGULAR, PLUGIN_CB_INLINE, }; =20 diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index 669e343cfb..6f0731b479 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -367,7 +367,7 @@ static void plugin_gen_inject(struct qemu_plugin_tb *pl= ugin_tb) =20 if (cb->rw & rw) { switch (cb->type) { - case PLUGIN_CB_REGULAR: + case PLUGIN_CB_MEM_REGULAR: gen_mem_cb(cb, meminfo, addr); break; case PLUGIN_CB_INLINE: diff --git a/plugins/core.c b/plugins/core.c index b0615f1e7f..0213513ec6 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -391,7 +391,7 @@ void plugin_register_vcpu_mem_cb(GArray **arr, =20 struct qemu_plugin_dyn_cb *dyn_cb =3D plugin_get_dyn_cb(arr); dyn_cb->userp =3D udata; - dyn_cb->type =3D PLUGIN_CB_REGULAR; + dyn_cb->type =3D PLUGIN_CB_MEM_REGULAR; dyn_cb->rw =3D rw; dyn_cb->regular.f.vcpu_mem =3D cb; =20 @@ -547,7 +547,7 @@ void qemu_plugin_vcpu_mem_cb(CPUState *cpu, uint64_t va= ddr, break; } switch (cb->type) { - case PLUGIN_CB_REGULAR: + case PLUGIN_CB_MEM_REGULAR: cb->regular.f.vcpu_mem(cpu->cpu_index, make_plugin_meminfo(oi,= rw), vaddr, cb->userp); break; --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554396; cv=none; d=zohomail.com; s=zohoarc; b=S1aZZdm53FzPQMYQP2EEDNytDc6JDYjFlJWPJfJFdR7pu3y4RKwYjD+kzBFkdzS+NzlfvcPTRNlKyd9DyMwnjhZ+l2GlHXfldd3kBDpObP+AW8/k1w6RAhIGwmXB8sy6nAG9uUC6wqS0oWCLH4FRce6CUNobYIUBNiiN3fifj0k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554396; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aXNCxUw+xNH5pFREtrweHMcItwOMy2358ghWL5eYh0A=; b=MxssTG4pjR9TMHRG7PqJTbeSVzNEVH5xUUgJkWJXhD9eY54L/Nd9i/ht5Y00Km1F2R+I+C5UUGuRmKFYiBFqiLZCaoOVc7F/s/Uq10GZ7atV6D++Y6kkZZexEXUGxfWrtJ0B3myqeScUN8ss7mDMMISZwqwwsyzRTMmpUAFjMYU= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554396981372.49403321306204; Fri, 15 Mar 2024 18:59:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJQ-00032Q-TD; Fri, 15 Mar 2024 21:58:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJE-0002xO-7W for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:05 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJ9-0000md-Rb for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:03 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1def59b537cso8376075ad.2 for ; Fri, 15 Mar 2024 18:57:59 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554278; x=1711159078; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aXNCxUw+xNH5pFREtrweHMcItwOMy2358ghWL5eYh0A=; b=VWyWNssJ4rLZ6EAcfD2JJO6Rrc+YuJA6pYt9il/iy3rtihEEeR+96ecZ5VMc/ih49W 3yHGrIox1ox1NpdsrhrmdXpzzlHsQX8nhFzkg9dIQ2Kguj8C2Feyoc+aAVRvUTUMdtmA oDRwf9RPQmJQchdTH6lFccbKBlL4c020a5rI2o53VBrg500guxg9wJCWJ8V03diV1yDA 2AkOPI8FTl7IYfkT/ZRsQuGDnd2Sq5ircz0Rmxjufwx3m/90nFpqf2CGlIC5irjrZHJ6 uz4yO1JX14/dD5I80U/nr13PwwBYf0KhFIhrJx8xtt+Xe32sYSK0VNVuXgXvYHIRfiMG a3jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554278; x=1711159078; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aXNCxUw+xNH5pFREtrweHMcItwOMy2358ghWL5eYh0A=; b=p0bfvRvfhoRyFWACeoE6svKNeChk+Ucwn/SjsZG3BF1PQLLmlIqqaNGZznrY8UcJCl 2r0//0vAVMd6AbJart7SkD2zNkLVg/3rnVT4WYZTdjGNb3sOVX1YiM7XmAzyvJSgWhin CFx3IBXTCQ+K5MnlDQTdMQolEwcLtnTfS6YMcAq2X1CvyP4PSoSIRr2TkmS+MKoM98o3 fqCAAght16zuYh+AIRw5AruNlq1HJm5T8Ur113Wer/+ZKQSL498S9OvGvkwCSEXK2iOl aSJ3OknuzA+9oby475Ay4jncujtqZApASUr4kP3D/1a2B0MF3FX+bneT6j8LilckpZQs 32kw== X-Gm-Message-State: AOJu0YyDHeyo7lO5HiiRnqNVz9i6KYOgy+9Hf96DA+eJ9USF/vtVXD/P 7YXaAaRo5wrhz6PzL7UoKyadq6jXVnyMq4idevilgOmgoOiKhbVCqQhlz+KkyL+bCSJtqGNUqca W X-Google-Smtp-Source: AGHT+IEa7/xVuz/BjBPjS7ki6yuhBcu8dAus7uMDFzYQCplrSliiYzMZn/x3ZvT9oOF0V00UjY3u3g== X-Received: by 2002:a17:902:e54c:b0:1dd:a33f:5916 with SMTP id n12-20020a170902e54c00b001dda33f5916mr5630078plf.4.1710554278476; Fri, 15 Mar 2024 18:57:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 17/22] plugins: Replace pr_ops with a proper debug dump flag Date: Fri, 15 Mar 2024 15:57:15 -1000 Message-Id: <20240316015720.3661236-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554399023100003 Content-Type: text/plain; charset="utf-8" The DEBUG_PLUGIN_GEN_OPS ifdef is replaced with "-d op_plugin". The second pr_ops call can be obtained with "-d op". Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/qemu/log.h | 1 + include/tcg/tcg.h | 1 + accel/tcg/plugin-gen.c | 68 ++++++++---------------------------------- tcg/tcg.c | 29 +++++++++++++++++- util/log.c | 4 +++ 5 files changed, 46 insertions(+), 57 deletions(-) diff --git a/include/qemu/log.h b/include/qemu/log.h index df59bfabcd..e10e24cd4f 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -36,6 +36,7 @@ bool qemu_log_separate(void); #define LOG_STRACE (1 << 19) #define LOG_PER_THREAD (1 << 20) #define CPU_LOG_TB_VPU (1 << 21) +#define LOG_TB_OP_PLUGIN (1 << 22) =20 /* Lock/unlock output. */ =20 diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index df66e8f012..753d7ca3e0 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -1065,5 +1065,6 @@ static inline const TCGOpcode *tcg_swap_vecop_list(co= nst TCGOpcode *n) } =20 bool tcg_can_emit_vecop_list(const TCGOpcode *, TCGType, unsigned); +void tcg_dump_ops(TCGContext *s, FILE *f, bool have_prefs); =20 #endif /* TCG_H */ diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index 6f0731b479..10d917abd3 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -44,6 +44,7 @@ */ #include "qemu/osdep.h" #include "qemu/plugin.h" +#include "qemu/log.h" #include "cpu.h" #include "tcg/tcg.h" #include "tcg/tcg-temp-internal.h" @@ -58,6 +59,7 @@ # define CONFIG_SOFTMMU_GATE 0 #endif =20 +/* Update plugin_from_name in tcg.c. */ enum plugin_gen_from { PLUGIN_GEN_FROM_TB, PLUGIN_GEN_FROM_INSN, @@ -192,66 +194,21 @@ static void gen_mem_cb(struct qemu_plugin_dyn_cb *cb, tcg_temp_free_i32(cpu_index); } =20 -/* #define DEBUG_PLUGIN_GEN_OPS */ -static void pr_ops(void) -{ -#ifdef DEBUG_PLUGIN_GEN_OPS - TCGOp *op; - int i =3D 0; - - QTAILQ_FOREACH(op, &tcg_ctx->ops, link) { - const char *name =3D ""; - const char *type =3D ""; - - if (op->opc =3D=3D INDEX_op_plugin_cb_start) { - switch (op->args[0]) { - case PLUGIN_GEN_FROM_TB: - name =3D "tb"; - break; - case PLUGIN_GEN_FROM_INSN: - name =3D "insn"; - break; - case PLUGIN_GEN_FROM_MEM: - name =3D "mem"; - break; - case PLUGIN_GEN_AFTER_INSN: - name =3D "after insn"; - break; - default: - break; - } - switch (op->args[1]) { - case PLUGIN_GEN_CB_UDATA: - type =3D "udata"; - break; - case PLUGIN_GEN_CB_INLINE: - type =3D "inline"; - break; - case PLUGIN_GEN_CB_MEM: - type =3D "mem"; - break; - case PLUGIN_GEN_ENABLE_MEM_HELPER: - type =3D "enable mem helper"; - break; - case PLUGIN_GEN_DISABLE_MEM_HELPER: - type =3D "disable mem helper"; - break; - default: - break; - } - } - printf("op[%2i]: %s %s %s\n", i, tcg_op_defs[op->opc].name, name, = type); - i++; - } -#endif -} - static void plugin_gen_inject(struct qemu_plugin_tb *plugin_tb) { TCGOp *op, *next; int insn_idx =3D -1; =20 - pr_ops(); + if (unlikely(qemu_loglevel_mask(LOG_TB_OP_PLUGIN) + && qemu_log_in_addr_range(plugin_tb->vaddr))) { + FILE *logfile =3D qemu_log_trylock(); + if (logfile) { + fprintf(logfile, "OP before plugin injection:\n"); + tcg_dump_ops(tcg_ctx, logfile, false); + fprintf(logfile, "\n"); + qemu_log_unlock(logfile); + } + } =20 /* * While injecting code, we cannot afford to reuse any ebb temps @@ -389,7 +346,6 @@ static void plugin_gen_inject(struct qemu_plugin_tb *pl= ugin_tb) break; } } - pr_ops(); } =20 bool plugin_gen_tb_start(CPUState *cpu, const DisasContextBase *db, diff --git a/tcg/tcg.c b/tcg/tcg.c index 363a065e28..d248c52e96 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2540,6 +2540,15 @@ static const char bswap_flag_name[][6] =3D { [TCG_BSWAP_IZ | TCG_BSWAP_OS] =3D "iz,os", }; =20 +#ifdef CONFIG_PLUGIN +static const char * const plugin_from_name[] =3D { + "from-tb", + "from-insn", + "after-insn", + "after-tb", +}; +#endif + static inline bool tcg_regset_single(TCGRegSet d) { return (d & (d - 1)) =3D=3D 0; @@ -2558,7 +2567,7 @@ static inline TCGReg tcg_regset_first(TCGRegSet d) #define ne_fprintf(...) \ ({ int ret_ =3D fprintf(__VA_ARGS__); ret_ >=3D 0 ? ret_ : 0; }) =20 -static void tcg_dump_ops(TCGContext *s, FILE *f, bool have_prefs) +void tcg_dump_ops(TCGContext *s, FILE *f, bool have_prefs) { char buf[128]; TCGOp *op; @@ -2714,6 +2723,24 @@ static void tcg_dump_ops(TCGContext *s, FILE *f, boo= l have_prefs) i =3D k =3D 1; } break; +#ifdef CONFIG_PLUGIN + case INDEX_op_plugin_cb: + { + TCGArg from =3D op->args[k++]; + const char *name =3D NULL; + + if (from < ARRAY_SIZE(plugin_from_name)) { + name =3D plugin_from_name[from]; + } + if (name) { + col +=3D ne_fprintf(f, "%s", name); + } else { + col +=3D ne_fprintf(f, "$0x%" TCG_PRIlx, from); + } + i =3D 1; + } + break; +#endif default: i =3D 0; break; diff --git a/util/log.c b/util/log.c index d36c98da0b..6219819855 100644 --- a/util/log.c +++ b/util/log.c @@ -466,6 +466,10 @@ const QEMULogItem qemu_log_items[] =3D { "show micro ops after optimization" }, { CPU_LOG_TB_OP_IND, "op_ind", "show micro ops before indirect lowering" }, +#ifdef CONFIG_PLUGIN + { LOG_TB_OP_PLUGIN, "op_plugin", + "show micro ops before plugin injection" }, +#endif { CPU_LOG_INT, "int", "show interrupts/exceptions in short format" }, { CPU_LOG_EXEC, "exec", --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554389; cv=none; d=zohomail.com; s=zohoarc; b=BSyc+RhoC9U5xDCoberTNZm4Xav6c+8owtu9xRb1MKyF56vJWBSQ2wGwmqtROHaBG1H3IRIJmll57bbRR36G2hs/vdfECSblqM7xViHO5ga0K1LiEUelCwqK8apgFGDNazSuhe1ioY9CyeWC25SyP0UFAMULQGKsC1Wf6llBvnc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554389; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6vZ2v0E2G9TI2cbvq58iFtaf/WAOAxyxcbXki0MuPsM=; b=N7SqZzHAi6mt4wcTg1+6jRrYxNTIiiA095/cgQ+p56h1Z2AFLU17u4grHKnkePnU7qio/lTBQFMlFqTdhZPwSK2ROwagbuDXPtTmeoUHcdD1qyp+2mK0DA1NVZT7fmFg5l4h4TrKyGg0kZJcI2LcT3y7GJqPTzUPc2QskG7kkeo= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554389143207.20482540624528; Fri, 15 Mar 2024 18:59:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJN-00030r-OF; Fri, 15 Mar 2024 21:58:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJE-0002xM-7W for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:05 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJB-0000n0-S7 for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:03 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-29b7caa88c6so2138075a91.0 for ; Fri, 15 Mar 2024 18:58:01 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.57.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:57:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554280; x=1711159080; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6vZ2v0E2G9TI2cbvq58iFtaf/WAOAxyxcbXki0MuPsM=; b=ELUq04eM19IBBI8w78PudLEx6js0bvZL56QiN73/cOSGSSG5n0LZztIbjhkU4qZfja A/h7mwnrYwLPnMI0b0uOgr9P6im2obwsjrZm8YXEb3MUhZVEqT5rs47d/+X9qz6eE6t/ XnTFGzrGyVVI7Ce7Q9vHV25WFHAyLoCTG701mNd41FX1bzcx5ArVi0ms42NLg/BLgEZ/ K5Hmv9Puc3i9L7QVmztjcN++6ap9v4OKG55PebdYP+6XwMnMmH1K8XNnEawHGsp06dx/ VbbnRpuhD62Uy3Us4LOb2lE2w2U07lI36Wil+A4JFStEyoaujXNk5gHc80FdV4uyvZfI wnLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554280; x=1711159080; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6vZ2v0E2G9TI2cbvq58iFtaf/WAOAxyxcbXki0MuPsM=; b=iHPRnNMS+SLa500DO42YC4VHpF/k98iBmRUx/VR1fCGl0AAdkzfmKmFQPRlH/0YQ1P J3ClOU1GLIIIVRt3c3v8O23OXuvWa73M+WBgi1dQB7+uYJPwm0lbDfROhD0Hi5CvcE3M AfY8OyYyFwGJbQeMlt4zHXHaqJWodL10A814FlGCHBEr6nne3HQ26LWLBSwjy1VB7r8C 8qXx5w1QVoqRu2LIxMB4lpMnms0yBeBYRVZunDof250FFeMDkq+GtTS6v+mc8Rjgv1yf 076z2Jji21DELWVpZIFvcLv5Ay2Mm7lR8WJCUvOZiGisuzFjoAr5E6Vp3EdKEzlakZnE n/+Q== X-Gm-Message-State: AOJu0YxBzSHyr7p/+BqyjSqBxlA0GEiztqXIav0lRYOIXL3mWS9N+1HV EpZvoEbUhkeK13A4t+aZU8GIMWl2u/qMSOkMSvdYcppD8VnWLedlHkT3p1PbNfJH/uJ9A5l3dk6 G X-Google-Smtp-Source: AGHT+IG/tcZgAvWOBK3LBZCBk/nweKj8eJ7PCS+5319GOiNpb5HYWh1qojDtO1ga4WuaKc/H5Js8OA== X-Received: by 2002:a17:903:2443:b0:1dd:7d64:8f35 with SMTP id l3-20020a170903244300b001dd7d648f35mr7444411pls.31.1710554280457; Fri, 15 Mar 2024 18:58:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 18/22] plugins: Split out common cb expanders Date: Fri, 15 Mar 2024 15:57:16 -1000 Message-Id: <20240316015720.3661236-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554391024100007 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- accel/tcg/plugin-gen.c | 84 +++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index 10d917abd3..28414c4ff1 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -194,6 +194,37 @@ static void gen_mem_cb(struct qemu_plugin_dyn_cb *cb, tcg_temp_free_i32(cpu_index); } =20 +static void inject_cb(struct qemu_plugin_dyn_cb *cb) + +{ + switch (cb->type) { + case PLUGIN_CB_REGULAR: + gen_udata_cb(cb); + break; + case PLUGIN_CB_INLINE: + gen_inline_cb(cb); + break; + default: + g_assert_not_reached(); + } +} + +static void inject_mem_cb(struct qemu_plugin_dyn_cb *cb, + enum qemu_plugin_mem_rw rw, + qemu_plugin_meminfo_t meminfo, TCGv_i64 addr) +{ + if (cb->rw & rw) { + switch (cb->type) { + case PLUGIN_CB_MEM_REGULAR: + gen_mem_cb(cb, meminfo, addr); + break; + default: + inject_cb(cb); + break; + } + } +} + static void plugin_gen_inject(struct qemu_plugin_tb *plugin_tb) { TCGOp *op, *next; @@ -255,19 +286,8 @@ static void plugin_gen_inject(struct qemu_plugin_tb *p= lugin_tb) =20 cbs =3D plugin_tb->cbs; for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { - struct qemu_plugin_dyn_cb *cb =3D - &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - - switch (cb->type) { - case PLUGIN_CB_REGULAR: - gen_udata_cb(cb); - break; - case PLUGIN_CB_INLINE: - gen_inline_cb(cb); - break; - default: - g_assert_not_reached(); - } + inject_cb( + &g_array_index(cbs, struct qemu_plugin_dyn_cb, i)); } break; =20 @@ -278,19 +298,8 @@ static void plugin_gen_inject(struct qemu_plugin_tb *p= lugin_tb) =20 cbs =3D insn->insn_cbs; for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { - struct qemu_plugin_dyn_cb *cb =3D - &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - - switch (cb->type) { - case PLUGIN_CB_REGULAR: - gen_udata_cb(cb); - break; - case PLUGIN_CB_INLINE: - gen_inline_cb(cb); - break; - default: - g_assert_not_reached(); - } + inject_cb( + &g_array_index(cbs, struct qemu_plugin_dyn_cb, i)); } break; =20 @@ -307,33 +316,22 @@ static void plugin_gen_inject(struct qemu_plugin_tb *= plugin_tb) { TCGv_i64 addr =3D temp_tcgv_i64(arg_temp(op->args[0])); qemu_plugin_meminfo_t meminfo =3D op->args[1]; + enum qemu_plugin_mem_rw rw =3D + (qemu_plugin_mem_is_store(meminfo) + ? QEMU_PLUGIN_MEM_W : QEMU_PLUGIN_MEM_R); struct qemu_plugin_insn *insn; const GArray *cbs; - int i, n, rw; + int i, n; =20 assert(insn_idx >=3D 0); insn =3D g_ptr_array_index(plugin_tb->insns, insn_idx); - rw =3D qemu_plugin_mem_is_store(meminfo) ? 2 : 1; =20 tcg_ctx->emit_before_op =3D op; =20 cbs =3D insn->mem_cbs; for (i =3D 0, n =3D (cbs ? cbs->len : 0); i < n; i++) { - struct qemu_plugin_dyn_cb *cb =3D - &g_array_index(cbs, struct qemu_plugin_dyn_cb, i); - - if (cb->rw & rw) { - switch (cb->type) { - case PLUGIN_CB_MEM_REGULAR: - gen_mem_cb(cb, meminfo, addr); - break; - case PLUGIN_CB_INLINE: - gen_inline_cb(cb); - break; - default: - g_assert_not_reached(); - } - } + inject_mem_cb(&g_array_index(cbs, struct qemu_plugin_dyn_c= b, i), + rw, meminfo, addr); } =20 tcg_ctx->emit_before_op =3D NULL; --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554335; cv=none; d=zohomail.com; s=zohoarc; b=mQy/RpF/YujX4OrCqD1cTSzz0IDAQw30JorvM4zo80AVgGF88meF8Gvjbi8qAGfIuXstGcUoqKt63MWCAFYz9keSaq2p1uX1Blvh4bg12tYspAh09VfkpXctav6qW3Iy/HgegTIH9zXfFsYYp0QJAdFuHljO3D+feh2NDSr7ZGk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554335; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XgRR5z5N9ZwHDXdf41GgZ4jwjQp2wWo1KDtmOb5J2wQ=; b=ExR1JloVgL//gT0cYJi3IDDBBEmwTqtoXEjUw+fDYsE2mFbrf0EcjGSlvQzFZ6nrRqZ4iE/tBW0nhAD42vkmv42ENsI/My0Wq9qcQiWN9yArJE/QsMWLAlCqtQedZZSKoDLOriahDKfM3hwnANeSTTPW8Kgm0UllW4fho67CSPQ= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554335013834.0716380776096; Fri, 15 Mar 2024 18:58:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJN-00030l-LV; Fri, 15 Mar 2024 21:58:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJF-0002xu-K9 for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:07 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJD-0000nL-RZ for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:05 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-1dff837d674so1595975ad.3 for ; Fri, 15 Mar 2024 18:58:03 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.58.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:58:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554282; x=1711159082; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XgRR5z5N9ZwHDXdf41GgZ4jwjQp2wWo1KDtmOb5J2wQ=; b=ONjPB90mU3KHmE03s1nE0Pvus8BiQyKxoO7QSGwgI+Or5S7p+4l4o8izlFO+/WCLjK aLEw5sefbCaOr0kMjCpTBIVgbzoQqOnt8IkEg8zrJPI94sY34K06cFUpR/TUH2WyFHrr jwDiP88cs41W38btRPMg77L1CT0GK/j/1QB7uj2soxhkeaVlFofKa5KgOq4KvwWBX6Cp t8eNk2xbSBfpyObnd3QrNMEGS8BL2OwrxGVXHHyD9rC5h++tEGBMeWpdnBzdPMbdrXnp 2fnoJbWubMrg9yS6MLv3QRWuQeqL1EjTqo6CgrDpzvNQrhyxdFKjIQRJN/i68U1tNfbk bbHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554282; x=1711159082; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XgRR5z5N9ZwHDXdf41GgZ4jwjQp2wWo1KDtmOb5J2wQ=; b=jL2WkuQyf/Nr3W4+L+HUZrp/bu25HDf/gKZ4AALrDm0+tHBtEn4et/Biwv3oYEjlNA duyDPEsnbZD5qIu3h3xrZvqixswNNwRzlfvcMTz8xw2Z8wouqUhAZg7xTFXpAUx2f8WP +K/H8objSNXt3w9HhB6qCBsHUxQkuyvYg0lzfOGrKlQoyHgOBuTTC/L07Mylf1nlOgJK Tf+xUM4nBumLLYG0i7zTTImaHA+x2IFbNlkGqMwO4TIZ3B2AIFbNiNXf8Sui7T071aoo 2yH/EwF5vAOPj8uBOi/lpDa3AljYRB0TV8qO871m4B0qLTg2OKvpsV1YVKIUFIWDh6gT ITEQ== X-Gm-Message-State: AOJu0Yxcr5skTphZkXIs8ees8DgV6WzEcoczThrGtV81vzJrV1RuHzbK I2psWmPLAKZrfpTLQb1qC5ZeChBvD/qB8YssTxlbnTMjQSg8wdV4jbCidgv+1fYD5ihOYKHavYV E X-Google-Smtp-Source: AGHT+IHXeJaFwsAGpY3IfBS/WzsVgk9xYpzzzt26ckwQQzisLZQxcs67AD+Tg9eciUKSmGfoeftrIg== X-Received: by 2002:a17:902:da8b:b0:1dd:b3e0:519d with SMTP id j11-20020a170902da8b00b001ddb3e0519dmr8072434plx.6.1710554282422; Fri, 15 Mar 2024 18:58:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 19/22] plugins: Merge qemu_plugin_tb_insn_get to plugin-gen.c Date: Fri, 15 Mar 2024 15:57:17 -1000 Message-Id: <20240316015720.3661236-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554336856100015 Content-Type: text/plain; charset="utf-8" Merge qemu_plugin_insn_alloc and qemu_plugin_tb_insn_get into plugin_gen_insn_start, since it is used nowhere else. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- include/qemu/plugin.h | 39 --------------------------------------- accel/tcg/plugin-gen.c | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 46 deletions(-) diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h index 34498da717..07b1755990 100644 --- a/include/qemu/plugin.h +++ b/include/qemu/plugin.h @@ -128,14 +128,6 @@ static inline void qemu_plugin_insn_cleanup_fn(gpointe= r data) g_byte_array_free(insn->data, true); } =20 -static inline struct qemu_plugin_insn *qemu_plugin_insn_alloc(void) -{ - struct qemu_plugin_insn *insn =3D g_new0(struct qemu_plugin_insn, 1); - - insn->data =3D g_byte_array_sized_new(4); - return insn; -} - /* Internal context for this TranslationBlock */ struct qemu_plugin_tb { GPtrArray *insns; @@ -152,37 +144,6 @@ struct qemu_plugin_tb { GArray *cbs; }; =20 -/** - * qemu_plugin_tb_insn_get(): get next plugin record for translation. - * @tb: the internal tb context - * @pc: address of instruction - */ -static inline -struct qemu_plugin_insn *qemu_plugin_tb_insn_get(struct qemu_plugin_tb *tb, - uint64_t pc) -{ - struct qemu_plugin_insn *insn; - - if (unlikely(tb->n =3D=3D tb->insns->len)) { - struct qemu_plugin_insn *new_insn =3D qemu_plugin_insn_alloc(); - g_ptr_array_add(tb->insns, new_insn); - } - - insn =3D g_ptr_array_index(tb->insns, tb->n++); - g_byte_array_set_size(insn->data, 0); - insn->calls_helpers =3D false; - insn->mem_helper =3D false; - insn->vaddr =3D pc; - if (insn->insn_cbs) { - g_array_set_size(insn->insn_cbs, 0); - } - if (insn->mem_cbs) { - g_array_set_size(insn->mem_cbs, 0); - } - - return insn; -} - /** * struct CPUPluginState - per-CPU state for plugins * @event_mask: plugin event bitmap. Modified only via async work. diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index 28414c4ff1..70914c3bf8 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -380,11 +380,34 @@ bool plugin_gen_tb_start(CPUState *cpu, const DisasCo= ntextBase *db, void plugin_gen_insn_start(CPUState *cpu, const DisasContextBase *db) { struct qemu_plugin_tb *ptb =3D tcg_ctx->plugin_tb; - struct qemu_plugin_insn *pinsn; + struct qemu_plugin_insn *insn; + size_t n =3D db->num_insns; + vaddr pc; =20 - pinsn =3D qemu_plugin_tb_insn_get(ptb, db->pc_next); - tcg_ctx->plugin_insn =3D pinsn; - plugin_gen_empty_callback(PLUGIN_GEN_FROM_INSN); + assert(n >=3D 1); + ptb->n =3D n; + if (n <=3D ptb->insns->len) { + insn =3D g_ptr_array_index(ptb->insns, n - 1); + g_byte_array_set_size(insn->data, 0); + } else { + assert(n - 1 =3D=3D ptb->insns->len); + insn =3D g_new0(struct qemu_plugin_insn, 1); + insn->data =3D g_byte_array_sized_new(4); + g_ptr_array_add(ptb->insns, insn); + } + + tcg_ctx->plugin_insn =3D insn; + insn->calls_helpers =3D false; + insn->mem_helper =3D false; + if (insn->insn_cbs) { + g_array_set_size(insn->insn_cbs, 0); + } + if (insn->mem_cbs) { + g_array_set_size(insn->mem_cbs, 0); + } + + pc =3D db->pc_next; + insn->vaddr =3D pc; =20 /* * Detect page crossing to get the new host address. @@ -392,16 +415,18 @@ void plugin_gen_insn_start(CPUState *cpu, const Disas= ContextBase *db) * fetching instructions from a region not backed by RAM. */ if (ptb->haddr1 =3D=3D NULL) { - pinsn->haddr =3D NULL; + insn->haddr =3D NULL; } else if (is_same_page(db, db->pc_next)) { - pinsn->haddr =3D ptb->haddr1 + pinsn->vaddr - ptb->vaddr; + insn->haddr =3D ptb->haddr1 + pc - ptb->vaddr; } else { if (ptb->vaddr2 =3D=3D -1) { ptb->vaddr2 =3D TARGET_PAGE_ALIGN(db->pc_first); get_page_addr_code_hostp(cpu_env(cpu), ptb->vaddr2, &ptb->hadd= r2); } - pinsn->haddr =3D ptb->haddr2 + pinsn->vaddr - ptb->vaddr2; + insn->haddr =3D ptb->haddr2 + pc - ptb->vaddr2; } + + plugin_gen_empty_callback(PLUGIN_GEN_FROM_INSN); } =20 void plugin_gen_insn_end(void) --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554475; cv=none; d=zohomail.com; s=zohoarc; b=V9RSoZ9cPZGXffC9fAdfyX2xS1ec2uYlJwKvc1QT14noktvaPHljGjhAyefP3OxWkilyUFSdZRW8TziYl9Pm5apqhM7RpTp+dEgMUOddyBDHCHvh/pBNNZhlj2ALkhOF6TfvUSw59zTby1i5rpTgTQGoTBAH4Le1VKQ9Vqtng5g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554475; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aoP+WuNen9axGI0bTk0+2XzD9h5L/3eLseZfJNUB13M=; b=bDv9jcCSySEK7UFiDk62rBt2eBz0c33VJZmVdAsx6mCpUcT8VZ/xJvbOkMNqLDOzJFT86hM9jfFKRfyNbN5AYmQ32v84HnNElHuLYlvWuIAtX0thxkDqitLtTbEQLnVfGFfIM9bX1s6ATLZ/LHthoLpKDbPs8x+B/K1PmcMX84U= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554475576890.1788618828884; Fri, 15 Mar 2024 19:01:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJO-00031O-7Q; Fri, 15 Mar 2024 21:58:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJI-0002z3-FN for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:10 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJH-0000o3-0u for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:08 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1dff837d674so1596025ad.3 for ; Fri, 15 Mar 2024 18:58:05 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.58.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:58:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554284; x=1711159084; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aoP+WuNen9axGI0bTk0+2XzD9h5L/3eLseZfJNUB13M=; b=EODOK4hMrfPN5q/pJAqlu3gQO1Hzc5cFSnd5KSkihaFh+AJUxZSMTi/JGBlna4mdOA Vis8cPk109Ad1uosVluDyGwTb/92z6cuQU2+uSkmR6K8e8TBbqTDYtvuqAMI5/+/fUxa nETIw5ZtApx1onlzPwGgB9JdqJEUALNedMB69ow0ZUdk3t+fUrcrq1cyYKcZpBhTp5Wa T3WpPoWe3jnEXsPpcqvZDoAg49H4QGQjrEsm2Zq2r1JMOyylcjUiktayfwX76m29W14E awzbc6EYptDNpzcv65yqy2cR0u/fZhnfjo7vsV3FickoUjrLQXuEEZK24F8w86VbEWJK hLPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554284; x=1711159084; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aoP+WuNen9axGI0bTk0+2XzD9h5L/3eLseZfJNUB13M=; b=mSC5Vmh4wHTnJwon8dofe24W6/LDB3szaWAf3za/zbCXhD2KoVdMN3UBNh799/0Dk5 SdfH/X7Y0iy6QllFqJI0ZA+u2w8bKyJMTW/cKZsBGdcqZvojdA4lLEgny/tO20KzTGaK gJJ+J5xY16TuhM8dcdlvCIeFHDqFF3MN/G9N9X20DpROx+QXPCyUNYKmiMSGMP5IvEpG 3g2JCMWUIZzu74/Xn44KvN6EUN2qFlPcoRl6B2FkGGS2skEP465pYjBRnpgbXkx5W56U +NymMc8yHN3bi7dccjOWUfrTLEu4M+NK86qQ24OdFxpxqfaCplG8eD+AOkCvrdOLuTeH 2FZg== X-Gm-Message-State: AOJu0YyuF+BZ7QPu+ElspUfChCoyZT0JipC4/S4HdHUXUcIb1zRPJRWH djyfPwAIzsY+FEe4M0zpoxZUoLHEmqw1SVazQWmYvOWJhAIAGXd2ZVwlCHoB3FtFMzsP3FsysBL 2 X-Google-Smtp-Source: AGHT+IGYMjuZuIyeDaBsIFtW7O135KYz2nHzxHPaFq7/YWP3Nu+jqxHxYwR+Xnjwhbkbpk8ZvfaBZg== X-Received: by 2002:a17:902:e5c1:b0:1dd:96cc:b5d1 with SMTP id u1-20020a170902e5c100b001dd96ccb5d1mr7773742plf.60.1710554284431; Fri, 15 Mar 2024 18:58:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 20/22] plugins: Move qemu_plugin_insn_cleanup_fn to tcg.c Date: Fri, 15 Mar 2024 15:57:18 -1000 Message-Id: <20240316015720.3661236-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554477272100003 Content-Type: text/plain; charset="utf-8" This is only used in one place, and usage requires an out-of-line function. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- include/qemu/plugin.h | 12 ------------ tcg/tcg.c | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h index 07b1755990..201889cbee 100644 --- a/include/qemu/plugin.h +++ b/include/qemu/plugin.h @@ -116,18 +116,6 @@ struct qemu_plugin_scoreboard { QLIST_ENTRY(qemu_plugin_scoreboard) entry; }; =20 -/* - * qemu_plugin_insn allocate and cleanup functions. We don't expect to - * cleanup many of these structures. They are reused for each fresh - * translation. - */ - -static inline void qemu_plugin_insn_cleanup_fn(gpointer data) -{ - struct qemu_plugin_insn *insn =3D (struct qemu_plugin_insn *) data; - g_byte_array_free(insn->data, true); -} - /* Internal context for this TranslationBlock */ struct qemu_plugin_tb { GPtrArray *insns; diff --git a/tcg/tcg.c b/tcg/tcg.c index d248c52e96..d7abc514c4 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -761,6 +761,18 @@ QEMU_BUILD_BUG_ON((int)(offsetof(CPUNegativeOffsetStat= e, tlb.f[0]) - < MIN_TLB_MASK_TABLE_OFS); #endif =20 +#ifdef CONFIG_PLUGIN +/* + * We don't expect to cleanup many of these structures. + * They are reused for each fresh translation. + */ +static void qemu_plugin_insn_cleanup_fn(gpointer data) +{ + struct qemu_plugin_insn *insn =3D (struct qemu_plugin_insn *) data; + g_byte_array_free(insn->data, true); +} +#endif + static void alloc_tcg_plugin_context(TCGContext *s) { #ifdef CONFIG_PLUGIN --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554354; cv=none; d=zohomail.com; s=zohoarc; b=LnNtHDEYSjzY+qdgtoTCxyLexNe8mqsUIhYCQE2PBaDx6EgIYfZhtYhIFeMiBGNlPOTnV9S87gMU0c0fpSbi34AcC2ElkGOMGcSYzeO5pTz6EXRGtMMjOHsqT3hYnYR5yQfjsOcA3B2ShvIe5WMxtkASVr9voGFlkGdffR+lDGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554354; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=T4SjKUXNEFn8jDbcremHLBaU7vP8s71moqLjJgD1MWo=; b=UBBki3ndTfyrN8P/q+qnYf4TeyzGdGkVoMtWk8IfqYDalqeCo3Rftd9AuAfUOZlY87zxqJ3e6isSsBOnodjCeJAlkxraWeS3/vIo9i1Migyb6GtQb0p9rGS3YDFrRzaAD7ot7YRubzKauDcxSKY1pNb4v1oAGINT83aI7+mbFpQ= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554354540562.666737521631; Fri, 15 Mar 2024 18:59:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJO-00031o-UO; Fri, 15 Mar 2024 21:58:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJK-0002zg-72 for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:11 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJI-0000oz-1Q for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:09 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-1def3340682so9382885ad.1 for ; Fri, 15 Mar 2024 18:58:07 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.58.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:58:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554287; x=1711159087; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T4SjKUXNEFn8jDbcremHLBaU7vP8s71moqLjJgD1MWo=; b=xzA0WqcAHeHxjLeWnIhZg/prJCBfMEv2ET1JtrkHP5YZPeah3Tq/71Husc1FUnFWym N2F+Mxeufi8y54joz/9vFarUPoK4xn/+f1sFdOg30YflAfQg5B5xzDxsSanIqZH7hxTF QTcBPPvyzvvW7YZV9r0F1mMM7jy72ifWa5zWe3j4uOl1hNK9R/G7V4zc2h9Efjo5YnDn 9mxCb/z1nWW1pDl7/9t9WH74CcxLjc1ReT8od1bQ3bAlUYBqfHWZXfCh4CAbVfVwOhDI xTk63QBkz6Gbcl8ZCTKVecks0tC5t2i0uvGgE7QcTU8RKZUrHz/rnID+LB7EMvAfVK5g lW7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554287; x=1711159087; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T4SjKUXNEFn8jDbcremHLBaU7vP8s71moqLjJgD1MWo=; b=JOPERhGsLQgxGm8Owas9HzhOr1z47Fx2b962LtwM7bi/U/LS7n9Op+yN6GzRmMg6jr C2YLya2G+8dyFDomPm2H04dZwzQUAwoqHuH2tm+NBl9pcyS6/ZNrw2VYDrW4UzAoWnXz 3CO+l6g58qWQ/GovbosQz0yiuMgEN6VQ69dbMyJuqIEhoLBNzJ5TUwAdOYFJ6U0qPiWQ c3HmHBAmW2NgQ74X+fK+7FpjoFfW8fGm+3BXm2/BQrwvOWLW07IDkl8eFxBUmxwI0kl7 PURXXL7l/M/iogfbak40tX7cfkhcOuvvOynI3gWNTt8zoZPTxO+ZaTQEXrijcba81CFk UE2A== X-Gm-Message-State: AOJu0YzHrXdvKRpZO4H/lu8dI/FAGbop4q5mODEnMNzxh3Cyye5xFU5J OpzCQuPB9CW1cq3HRpgKmJDC+gasxjQPVwh9ZVzK+ntlVHX+CCYZ4uKAXLjWz3eL54kovJPQ978 R X-Google-Smtp-Source: AGHT+IFIwvdSo7tuP3JFks4kY7xZI62itBZPyVC5EFH5PpO9hMd25d1/82zIKz6i04zm7Y2FxAaCMw== X-Received: by 2002:a17:903:1108:b0:1da:1daa:e2bd with SMTP id n8-20020a170903110800b001da1daae2bdmr8335452plh.19.1710554286810; Fri, 15 Mar 2024 18:58:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 21/22] plugins: Inline plugin_gen_empty_callback Date: Fri, 15 Mar 2024 15:57:19 -1000 Message-Id: <20240316015720.3661236-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554354919100001 Content-Type: text/plain; charset="utf-8" Each caller can use tcg_gen_plugin_cb directly. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- accel/tcg/plugin-gen.c | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index 70914c3bf8..fd52ea3987 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -67,19 +67,6 @@ enum plugin_gen_from { PLUGIN_GEN_AFTER_TB, }; =20 -static void plugin_gen_empty_callback(enum plugin_gen_from from) -{ - switch (from) { - case PLUGIN_GEN_AFTER_INSN: - case PLUGIN_GEN_FROM_TB: - case PLUGIN_GEN_FROM_INSN: - tcg_gen_plugin_cb(from); - break; - default: - g_assert_not_reached(); - } -} - /* called before finishing a TB with exit_tb, goto_tb or goto_ptr */ void plugin_gen_disable_mem_helpers(void) { @@ -369,7 +356,7 @@ bool plugin_gen_tb_start(CPUState *cpu, const DisasCont= extBase *db, ptb->mem_only =3D mem_only; ptb->mem_helper =3D false; =20 - plugin_gen_empty_callback(PLUGIN_GEN_FROM_TB); + tcg_gen_plugin_cb(PLUGIN_GEN_FROM_TB); } =20 tcg_ctx->plugin_insn =3D NULL; @@ -426,12 +413,12 @@ void plugin_gen_insn_start(CPUState *cpu, const Disas= ContextBase *db) insn->haddr =3D ptb->haddr2 + pc - ptb->vaddr2; } =20 - plugin_gen_empty_callback(PLUGIN_GEN_FROM_INSN); + tcg_gen_plugin_cb(PLUGIN_GEN_FROM_INSN); } =20 void plugin_gen_insn_end(void) { - plugin_gen_empty_callback(PLUGIN_GEN_AFTER_INSN); + tcg_gen_plugin_cb(PLUGIN_GEN_AFTER_INSN); } =20 /* --=20 2.34.1 From nobody Fri May 17 23:28:54 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=1710554391; cv=none; d=zohomail.com; s=zohoarc; b=SgZn4l074W/1L72/axILA3MeQZ0wKF0wBYnUAelExiPzcSzgkkvJrUzdO1MQhpEOjFb3kOJXmgzTaTaKRGoFUEyyDAAJE2e5A9yRYl87q2Kfj9gMym2nMF7NJ/1lFVzjFzfGlJ7r+t4fJMpmboBFJ6VKHMXjvUT60ujQeFFlovM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710554391; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=P54sXZhacQ5iITFNcA4P+H/BERfNZULzKjLOWe/9z8w=; b=XO229DdoTBGKsrxjzm2CPLOnDC0nuyV4wdMtqlim7DJr+e5ekYfbDQGmvkIegBmzahBXOj+h07fsaPWo5ZtxHIJkwq1m9hG9LpSMDs4mMujJGEkHI6hwgi2jurUPxI/gh/VMOwBnDpRbWgr9JK8g/eiKFEkqpqQoC7GO0mHrzi8= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1710554391026361.9386550848351; Fri, 15 Mar 2024 18:59:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rlJJR-00032q-PI; Fri, 15 Mar 2024 21:58:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rlJJL-00030B-UZ for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:12 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rlJJJ-0000pN-WD for qemu-devel@nongnu.org; Fri, 15 Mar 2024 21:58:11 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-1def89f0cfdso6711005ad.0 for ; Fri, 15 Mar 2024 18:58:09 -0700 (PDT) Received: from stoup.. (173-197-098-125.biz.spectrum.com. [173.197.98.125]) by smtp.gmail.com with ESMTPSA id b3-20020a170903228300b001dd42bbb08asm4592985plh.253.2024.03.15.18.58.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Mar 2024 18:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710554289; x=1711159089; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P54sXZhacQ5iITFNcA4P+H/BERfNZULzKjLOWe/9z8w=; b=RCce+MbghlQfnsVYXuGL3nKKrJKYMvSa728dbFR4Maq/W4NYQ2qpuXt4HqN2+9bzSt 64id1jF3wBOvVFjvvCqq5KE28vsNE7YiRV5rMLQDLE+sFnakirO4RHg7GDrrhIcDz4uf o4+2wc5dI/Ob89EajtoivkGB6dBKpz3rMKglThbbhe8rbnxJ58nT/aNJRgdvyCy/73fS PrwAO7llhrBs/CwNugW/5OY9b+9EsrW0xerXYUJNmgghSD4x3sXPsXCPEC+D+xcLIuZw /LCdtjdJuxNoTsYdEDm3R74Z5X0kLJK0XJs0seAn8bPB9aMRJpqh4BWkGP3cMG94T16A RmEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710554289; x=1711159089; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P54sXZhacQ5iITFNcA4P+H/BERfNZULzKjLOWe/9z8w=; b=VBp76OrTpVOlN9WBxT/DyBE+iEfKpa8+LaMMLxV3zgEe69XhypE0ZYYvD+DL1Afffe +yGobCpwDmDF8fTyJtzQ9gXyKmzzo2uiP7A3okTPIQBeU/xLua7aDNDCbgpglGHucYWJ Y/7fSRI/9HYNTvgajYwSEoOxaAIFL5DYTO7pp7dO5MTI+1KzwnrksYktdriwBQTkOjbe VXaiLWw79o+DHRMr5i0v1DfYJXvIrDt+jjhIiUix/DyzulZT0F8d9SrkhJiONij8d53b gEFi+Qz5kIZbXYHx6Z4Hw2RoYpgwIPqjGPO2RyuQWeKRrN1N3Q6igcaH8yJ/seQNS16s Aeww== X-Gm-Message-State: AOJu0YzaaBsXse/82EVklP/zG8ppeEm5E4DPt1mXep/eEZhwuswcOABu FM7FFRUAuc/pzVwZurknqZSeHrBykMpV+66XWuuV0jEA7enDPzALdEi49ETUrTd10Kg2yjWIo8M y X-Google-Smtp-Source: AGHT+IFm6GJ3YABFaWUrd6IeXAo/KIyVFO1kj9TgM8c+J0ziEmHYj8+AS/E5mFfwiUtVK2ze9YbxsQ== X-Received: by 2002:a17:902:f68b:b0:1db:cf64:7331 with SMTP id l11-20020a170902f68b00b001dbcf647331mr14824464plg.13.1710554288764; Fri, 15 Mar 2024 18:58:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: pierrick.bouvier@linaro.org, alex.bennee@linaro.org Subject: [PATCH 22/22] plugins: Update the documentation block for plugin-gen.c Date: Fri, 15 Mar 2024 15:57:20 -1000 Message-Id: <20240316015720.3661236-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240316015720.3661236-1-richard.henderson@linaro.org> References: <20240316015720.3661236-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::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1710554393011100011 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- accel/tcg/plugin-gen.c | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index fd52ea3987..c354825779 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -14,33 +14,10 @@ * Injecting the desired instrumentation could be done with a second * translation pass that combined the instrumentation requests, but that * would be ugly and inefficient since we would decode the guest code twic= e. - * Instead, during TB translation we add "empty" instrumentation calls for= all - * possible instrumentation events, and then once we collect the instrumen= tation - * requests from plugins, we either "fill in" those empty events or remove= them - * if they have no requests. - * - * When "filling in" an event we first copy the empty callback's TCG ops. = This - * might seem unnecessary, but it is done to support an arbitrary number - * of callbacks per event. Take for example a regular instruction callback. - * We first generate a callback to an empty helper function. Then, if two - * plugins register one callback each for this instruction, we make two co= pies - * of the TCG ops generated for the empty callback, substituting the funct= ion - * pointer that points to the empty helper function with the plugins' desi= red - * callback functions. After that we remove the empty callback's ops. - * - * Note that the location in TCGOp.args[] of the pointer to a helper funct= ion - * varies across different guest and host architectures. Instead of duplic= ating - * the logic that figures this out, we rely on the fact that the empty - * callbacks point to empty functions that are unique pointers in the prog= ram. - * Thus, to find the right location we just have to look for a match in - * TCGOp.args[]. This is the main reason why we first copy an empty callba= ck's - * TCG ops and then fill them in; regardless of whether we have one or many - * callbacks for that event, the logic to add all of them is the same. - * - * When generating more than one callback per event, we make a small - * optimization to avoid generating redundant operations. For instance, fo= r the - * second and all subsequent callbacks of an event, we do not need to relo= ad the - * CPU's index into a TCG temp, since the first callback did it already. + * Instead, during TB translation we add "plugin_cb" marker opcodes + * for all possible instrumentation events, and then once we collect the + * instrumentation requests from plugins, we generate code for those marke= rs + * or remove them if they have no requests. */ #include "qemu/osdep.h" #include "qemu/plugin.h" --=20 2.34.1