From nobody Fri Nov 14 23:30:41 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1762861943; cv=none; d=zohomail.com; s=zohoarc; b=isGXNnGb5AvQglszCRyRgCaddV2JBoHTcC5BaGOPS/LUYuaSg63P7SZ10cY9HcjG5dCdAR0wwuyE3rsRvPlQwEePD4okReXMXPBc/kz8SXxzA8w0mOcRv1T583NAAvqvcpQFfaHy2Q4mr+YDp92SE/cSK+YnsZz1pNUoDjNNpZ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762861943; 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=Ku4gzQekXNmP0NCrTTNTgWbZgcWQty+FiingVB4OVqg=; b=Y+Adgrs1Sf0m9hsAAQJ2SB6rBIQfXB4Cksz2lq9P1aQ3d+5hXH6XYBU1MJAwyuvwiryquLqHaiO2ygP7FTsZBuKQzes10YYcETN5aEDS6FOdhySe4P+MppGIdg47z280vn6FJEPzwutLr98R902OqPsz8RJyXSRIg23Ext3B0FI= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1762861943128313.8263633185063; Tue, 11 Nov 2025 03:52:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vImrX-0007J5-FN; Tue, 11 Nov 2025 06:48:39 -0500 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 1vImrE-0006Vi-Ey for qemu-devel@nongnu.org; Tue, 11 Nov 2025 06:48:20 -0500 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 1vImrC-0004VN-S4 for qemu-devel@nongnu.org; Tue, 11 Nov 2025 06:48:20 -0500 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-298145fe27eso25516625ad.1 for ; Tue, 11 Nov 2025 03:48:18 -0800 (PST) Received: from grind.dc1.ventanamicro.com ([179.93.21.233]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29651c747d1sm177533125ad.63.2025.11.11.03.48.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Nov 2025 03:48:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1762861697; x=1763466497; 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=Ku4gzQekXNmP0NCrTTNTgWbZgcWQty+FiingVB4OVqg=; b=Ynw6sL2ZhJ1IEL0HoB8RCgu3lqQAZZBgCDvbMMAovof+VABNuRg5LWMEp6QWGurxZN Pcxdfxa7N4WylYSEpj3xfkVOgI9xsITqatqpOlDS6X/l6wC9zseY/SSv6HO8o6FF0sZS FX2cMj6G6KaYkLMbZ9sYhs0ljeB31cqKNw2CNvWGwZ0cwMaOxYna4RVVfVNSfk0vLUjW MnIp9f4wZvfsG5XQ7i99oE6DNTTgoz/twgfGnmGfNSqlPhRArOfjkUz0zbK0gGwkvRPY w+MhEb2znpCYQpJTvPtBA+ljNX/CZ6wUM8ek8S6PzxKbx95hJfZnA5q00m3CctbSJTdN PIcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762861697; x=1763466497; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Ku4gzQekXNmP0NCrTTNTgWbZgcWQty+FiingVB4OVqg=; b=hUiwsrK+VAAp40MPh3nPcbaTpsZPGZ772AxWMuNz1vV7trJJHS8MRoFQ79nXG4bQQp Qy9oNBaNM2VdWYskqwpXfVfGjjDcM35F+Lt4hsVitZR3yGUu3VuSYDXIaRoZ/oZWtmL1 GVTIDVvNG5TwQuJAPXHPC4gfUs/sySiRhyRifAzYF/PpkGhM/1z66CGiKKD39lDTVAQF 51s0zHEcpukjkCZARrsbgnDHuFw/ge5iU0ieHispUfR+otXTcDivE2cl5OvFJZnSScru 8Tsli+OCbRwFnkt6cv60rHJH+nhL63TEKgQs5OyMEvvq0ck6Y68K9nAfJuYrUFvaPsY3 6YEg== X-Gm-Message-State: AOJu0Yyl58vL5MloIdMsykF7ZQkYm5qpKGWJxLVcdY052wdLsuZuImV6 ywJYNbEqMNeV0MNeb9/WNz6/qfrYMXmqTLhyLmgPafsJmE+S8QaD7AShiGsGGOFRZVidZCYQluh hUSsT3mA= X-Gm-Gg: ASbGncvRrgAevr+Btdqcnlyqjej9T72vV6zsJjXWPhyK6ClxKzzvnawTJ/gimu979LW IMml0moP4zYbyfS/oyuMaQsj0f6ve1JKq7cl+GiAzXbKJa+KQCEDhxiGG+5F3frmiRvso8Ey1s6 eSwbNtu5sjIT0g/eL2cCJDpbicWtoRTEKJ5SGzNgmgYXWTAPSwbR27TVyEtqx97HuZIvB2IZgNH i38QtGLlwg+E9O23SYXd7hKwcLdO/8Gps9OZCPl4Lhhjk8K3WRHXPpL/pKP6rU5rFnyYnf6dvgu GeGXdGEYxeYh4Ta6Riziu0jDrx+z57flLiUk16SJNi+ArlzusISteYUJ2DeTew9s7soK1Ez1qHO zUpVDhUDOz2ZD+ucoC3WoiGZn8TyYqWVzbg7W1Lq31LtPkQgpFnmun3BWNtfM8so3LIpVZM+E6d cCbVuJlaLWPfQR4H5iBYx/IZUpBPs= X-Google-Smtp-Source: AGHT+IH2FjSwQR7RqNkf8xLZGC4fVzSyj9wagLoOE7f/RejEJlqlwhGad4+ldZZJP4sEtTP7MHEEBw== X-Received: by 2002:a17:902:f683:b0:297:e231:f40c with SMTP id d9443c01a7336-297e562ea74mr147955615ad.19.1762861696899; Tue, 11 Nov 2025 03:48:16 -0800 (PST) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, liwei1518@gmail.com, zhiwei_liu@linux.alibaba.com, palmer@dabbelt.com, Daniel Henrique Barboza Subject: [PATCH v2 11/17] hw/riscv, target/riscv: send trace trap messages Date: Tue, 11 Nov 2025 08:46:50 -0300 Message-ID: <20251111114656.2285048-12-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.51.1 In-Reply-To: <20251111114656.2285048-1-dbarboza@ventanamicro.com> References: <20251111114656.2285048-1-dbarboza@ventanamicro.com> 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=dbarboza@ventanamicro.com; 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 autolearn=unavailable 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 @ventanamicro.com) X-ZM-MESSAGEID: 1762861945189158500 Content-Type: text/plain; charset="utf-8" Use the rv_etrace_gen_encoded_trap_msg() helper we added in the previous patch to encode trap packets to be written in the RAM sink SMEM. Signed-off-by: Daniel Henrique Barboza --- hw/riscv/trace-encoder.c | 17 +++++++++++++++++ hw/riscv/trace-encoder.h | 4 ++++ target/riscv/cpu_helper.c | 13 +++++++++++++ 3 files changed, 34 insertions(+) diff --git a/hw/riscv/trace-encoder.c b/hw/riscv/trace-encoder.c index 16c9475d46..0750bd22b5 100644 --- a/hw/riscv/trace-encoder.c +++ b/hw/riscv/trace-encoder.c @@ -403,6 +403,23 @@ void trencoder_set_first_trace_insn(Object *trencoder_= obj, uint64_t pc) trencoder_send_message_smem(trencoder, msg, msg_size); } =20 +void trencoder_trace_trap_insn(Object *trencoder_obj, + uint64_t pc, uint32_t ecause, + bool is_interrupt, + uint64_t tval) +{ + TraceEncoder *trencoder =3D TRACE_ENCODER(trencoder_obj); + TracePrivLevel priv =3D trencoder_get_curr_priv_level(trencoder); + g_autofree uint8_t *msg =3D g_malloc0(TRACE_MSG_MAX_SIZE); + uint8_t msg_size; + + msg_size =3D rv_etrace_gen_encoded_trap_msg(msg, pc, priv, + ecause, is_interrupt, + tval); + + trencoder_send_message_smem(trencoder, msg, msg_size); +} + static const Property trencoder_props[] =3D { /* * We need a link to the associated CPU to diff --git a/hw/riscv/trace-encoder.h b/hw/riscv/trace-encoder.h index cf3177aefe..4898026f2b 100644 --- a/hw/riscv/trace-encoder.h +++ b/hw/riscv/trace-encoder.h @@ -46,5 +46,9 @@ struct TraceEncoder { OBJECT_DECLARE_SIMPLE_TYPE(TraceEncoder, TRACE_ENCODER) =20 void trencoder_set_first_trace_insn(Object *trencoder_obj, uint64_t pc); +void trencoder_trace_trap_insn(Object *trencoder_obj, + uint64_t pc, uint32_t ecause, + bool is_interrupt, + uint64_t tval); =20 #endif diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index c4fb68b5de..f2990cf7c4 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -38,6 +38,10 @@ #include "pmp.h" #include "qemu/plugin.h" =20 +#ifndef CONFIG_USER_ONLY +#include "hw/riscv/trace-encoder.h" +#endif + int riscv_env_mmu_index(CPURISCVState *env, bool ifetch) { #ifdef CONFIG_USER_ONLY @@ -2285,6 +2289,15 @@ void riscv_cpu_do_interrupt(CPUState *cs) __func__, env->mhartid, async, cause, env->pc, tval, riscv_cpu_get_trap_name(cause, async)); =20 + if (cpu->trencoder) { + TraceEncoder *te =3D TRACE_ENCODER(cpu->trencoder); + + if (te->trace_running) { + trencoder_trace_trap_insn(cpu->trencoder, env->pc, + cause, async, tval); + } + } + mode =3D env->priv <=3D PRV_S && cause < 64 && (((deleg >> cause) & 1) || s_injected || vs_injected) ? PRV_S : PR= V_M; =20 --=20 2.51.1