From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103147; cv=none; d=zohomail.com; s=zohoarc; b=g0OppX4jOsV/UJV6Wc/l+ojoRD0G/hZCg62xRMcy69b+xKreVsnYEOVhpxe4cI2PMrz/lp+JpkbjupqYHFQYJppVFzIzocgdmSO0HxUwIW2KVfrKYIgETZPHJpC69/5SofwmQ0ZF5lHt2sQHCNWrbcHlQKZDhzX3X20VRyPe6u4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103147; h=Content-Type: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=mdzIsgPQp9eKCtQeem14hynixlqn9M8BuRIH/Y9ZNXw=; b=m1YMPmEGLrORWblWUtJrlXlec3i0Y4APMSWQMdUZ1jqwtyotQHAVgw35LLTGmn2tV1EqaXAvT5labfIN1+6qVEWEkL+H3b8pxq83Qolw4sej/nAdjx8cxDLbfHPp9V2o4vLIBpP+3DMKHiTKn5lCs1Zz4pq4zpglyxb0S7EKavk= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103147309953.6354311350779; Tue, 18 Aug 2026 18:32:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwV9n-0008IK-1s; Tue, 18 Aug 2026 21:31:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9l-0008I0-CM for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:53 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9j-0008C7-J8 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:53 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INlJlu1564019 for ; Wed, 19 Aug 2026 01:31:50 GMT Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfk8qt3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:31:50 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cf1c86963bso15384495ad.0 for ; Tue, 18 Aug 2026 18:31:50 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.31.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= mdzIsgPQp9eKCtQeem14hynixlqn9M8BuRIH/Y9ZNXw=; b=IW6yxSXpmHWIsR/n 4IEsRnZVwDA7X2tUwSGcPRF7Ii1mjLkPE1l+kQwuhOIPLxEXyVzRPMR/ZInbTZif kxC20HFc7u3jiFxmseFnYD+RUOI4BQsufXsCG3nfEGvpUO/IjkFeqKGafyLDrouo zj8qkd4McnFOHVS+ht7XcQkel8RM0Ac1IZU9Ly+Z0/VgHizIKGb/o1lVdrPXCF2G bfsaDb2YSsMhKJyTy0m8TC3UspiWelA3B0Ws3lHCL3SIt+k0IPGYSPaY9ILQPHud QL2qVb2jWCM6jBECWqvrh1bqnUd8A9o6mxRv32Tg2pS0lQvzRiuOzYOD/UmOlJ+b Nd+OJA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103109; x=1787707909; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=mdzIsgPQp9eKCtQeem14hynixlqn9M8BuRIH/Y9ZNXw=; b=bR32Ev1DnYWeS+0gUMxI9LKBEB0lhN/hvQyd8t1ovmbCqUvgeJYAljWDtJbZOcVCvU TocEqyWHqN+tjUdVD99PGkKFmopZ6Srb7wAJDZRYhWYXm4cmGRvJiHBdbuliZ9Hk44v+ 2OqLs87Un5qzpXGZgIbhpKR35O5iHZUnqXQE3jnS7rTJBLTBNXi5rh6M6sf95yiwQkzI UPwtfywr5U7zjpGx7xgHwPwUvA3c3emc7s8Nrh9S6Brq6KgNLkvsk4c87bfTndW4fUK+ C7p9Ccv7JzSdM4byZ9ccAiH1ENcGZCx6m2uOiu/jDBg1+PN61iBDuqug57xrCxawPzrj 0G/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103109; x=1787707909; h=content-transfer-encoding:content-type: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 :content-type; bh=mdzIsgPQp9eKCtQeem14hynixlqn9M8BuRIH/Y9ZNXw=; b=OXywteaN5z+uhU71lALDuh/4QBXCTy/aOiqQNxaUZ0t5gi/etl0sIDby+SIK4dR5DN 2aZnbYF8VyZmV2Nb+EPVJfD8IQC7i1Zi0K9hBytJwGWUUV/wT8rn37lqcrFkUbYTHFD4 TcF2Rk/ATrr1TfIKKG9yzcINdeuPUxLzuRv9VOPSSh683N06GfbbXdF1VnVoIuLFNN4+ XcZaa+Em1NCcqPnQels3sxGicLw3vbu/4mXuQtYZl5acuPXxtDHFein7gKjq9B5Sx9BK iA+naJK4efenWvocP5BWfoU7exa7ZxCPSmen8aq/+Hk77/wbfX3HnNgBIs/WVaUo+ZPo aN8w== X-Gm-Message-State: AOJu0YwX7T1qiHcYWCEH5tBtIFB0m7kxyf2CtGFJtmDYphAhG0wBuHB4 cfOk6DnVpdOzeiZGcSLX+Wqny8UK08U2zF+wiu61T0lfOqzHPd3kUVERFlw+Dqg97UhLN70J3WC SJONJLUsmyX7fEnQBthFXT7NF68F9i0QOuyySFpHyOptoFHOX8uZiuhedMHDaQglNwQ== X-Gm-Gg: AR+sD13ZAJHx4LoZwXPJnrrLgW2bUeoTV1I5kzAK6FzylvngZa4d+Ia+Xa8O/5UEwth DpU1rjhl3q35vl+uOfgk5ALb3rq0Fr+rzxyUxXoYGA3A8FtzoLy18vR886xz+bRJ3iz6fJn/bSq EnZVjJqbEM8k/5PdiazqJxJ9UVu9UTsOupJh3gUcvWAYwbpH2d0k1kwb2r7vdewrC7QKXsnGWlL vvgIi+sY+zhMcdci5t8PaZauJcNtLAZ5QrE0hFO4OsXMZh5ogyWRL5vsZMjUtC3Nzg5aX5vstn9 6U3PC2i4jV/BmwJF0Ypdt2RFdP5sdTLVDN6rB+VdMAoBnZ9yhvIs2XGNLv4T3QMHBz09+0HQEJo r7mTn9mcxbNQPvKS9CPojmjoHBD65SiNKlfhLZHOZcJLQXfWV X-Received: by 2002:a17:902:e807:b0:2ca:53f7:3c69 with SMTP id d9443c01a7336-2d5fc9be1bamr15235145ad.9.1787103109193; Tue, 18 Aug 2026 18:31:49 -0700 (PDT) X-Received: by 2002:a17:902:e807:b0:2ca:53f7:3c69 with SMTP id d9443c01a7336-2d5fc9be1bamr15234675ad.9.1787103108645; Tue, 18 Aug 2026 18:31:48 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 01/11] target/hexagon: align exceptions for user/sysemu Date: Tue, 18 Aug 2026 18:31:34 -0700 Message-Id: <20260819013144.3264096-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=PoGjqQM3 c=1 sm=1 tr=0 ts=6a850786 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=YFOaZ8uGGOB_e2P6zNAA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX9uVUE0xwm+A/ 0W/CKhCzI4e4sT0njEKxHmq4s0hfyGgf3B5a43SMl6rNRJTKzs/ArdvS5Otlw8zAdSdtXgPbp/3 f4TZ36lksyOWYhcm/M/kSxkI1rmPYHNWKzVD44JXgLxVEo9JnUP5jsFTEV9zapwzKDI5NNtAeH2 arqkJeKR7fQE3SVlpXaMXjOteH06wcy2AaVh8eczq94AMra5jIZssYH3Asf4NRZJyjTdwwHC0fD dD6F+nxqqrOK4RJP9K9roar9fktxvfFq3e95ImEUkb0ijR8q+ZnaU6QhFH+VD9c+aittp7NhJcl J2iQNUUEvR4/USoWXtXwUuJrZChLm/4H66jef61WH/VUyW46vKgwUuwBqXU4l7azpfZedX6L7Ct MZW0cABekNiYDEBpEA9O7Ms3PZRKUoh5G2clJao/jzF/eW6ZZoYtq0x1dWcSPXVnBVkzXkml46F 4Vyp5ZNNlllRdESjwAQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX5WwfWfeuu/8q bAsPWWnkBAI7sYJhdVpEuGlJIkScEYAqVzichlabVlemuqJs6erITbdtLmndQzJsqUPsz/Pl6w1 c2m6Eje/hCGohQl5dJEcL8XqFvuonz8= X-Proofpoint-GUID: 8ZgOEOCK_LGl6YWg8a_8DdCZ9PrY1N1T X-Proofpoint-ORIG-GUID: 8ZgOEOCK_LGl6YWg8a_8DdCZ9PrY1N1T X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 bulkscore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 phishscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103149396158500 System mode reports an exception as cs->exception_index =3D HEX_EVENT_* plus env->cause_code =3D HEX_CAUSE_*, but translated code in user mode put the c= ause code straight into exception_index, so cpu_loop() was decoding both forms. gen_exception_decode_fail() and the misaligned-PC check used the raw form unconditionally, so in system mode the cause code was misread as an event number. Use the {event, cause} everywhere and drop the duplicated cases from cpu_loop(), which fixes HEX_CAUSE_PRIV_USER_NO_SINSN and HEX_CAUSE_PRIV_USER_NO_GINSN. The misaligned PC is no longer zeroed on its way out either, so it reaches the signal frame as si_addr instead of whatever r31 held. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/translate.h | 2 +- linux-user/hexagon/cpu_loop.c | 30 +++++++++++------------------- target/hexagon/cpu.c | 3 ++- target/hexagon/translate.c | 27 +++++++++------------------ 4 files changed, 23 insertions(+), 39 deletions(-) diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 3c5773e2c73..00de2b0d2ec 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -330,7 +330,7 @@ extern TCGv_i32 hex_t_sreg[NUM_SREGS]; #endif =20 =20 -void hex_gen_exception_end_tb(DisasContext *ctx, int excp); +void hex_gen_exception_end_tb(DisasContext *ctx, int cause); =20 void process_store(DisasContext *ctx, int slot_num); =20 diff --git a/linux-user/hexagon/cpu_loop.c b/linux-user/hexagon/cpu_loop.c index d7f73439dbc..e4ef97a1184 100644 --- a/linux-user/hexagon/cpu_loop.c +++ b/linux-user/hexagon/cpu_loop.c @@ -66,21 +66,22 @@ void cpu_loop(CPUHexagonState *env) case HEX_CAUSE_FETCH_NO_UPAGE: case HEX_CAUSE_PRIV_NO_UREAD: case HEX_CAUSE_PRIV_NO_UWRITE: - force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR, - env->gpr[HEX_REG_PC]); - - break; + force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR, + env->gpr[HEX_REG_PC]); + break; case HEX_CAUSE_PRIV_USER_NO_GINSN: case HEX_CAUSE_PRIV_USER_NO_SINSN: case HEX_CAUSE_INVALID_PACKET: - force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, - env->gpr[HEX_REG_PC]); - break; + case HEX_CAUSE_REG_WRITE_CONFLICT: + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, + env->gpr[HEX_REG_PC]); + break; case HEX_CAUSE_MISALIGNED_LOAD: case HEX_CAUSE_MISALIGNED_STORE: - force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, - env->gpr[HEX_REG_PC]); - break; + case HEX_CAUSE_PC_NOT_ALIGNED: + force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, + env->gpr[HEX_REG_PC]); + break; default: EXCP_DUMP(env, "\nqemu: unhandled CPU precise exception " "cause code 0x%x - aborting\n", @@ -88,15 +89,6 @@ void cpu_loop(CPUHexagonState *env) exit(EXIT_FAILURE); } break; - case HEX_CAUSE_PC_NOT_ALIGNED: - force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, - env->gpr[HEX_REG_R31]); - break; - case HEX_CAUSE_INVALID_PACKET: - case HEX_CAUSE_REG_WRITE_CONFLICT: - force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, - env->gpr[HEX_REG_PC]); - break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); break; diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 7067e5b70f7..0bbefc2fb87 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -323,7 +323,8 @@ static TCGTBCPUState hexagon_get_tb_cpu_state(CPUState = *cs) hex_flags =3D FIELD_DP32(hex_flags, TB_FLAGS, IS_TIGHT_LOOP, 1); } if (pc & PCALIGN_MASK) { - hexagon_raise_exception_err(env, HEX_CAUSE_PC_NOT_ALIGNED, 0); + env->cause_code =3D HEX_CAUSE_PC_NOT_ALIGNED; + hexagon_raise_exception_err(env, HEX_EVENT_PRECISE, pc); } =20 #ifndef CONFIG_USER_ONLY diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 06a8159d283..5cfa60ca302 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -73,8 +73,8 @@ TCGv hex_vstore_pending[VSTORES_MAX]; #ifndef CONFIG_USER_ONLY TCGv_i32 hex_greg[NUM_GREGS]; TCGv_i32 hex_t_sreg[NUM_SREGS]; -TCGv_i32 hex_cause_code; #endif +static TCGv_i32 hex_cause_code; =20 static const char * const hexagon_prednames[] =3D { "p0", "p1", "p2", "p3" @@ -128,19 +128,14 @@ intptr_t ctx_tmp_vreg_off(DisasContext *ctx, int regn= um, return offset; } =20 -static void gen_exception(int excp, uint32_t PC) +static void gen_precise_exception(int cause, uint32_t PC) { - gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp), + tcg_gen_movi_i32(hex_cause_code, cause); + gen_helper_raise_exception(tcg_env, tcg_constant_i32(HEX_EVENT_PRECISE= ), tcg_constant_i32(PC)); } =20 #ifndef CONFIG_USER_ONLY -static inline void gen_precise_exception(int excp, uint32_t PC) -{ - tcg_gen_movi_i32(hex_cause_code, excp); - gen_exception(HEX_EVENT_PRECISE, PC); -} - static void gen_pcycle_counters(DisasContext *ctx) { if (ctx->pcycle_enabled) { @@ -224,14 +219,10 @@ static void gen_end_tb(DisasContext *ctx) ctx->base.is_jmp =3D DISAS_NORETURN; } =20 -void hex_gen_exception_end_tb(DisasContext *ctx, int excp) +void hex_gen_exception_end_tb(DisasContext *ctx, int cause) { gen_exec_counters(ctx); -#ifdef CONFIG_USER_ONLY - gen_exception(excp, ctx->pkt.pc); -#else - gen_precise_exception(excp, ctx->pkt.pc); -#endif + gen_precise_exception(cause, ctx->pkt.pc); ctx->base.is_jmp =3D DISAS_NORETURN; } =20 @@ -239,13 +230,13 @@ void hex_gen_exception_end_tb(DisasContext *ctx, int = excp) * Generate exception for decode failures. Unlike gen_exception_end_tb, * this is used when decode fails before ctx->next_PC is initialized. */ -static void gen_exception_decode_fail(DisasContext *ctx, int nwords, int e= xcp) +static void gen_exception_decode_fail(DisasContext *ctx, int nwords, int c= ause) { target_ulong fail_pc =3D ctx->base.pc_next + nwords * sizeof(uint32_t); =20 gen_exec_counters(ctx); tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], fail_pc); - gen_exception(excp, fail_pc); + gen_precise_exception(cause, fail_pc); ctx->base.is_jmp =3D DISAS_NORETURN; ctx->base.pc_next =3D fail_pc; } @@ -1361,9 +1352,9 @@ void hexagon_translate_init(void) offsetof(CPUHexagonState, llsc_val), "llsc_val"); hex_llsc_val_i64 =3D tcg_global_mem_new_i64(tcg_env, offsetof(CPUHexagonState, llsc_val_i64), "llsc_val_i64"); -#ifndef CONFIG_USER_ONLY hex_cause_code =3D tcg_global_mem_new_i32(tcg_env, offsetof(CPUHexagonState, cause_code), "cause_code"); +#ifndef CONFIG_USER_ONLY hex_cycle_count =3D tcg_global_mem_new_i64(tcg_env, offsetof(CPUHexagonState, t_cycle_count), "t_cycle_count"); #endif --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103169; cv=none; d=zohomail.com; s=zohoarc; b=e/xMwiK/6B4IMU2wQ6rSPrYGSTUiPnNNwTJjNEiDwbi+S+SrXZuaW/ZwlhYI1+7OwqtUDaNkVTysblsWRi2GHLurgrOGVk3Ejt7z2OvL42t3pNIkJ09g5AYqCYvA772XngaLI4ir80MtqL135uEgJ0AMhS9yDnguD68k9X78OnQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103169; h=Content-Type: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=L9WLTzAR5QQIEqa6U1cnwEpkayQKs0shsmk6gXJWIns=; b=AZTIdQucP7M2PCDZnPCgSYx0ODeh05W1QnM13U+17dEcGZrh8cpFLzW9uEmRUFKP9ruBMEhFsAUQrxeDsxItXx4yC6P/woSnl17o7TlQOZLaJF0Muinw7ZjUO9JEVHFCphf11BCt0u7ijNdd+3L2pvUkYJWh9sDTL/gcpY5bR+4= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103169886744.1316559503193; Tue, 18 Aug 2026 18:32:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwV9o-0008J8-KX; Tue, 18 Aug 2026 21:31:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9n-0008IL-5x for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:55 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9l-0008CK-Ja for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:54 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INkW3j3326029 for ; Wed, 19 Aug 2026 01:31:52 GMT Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfprq8m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:31:51 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cbb92868263so288810a12.2 for ; Tue, 18 Aug 2026 18:31:51 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.31.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:31:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= L9WLTzAR5QQIEqa6U1cnwEpkayQKs0shsmk6gXJWIns=; b=CTm5xT6bCB28xDaR bdokJ3r4q6wm6Gzap9iBBdz73vDP3LAKeO6OgJOc9RsSCHWTsJhpHEGJtDlWCmnz ES2Vp6i1+5+00544r6V/KbbP8Ka8TwgMd7F12lwpw/oaEHvvjcp3A5K0DHYs0oxX XKA49359G6VMtvCQcRxO+5QZWjKP8emzOu66mrK3KSIYUUquXFDXJ2xA+ImYschW pRZt55DYcP8IYA4toVa/g+pe/6pLwNFrwb+qMe8wIoqGq1va3KEBT9Ysk1Df8ree Kn5yJfgVzR4ilV2UHWtvmp/eKeSB2920UXvDCN6hcCDw58cnobfRcXUHrPtHtP1+ 41VMLw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103111; x=1787707911; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=L9WLTzAR5QQIEqa6U1cnwEpkayQKs0shsmk6gXJWIns=; b=AteYwJ76kEBBKrhrqEQF8eiyoJLnNHRPrph48UjUkJ3bLnHr9SIcbv4UB3W8urN65G HsQpZY+Ude2jyFOT3RhQTttsiOIIoq74MqHpFNiFihK9IVjHBTISO4bpasGBhRQxsO+4 5ZPTlose08F+BZ6yTXikOmOl3H4g7TBpsey6ybUbyQFDqVjPRxHWmtL5zKq2mBk/jvas NopDYpPw6pGvBfjH7whElZiKzPnejbDmhEC9OPaeSe8aB5gN/tYISyrh1hH0i0UlBmOe 1drpErjduEVGMNPtd/TiHYQ4e84icDGJ5rBrkrYv44+/QS7qvtylZiplgzoeIvVRvoSW c5yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103111; x=1787707911; h=content-transfer-encoding:content-type: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 :content-type; bh=L9WLTzAR5QQIEqa6U1cnwEpkayQKs0shsmk6gXJWIns=; b=myaPoEvwry3m1gg8xwlQJAFFoS9mAPQ91zGckXymD2gxFdXObYzd0EzXcka3CiM4BI 1ZJGQEcdMCFbnZJpV73ZJUr7YhU0uCDygp53tl2L0pBJn/TAHjcOEsixKiCPYa7Llhlx Y3w/mxHyBdC7/tLIeOHsxUE/g6fYN65hga1oTmqE7VGKzQZg8pd9HwEqr3G6cDqLbaiV 8TwFlhdDarLIUNn2qiTlWil48iTe0jRi4uNM4fe13romianCFtsf3fJIWbytPrLhTual 7CzKycDEmKdmuUTxIM/G/hBvMJLvEdMXDTU5dTOMu34RZggCr91Im1Ls8JA4rpQfqzXL jy5g== X-Gm-Message-State: AOJu0Yze3mxyy0k/xAHstKWJfR1hq8ZD46PFDgmVCoJU00sP1WCix4Le Atw3zy0gjtZ7EmG/zXT5JpcYpyhkKUpLUz7v5O7CIY3DtEOxHT0mNahNg3QZiwQ4LS5dceh2LHw 3ll5n0bXNYZ316mT5Ji/rctXkZ7NY+owjnncCUi+P1/L/CO1s4OkNP3Z/hAdUcomSGg== X-Gm-Gg: AR+sD126Hox3+o5gSrdtblDeXoC9W3HSPuiaq5tdOqNUBU+mGjDxn3KiFxy+86fbAZS iV4eruLOK+Xky3harOYkYWYuRjC1AcDICW6NhgXld0hjD94lVuKrlHsmLrN7H+DKDL7+tI9EL1t EnpA8n99198Opfa0UtoKXpqBM3N7/WH6pCNdmQjpykinmgPf0dY77kLDK3rKgz1rT9I87ms+cV4 xO5/u18FlaA8lz+drd9Jcvc7NiPFw3kumftLByQUqgk3TukivCU0LJdAeGdDrfKaSrOpNBoC0DA uMd8a40b/W3wwg4VCYjDESz4kQuLfS8udfbzSlZPJkvt9Y1UXDv/xm3aKyeWej9LoT4ddE8i+6j L6mV2rUvXAvTgg0fpA6SmeyjngxB8JzUtBngCi1COY5kvW+MQ X-Received: by 2002:a17:90b:1dd0:b0:395:4e0d:bc60 with SMTP id 98e67ed59e1d1-39580f3bcffmr1978345a91.9.1787103110686; Tue, 18 Aug 2026 18:31:50 -0700 (PDT) X-Received: by 2002:a17:90b:1dd0:b0:395:4e0d:bc60 with SMTP id 98e67ed59e1d1-39580f3bcffmr1978255a91.9.1787103110132; Tue, 18 Aug 2026 18:31:50 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 02/11] tests/tcg/hexagon: check priv instructions raise SIGILL Date: Tue, 18 Aug 2026 18:31:35 -0700 Message-Id: <20260819013144.3264096-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: ZYzecFk7Iv0qawZ4qoFnGK0EBHwbKDyA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfXy475dCXfyfUE cSlu8HaE6eyPqUMlpK4pzbfjImmVi3aUr0lWuzesY8fvVHEmqiVexB0eHK65d9hQBeRL2emswRe 41GVJrpiE8oNSg1QFRmZoDe7FwRHBUOiaQYy+l6nFWA2EbZPtJhA3bD+twd1geyc0i3HRtFtTAg sgOqbFHwRXo8DIWvOqaONLF0aYuoKBdYn1nAHRfXyu56KXpW6GpfsbM/+PyzfJUR+UC7gYhv0B9 Q1yVJNtrHad7f4+HdzQborxeXRET1S4HXc7HFb3B2Yr3OXMb6HhEsExpLTyY61FuRttJEqU5W+9 cOwIyK2UjEXlkfrX+UwiVf5QlzbmxHzgiBbnN58+n7OdI/n/YUyT5K8V9OqbrHLBEF7H+3FZ5b4 RpWAQ5OTAAWjGQhOCfcU2oKvyiz5iIr0SG4b8pAEHSxChnrzg5Ewy/WgHVs06mwJdgGS3bHmmku DRF/AWlJSFqztdVEjQQ== X-Authority-Analysis: v=2.4 cv=aMrAb79m c=1 sm=1 tr=0 ts=6a850787 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=brjt2USROf7zqxP8TNAA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-ORIG-GUID: ZYzecFk7Iv0qawZ4qoFnGK0EBHwbKDyA X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX91TrJPdwoRFq 8NrvbcBqCd/Cf6eqaOaSTDw6tH9vBHGhiu2cGI/FZaQEuHmtGAKDk/LzSlcWA1my55FwJDqpwLx /hwY/hswzmvgcmzqMkdCgtz1Zerw044= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 spamscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103171894158500 A_PRIV and A_GUEST instructions executed from user mode raise HEX_CAUSE_PRIV_USER_NO_SINSN and HEX_CAUSE_PRIV_USER_NO_GINSN, which aborted qemu-hexagon until the preceding patch. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- tests/tcg/hexagon/privileged-insn.c | 79 +++++++++++++++++++++++++++++ tests/tcg/hexagon/Makefile.target | 1 + 2 files changed, 80 insertions(+) create mode 100644 tests/tcg/hexagon/privileged-insn.c diff --git a/tests/tcg/hexagon/privileged-insn.c b/tests/tcg/hexagon/privil= eged-insn.c new file mode 100644 index 00000000000..306d4542ea4 --- /dev/null +++ b/tests/tcg/hexagon/privileged-insn.c @@ -0,0 +1,79 @@ +/* + * Test that privileged and guest-mode instructions raise SIGILL in user m= ode. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include +#include +#include +#include +#include +#include + +static void *resume_pc; + +static void handle_sigill(int sig, siginfo_t *info, void *puc) +{ + ucontext_t *uc =3D (ucontext_t *)puc; + + if (sig !=3D SIGILL) { + _exit(EXIT_FAILURE); + } + + uc->uc_mcontext.r0 =3D SIGILL; + uc->uc_mcontext.pc =3D (unsigned long)resume_pc; +} + +static int test_priv_insn(void) +{ + int sig; + + asm volatile( + "r0 =3D #0\n" + "r1 =3D ##1f\n" + "memw(%[pc]) =3D r1\n" + "stop(r0)\n" + "1:\n" + "%[sig] =3D r0\n" + : [sig] "=3Dr"(sig) + : [pc] "r"(&resume_pc) + : "r0", "r1", "memory"); + + return sig; +} + +static int test_guest_insn(void) +{ + int sig; + + asm volatile( + "r0 =3D #0\n" + "r1 =3D ##1f\n" + "memw(%[pc]) =3D r1\n" + "r0 =3D g0\n" + "1:\n" + "%[sig] =3D r0\n" + : [sig] "=3Dr"(sig) + : [pc] "r"(&resume_pc) + : "r0", "r1", "memory"); + + return sig; +} + +int main() +{ + struct sigaction act; + + memset(&act, 0, sizeof(act)); + act.sa_sigaction =3D handle_sigill; + act.sa_flags =3D SA_SIGINFO; + assert(sigaction(SIGILL, &act, NULL) =3D=3D 0); + + assert(test_priv_insn() =3D=3D SIGILL); + assert(test_guest_insn() =3D=3D SIGILL); + + puts("PASS"); + return EXIT_SUCCESS; +} diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile= .target index 61adf6356e4..641f6bc10e7 100644 --- a/tests/tcg/hexagon/Makefile.target +++ b/tests/tcg/hexagon/Makefile.target @@ -58,6 +58,7 @@ HEX_TESTS +=3D invalid-slots HEX_TESTS +=3D valid-slots HEX_TESTS +=3D invalid-encoding HEX_TESTS +=3D multiple-writes +HEX_TESTS +=3D privileged-insn HEX_TESTS +=3D unaligned_pc HEX_TESTS +=3D unaligned_data =20 --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103217; cv=none; d=zohomail.com; s=zohoarc; b=g0YPa9G675EDJyPHVR176jOvUW2LcJ1fmHXYNDNbwXgDJSbgbPHvngwEFwcsurHDaBKK/lKDfR4CSPRbmQR7fX73HfC69FgQMktC2UNmZ+tmL7TiOFUjK2Lr/ajtsFnJBF4v1CVZ4a/lSahO9E0toe4gRxBX0WfdOCSb5rQcJ9g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103217; h=Content-Type: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=OD/FOqXE+hJJhm6kWRnIF2G213YDoLGg95OEhWNzAcQ=; b=hRqa4V+yyKog9//u8vLQ3z9/mftYDeHdDXEPF41aKcA6M3kuRPSDfNbPS3aEXPnq9qBoPkAGUOrKYRbIqI+G81xleVNm7942V3FYrom4eMfbkiWgur8azOBl6bnyIrt6GtL7UpKqqB8sBUjVcqrj7Gk850tCx6PPvS3gZDQzzMY= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103217632406.1606370971575; Tue, 18 Aug 2026 18:33:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwV9p-0008JL-0g; Tue, 18 Aug 2026 21:31:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9o-0008Ix-5X for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:56 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9m-0008Ce-JV for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:55 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INkWed3326037 for ; Wed, 19 Aug 2026 01:31:53 GMT Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfprq8q-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:31:53 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-388b404eaa4so898752a91.0 for ; Tue, 18 Aug 2026 18:31:53 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.31.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:31:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= OD/FOqXE+hJJhm6kWRnIF2G213YDoLGg95OEhWNzAcQ=; b=NOLzZjZ5HZtStwhD QjSLzAhzuYEGTBKBl/snhEq67Dn/j8vJFW2D9QYWo2tfFgivJG2S2Nsp/IBoYA71 dsXygdGB5YFM5QG82LqvqKQ1CdPZOie/ZYaDwLGC+xEtXIHLKNjiw1DserMvA06+ xeUh4cuWjHaRKf4hf63zLtmblUVxUuSeDe/C3d3d/PHfsXZf9f24nd8pC4T/2cWB qxz28qaQuijVTJrhPTHX2M3dUz0foFN7xHKlgJgHAG+LpAXoU+SXl4dbit1VoUPN bY8GrKo+z4YwF16nQ+MVWgJHyR5udQ4Ur4RNJXgL76klaKGY4Ca23FOcP55GAM13 XMu6FA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103112; x=1787707912; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=OD/FOqXE+hJJhm6kWRnIF2G213YDoLGg95OEhWNzAcQ=; b=YmEn70SWTTXXkjkVrYE5Yx+FBem+IK0/Ku+fKYFWw85nWP9KpOEl4QQoi5dzl5V3+L sJGtu5hOFp9YdAWPo3mn5odgNOuRdFyY8vcYYHTbQxBFgpimENaev1HaCAu+QNbTn+Yy VV9CVXv7Iw7pBKOMkQC1qkPdgFM7p4SQJCNXKzDaJhVdk/c1eTdHkKusUyiHYDUTGHPm qJKsDSJqPMUteXF6sCp9MZmeLTf6sGmb39bmTUZnG/rrwmNyBlIVPrlmwS8A1y6DS0mW ikLLWE0S/r9e5oOt1ldgNNwyTfdzKnNIdBF8VZbkNVMFX+Rs/BjBDY2HrlH8X/7HoWPU 76+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103112; x=1787707912; h=content-transfer-encoding:content-type: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 :content-type; bh=OD/FOqXE+hJJhm6kWRnIF2G213YDoLGg95OEhWNzAcQ=; b=hqjKb3LTYXENBc18LIcJytWYfIkYPiB1ln0hYK+sVWJJiSZL2PQdblSuydZCSe8ng0 ZXFadsSQDYaQ7asq7I8VMOcnhiuwLU3bQKjE6VhGWVjnlvptSi+5FI0//UOCPXSRIw89 UAHCjZ9OqRGME/9pFNOZuNo4B7VKAYOCD+TQ90BOewLmvDAZT7F86EPFW0UB2NO2wsim eALWLWqu72kOfvh7MwNofwOq/oMHxFVTe760HkiTIidguPLEfXJ1+8YrnzZJ5sucNxNW xYLIMIO79i2d0g5sntg9dty2Nm7eiwvHtrnF6tIRKGO1m9YvJ0Ww99iRBKyzRPCQQTcj 4KdQ== X-Gm-Message-State: AOJu0YzFyCPlNOALD2O1ABtU8diOhkhSdxLgqMuxMSP/1rS1b2R2wYca j6ihzsPTTIIrxgUZ+kwqvpKoriBrtbJD5gwYb0L5XBY5TyB3WmEGwPNW0ZoQM/etTbtdS4VZBlF Sxep/gJvSf7NC5S9vy1ifAVk25rgKYRxKhSoAKAWUw+OYkg1CiEM2YV0E5e85Hxwbzg== X-Gm-Gg: AR+sD111O1TBUSDXeEViB7s0Lj/pFwiEus/D4AXPsBPjePCyHdW/o61HEto9+vzqm5y WbbG8B0n2Gaxm+g7bCscmi6nVKDXXljWFC+JIicG+Gnm4ftXXh2BlwRdkmbOT0/cKV9tZcdfdIV FACGTshwGWHfx0AMZuAi6VD4pTyJenMOKcF3y30blr80E5eBQbTfPHap91DtBKdoPLdbOECE4qQ CnJPHwlAssxegZCJIHztRu5iwqjcDVxTE4BbPnk81rEnq+9/uVP9slcoTCEUUyu8YnpwilkIaOE JOuvAO4NhWkIEoBrE7s2WDJQVo4bnth08Hreh921NEIOhRpbBrKDRt8V4hnAEd43SxKWNhUN0D/ CmtzaxYur+RLUxfpzSQAah7NvL74O1cO+oezyIDwcFPvImnRN X-Received: by 2002:a17:90b:5385:b0:38f:caa2:5721 with SMTP id 98e67ed59e1d1-395812a8662mr1995291a91.17.1787103112475; Tue, 18 Aug 2026 18:31:52 -0700 (PDT) X-Received: by 2002:a17:90b:5385:b0:38f:caa2:5721 with SMTP id 98e67ed59e1d1-395812a8662mr1995205a91.17.1787103111982; Tue, 18 Aug 2026 18:31:51 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier , Sid Manning Subject: [PATCH 03/11] hw/intc: clear pending bit on l2vic de-assertion Date: Tue, 18 Aug 2026 18:31:36 -0700 Message-Id: <20260819013144.3264096-4-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 5q8zc4y_Vc3RW3G5d2NTdjwUca-_d492 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX2aILZe+IPPxB dw/LXXcUy/shU6Ep521FNIpNH9l5IW2l4QkEbLqZ+uTVuYjd3aIr2R0Jy/4wp4HaOj6b8SwFGu2 PgRKL0Qb7haP1sTVLeOBIU61GTEuFIEjyI+XNpMvIRGy2aj/SjebgQKdQ5YxaADcxNcI8U4q9wr MC3hPsg11dz6rAssfCSYH638s98qwlEz9NrIF1gjYxqVDZqlRNNC1FOxgrIfTNaVWjNrIFAiR9E vBmAuiyj6fSvuoBRAjJR+BeHz6riuAyP4HECjpPU+IDgGyi1E4bbfCTQVPhh4xI7C3DjydG9cCQ Dq/2FMv3H+/ki4ZfHBtfK+6U2jmBx5MOhZ8iTlebslirVpGA1hD7IRclcxKn5GrWurbvpKU+mGD i0ZdXIknVe9UDCKJjlDnhWjUdVZIGM5VyIRUvLlGwuq3P/LJidMn+aBvY7Vn10jnbibAUifu9Mf JnCsPAI+YF39hFcIuUA== X-Authority-Analysis: v=2.4 cv=aMrAb79m c=1 sm=1 tr=0 ts=6a850789 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=Z8PlLslTYKWvlVeuNugA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: 5q8zc4y_Vc3RW3G5d2NTdjwUca-_d492 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX/z5M5mmsf6cM 0U+qQ1dDStTSSsqB0LzLvr94qWoOpJcqC4gE7m/AipCF/icxeMjYXwvk1i+ewuoL1w3seSklKXm JVM70Y5evQOGOke1b5klnzG98/NumHA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 spamscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103219752158500 From: Sid Manning l2vic_set_irq() clears a level-triggered source's pending bit on de-assertion, so a source that drops before it is latched into int_status is not spuriously re-delivered on the next ciad. Edge-triggered sources (int_type set) keep the pulse semantics they already have via SOFT_INT/set_irq(level=3D1). Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- hw/intc/hex-l2vic.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/intc/hex-l2vic.c b/hw/intc/hex-l2vic.c index f07ec850d49..a986f0bdf35 100644 --- a/hw/intc/hex-l2vic.c +++ b/hw/intc/hex-l2vic.c @@ -299,6 +299,8 @@ static void l2vic_set_irq(void *opaque, int irq, int le= vel) =20 if (level) { set_bit32(irq, s->int_pending); + } else if (!test_bit32(irq, s->int_type)) { + clear_bit32(irq, s->int_pending); } l2vic_update(s, irq); } --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103147; cv=none; d=zohomail.com; s=zohoarc; b=KPcm865dF3eM99tcuALmy6/60S6mopR0gU3DQAcYeDSjv7C3M/7NF/70aN2jg6pgpPa15rT6pRIM8dPZZXlVGLg7vx4MvRMs7UMT8zzafstVsN2sw0mD+mRGfV8K+RDD5MgmngOhUShtPo3RZOFUKJkiDLooOuu1V7Ut8kENNYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103147; h=Content-Type: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=iSJxhU8x5GMFb0ylWA8mFxaQ/6SX6EcZM6uIRo3bzdo=; b=C9nIn5FZ/dJn0W81EVop4+A2nlr/E/iOy6CB70TA+mqrNdyNou8FsJh5dWtNNcIvflHqel2UQfy90ypYa2QZ3u2coejNkg2RtdhzOEag/hGjvzc7nVnRAav8YOtp2v2NStUBOmCCCs80hwapRFUM4P17QknD6GsB3AvRKLM3R10= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103147072805.6466877329184; Tue, 18 Aug 2026 18:32:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwV9r-0008Jy-IK; Tue, 18 Aug 2026 21:31:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9p-0008Jc-VA for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:57 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9o-0008Cw-D6 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:57 -0400 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INlHMQ2604588 for ; Wed, 19 Aug 2026 01:31:55 GMT Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfjgt9t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:31:54 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2cf6acd760cso5743335ad.3 for ; Tue, 18 Aug 2026 18:31:54 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.31.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:31:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= iSJxhU8x5GMFb0ylWA8mFxaQ/6SX6EcZM6uIRo3bzdo=; b=Fvm/huNzt7SDI8U6 Hz4IU/20fEhf91Cb4dgLo2i2OsuIGv/KQ1Hsl/69V0Gu1eROt1I1mwv0ec/Mocdk dhbjggXsKX00XcrrYbraOTtvH8cMpgNeZoURXZXDej0KLTkN9t8mzM799OxX+rSJ yZbnV7NekhwJqE6+HaA5vZsUbTmd+Yi+pMtFa2HrWnjn05ZMOdb29Qi4YXSpu9rh U0H/wpvwOT7JJf/yOYIhPgcDFKQqMTjMdM0qmPXGy3hYiHmQo8sbDk5dZnT0s/K/ cMY1tNQmc+tITPnxYrwReQY1g8TO0nm503R0PwUJNCtYX+AP0RHkzvZjpqCh+ua8 BbKHqQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103114; x=1787707914; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=iSJxhU8x5GMFb0ylWA8mFxaQ/6SX6EcZM6uIRo3bzdo=; b=A2xmOEauA/oh+r2YJd/F42WcRln8xjyGSc5fI70ya68TOPFPaR/S+cCP24/J1x/vAo hx2ikiVyKW3D4FvDB/0YytR6Mu4eF5g4zXC2FtxNpBswQyejHNSO2vg0XWogczCcpUHi mxVZqG/CIUxwAlmL5+b1vJB8W8xeWTHp58sjNXjmYYNRWbgsDV0NzLpyFOwmfCzz02Df t6jDz2B3geaO7bT48bdfNgh85Nlpm2yN1Lk4WW2f2pBFB0GLH1bx7UrLrThQ8XIEpyLe lob4rxye4deHE+dpLrvf7/WPo+tAFBBDQhVru9hw5mDIY9ZwYjXHnzi1vnw9ELpcNes8 qXcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103114; x=1787707914; h=content-transfer-encoding:content-type: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 :content-type; bh=iSJxhU8x5GMFb0ylWA8mFxaQ/6SX6EcZM6uIRo3bzdo=; b=myOPxIG14InBwropZJYf7XdAe7uVCz54gHNe404GITX/1Ig06sVe8kJ5VEQNPkTlw/ t/PB6mObtT+vydj8iqAgslb64L7qexPIYzK45te/2svYm7yt2crtAImCeI1xbV2x6/6Q PZxCbUnJZurxddm0CC0Rgqae56V5W503mkvj5DQe2yz0mUgQCAy8bR2BSPLiXPtor/6H 4U0ykftCxqW3XSr2fMVyMorUNwUH1wa83zuyIHV5xxg5wWo1duWZe4PnlU8n788aTC9O YJym8EnBC05OtnVvJuZuQ/OIPy4zOutbzs9BRmIqFJvmAZfM11GqAQwWODcwHSmPNJOv lzeg== X-Gm-Message-State: AOJu0Yz2+cM6kRNg5mn/vc9EevenD4T54hm5zxwunS9PKs4OyN+J+tS+ ipVXy+FWfOkdY/5dOW1YFZKhctipa5+0offI15MPPaSzpiDnu8bpP4qq3GO5uiLsl/qSKSnPdWu 6grrGO7iZfnQW7UGtFvkti1Fdh1vlxMooQl84Sz5b4N9OB/ldpTA7uwAyfQ7WzsTdZQ== X-Gm-Gg: AR+sD11AOI6Od4POnbPf+IcpAqb8LXGiX1lYeVWNPq4uHNIQAcLdPzKqXnSeNCfbNlO u/v+SKsCgTjrTZYuLTtZRfORZ+ZoZN7JsUSvYCsc05ornlETUDRT3YFgNL+ssPGZV5KZLTVy+ty dpDQ0N5zbGgXPZauaGb0JBQKPQG1M3QTZEtjkRdc0C6rJhxirDTSB7xG/ByLwYkvyIXniF/mXED VbLuqyY08s5rSPz2vB8jtM1mM4R4o/DuxPz+Cg05RwP6x0bb7SzBw4AlRdxTVUP7R6xaaiGpRul 49CWhTwwSydhaTkuDcaPxvmjy8t0et0f4Nn527JR8ABR053y7w2HF7XSl4hrclmhqIgSQGhKWWX 9P6Jp1kIKTFiPuM24QMfN+vkwAahT3ykYrTLsvnRsD90jMWW9 X-Received: by 2002:a17:902:e802:b0:2ca:ec6f:aeca with SMTP id d9443c01a7336-2d5fd6e09a1mr16848885ad.8.1787103113925; Tue, 18 Aug 2026 18:31:53 -0700 (PDT) X-Received: by 2002:a17:902:e802:b0:2ca:ec6f:aeca with SMTP id d9443c01a7336-2d5fd6e09a1mr16848275ad.8.1787103113511; Tue, 18 Aug 2026 18:31:53 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 04/11] target/hexagon: guard writes to unimplemented guest registers Date: Tue, 18 Aug 2026 18:31:37 -0700 Message-Id: <20260819013144.3264096-5-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX8jlz+3ZFczGm 9GuToFsxh/impQveN8KmfmzGKdgW9/sVTFoSdN24SBkp+3pFDMwE5OQysVEPne/xCratmFHRz/c I7yUOPPn0ciCBaX45ET8uMo/TmqNaeoSdQKcgxENEeuVQx/mX8uvfDE9No7En/HcRHreRYbVmO1 A1zqhRRP+qZ1uG5WrB5J07Xd1MDQgXOG+83MnDbJWF1BHlayddDA7AY7b+0PX4FTF5be5BTRK6F hYuPLdTYL3Gz94SC6bIwsTAaW9H0vqUG2au+8t/PSPb4Osbd7+nBB4H5+dWiMZvjRapr1sDyqZd n1uAEVwAdOZAdnRP1OIBGvzRwm1W2eUrrA1bFxadHWmAaCgL2IpxQZx+Kzps6kZxyV7vZMM903+ 0IHCzSpIgc8w+HvlBJNTpN8v4wtxUgTkXOgXVjjoZ5UmSqg5GUWYleysKXnjeBSDNbONUA1taVS 9N8IJ3Vyl36XwzQ85yg== X-Proofpoint-GUID: C45F6VEHvyqK2Zz4t4anNUPDMPiL0tHJ X-Proofpoint-ORIG-GUID: C45F6VEHvyqK2Zz4t4anNUPDMPiL0tHJ X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX9s4msFpBm4xE nfdx4enkEYtZYuyG/kT9EA2DqXgbZ3VTDPYaxQ0IXIWY7pDCk/6k1gCb1kWusILVejk2rtkJakn BFn92pBU2soTAcXRwTHobIp4tLuEkMY= X-Authority-Analysis: v=2.4 cv=Sb7HsPRu c=1 sm=1 tr=0 ts=6a85078a cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=q6_NcmobPIDMa4dJqmQA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 bulkscore=0 impostorscore=0 adultscore=0 suspectscore=0 clxscore=1015 lowpriorityscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103149376158500 Gate guest-register writes on greg_writable() in the generated code so writes to gregs above G3 are dropped instead of dereferencing an unallocated TCG temp. Signed-off-by: Brian Cain --- target/hexagon/translate.h | 7 ++++--- target/hexagon/hex_common.py | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 00de2b0d2ec..05425d92b29 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -97,9 +97,10 @@ bool is_gather_store_insn(DisasContext *ctx); #ifndef CONFIG_USER_ONLY static inline void ctx_log_greg_write(DisasContext *ctx, int rnum) { - assert(rnum <=3D HEX_GREG_G3); - ctx->greg_log[ctx->greg_log_idx] =3D rnum; - ctx->greg_log_idx++; + if (rnum <=3D HEX_GREG_G3) { + ctx->greg_log[ctx->greg_log_idx] =3D rnum; + ctx->greg_log_idx++; + } } =20 static inline void ctx_log_greg_write_pair(DisasContext *ctx, int rnum) diff --git a/target/hexagon/hex_common.py b/target/hexagon/hex_common.py index e33d43e3ce0..c180c19b092 100755 --- a/target/hexagon/hex_common.py +++ b/target/hexagon/hex_common.py @@ -1097,11 +1097,24 @@ def analyze_write(self, f, tag, regno): """)) =20 class GuestRegister(Register): - pass + def gen_check_impl(self, f, regno): + if self.is_written(): + f.write(code_fmt(f"""\ + if (!greg_writable(insn->regno[{regno}], + {str(self.is_pair()).lower()})) {{ + return; + }} + """)) + else: + f.write(code_fmt(f"""\ + check_greg_impl(insn->regno[{regno}], + {str(self.is_pair()).lower()}); + """)) =20 class GuestDest(GuestRegister, Single, Dest): def decl_tcg(self, f, tag, regno): self.decl_reg_num(f, regno) + self.gen_check_impl(f, regno) f.write(code_fmt(f"""\ TCGv_i32 {self.reg_tcg()} =3D tcg_temp_new_i32(); """)) @@ -1121,6 +1134,7 @@ def decl_reg_num(self, f, regno): """)) def decl_tcg(self, f, tag, regno): self.decl_reg_num(f, regno) + self.gen_check_impl(f, regno) f.write(code_fmt(f"""\ TCGv_i32 {self.reg_tcg()} =3D tcg_temp_new_i32(); gen_read_greg({self.reg_tcg()}, {self.reg_num}); @@ -1131,6 +1145,7 @@ def analyze_read(self, f, regno): class GuestPairDest(GuestRegister, Pair, Dest): def decl_tcg(self, f, tag, regno): self.decl_reg_num(f, regno) + self.gen_check_impl(f, regno) f.write(code_fmt(f"""\ TCGv_i64 {self.reg_tcg()} =3D tcg_temp_new_i64(); """)) @@ -1150,6 +1165,7 @@ def decl_reg_num(self, f, regno): """)) def decl_tcg(self, f, tag, regno): self.decl_reg_num(f, regno) + self.gen_check_impl(f, regno) f.write(code_fmt(f"""\ TCGv_i64 {self.reg_tcg()} =3D tcg_temp_new_i64(); gen_read_greg_pair({self.reg_tcg()}, {self.reg_num}); --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103238; cv=none; d=zohomail.com; s=zohoarc; b=RbQwglLRxeAfzfVWkRTjRTxTxnBUKynmXNR1bQ7yu88IIsDypxtflbmZ9tIGAV7TBg29Z72VIbJ0x3a2nPT99uWp9cy8ynJr70TnZtDwigY65AysCLbC1Tci4tOXofgY2fo3OysABlWVNVtNzJ/N2W+6r/RCMsuxMZxQNe3MO4M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103238; h=Content-Type: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=0KzNKIbFN5S6XgUO3MxM9Q/AITKADiOHgMFY5MOfHHU=; b=eGJMyd0DG0Udcp7fuY5qI7vGCv72OUcD3KPkVKUm6JQg/d8ppnAQDfJsIdZSoTMT7pbzS3Rns4LLXGBzXnNqh1GK+by+pSmkDwGMvgs1sByrs3be81067MKfYMW8sNKN7pzWuNl4abxDiZClMVfdC+J3ZZdpD3tgXJO768x/ydI= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103238692547.9235876585999; Tue, 18 Aug 2026 18:33:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwV9t-0008Kb-Ga; Tue, 18 Aug 2026 21:32:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9q-0008Jq-Qi for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:58 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9p-0008D5-98 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:31:58 -0400 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INkVOJ3834615 for ; Wed, 19 Aug 2026 01:31:56 GMT Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfm0qr0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:31:55 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-8488ac68185so1240645b3a.2 for ; Tue, 18 Aug 2026 18:31:55 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.31.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:31:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 0KzNKIbFN5S6XgUO3MxM9Q/AITKADiOHgMFY5MOfHHU=; b=L5NGZPV4qD/oT8WU DkswaN3WjokQT/V9TNpeyGC4/2/VtlTzWiMR00QvhW9qzZzEObopw7J61SkykEiY a+Pu2d/MVvQX/z7ae2NGK+0sVMPVTi4x81Vm/E6WpZkE9N8YCfqDJZzVzOYnBx8R gLoqZzWeaSE+Z4f34CfD+F/qeDhn5rX0YqDB9+HG94eLuPIMyazdB4eQ1cpDNaTJ 56ZlYm1nAgShhrRdqJx8BblTvtDkx1wf0iWcMJpPCdpS5b/lh+GLSFhJv2JfJSnT AvZaFavykO2b5bWfxvAsh1gTf/5gZno/6X4vuZ/PSWmejXg8BUGMHhi64czPoXRf Bg1Uww== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103115; x=1787707915; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=0KzNKIbFN5S6XgUO3MxM9Q/AITKADiOHgMFY5MOfHHU=; b=fJpvFYiUfiCV83KhPZJHOYPWqSxJq8UPuOqOCKcEU3YE/Fk3log8X6ALQdnl5QKwij 51r2zE2mxlGEMSp5cN0PXzme4hb/hKvvP5SAGm8G164E2R4/CSYePLv6P2FhgGRQEWk3 9/kazyhg26ZaXA1ohcSFuPbFV8g6RAG8hY8Xo5W315uNaSfd1+4a9CmpMWT0+/ssJldm Nn88xNSWKlXpe0RQWlwuiLOtl7O8VX9S0z31SH2TCR3rwJPPdOhQXypvojKvTE9D86u8 qiAAZETzTnPhW7Ja0jeleGjFC/RdMO8Yo7jcemflu26re8T3b2VVTzSH/ne5H8ZnWr5H Pb6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103115; x=1787707915; h=content-transfer-encoding:content-type: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 :content-type; bh=0KzNKIbFN5S6XgUO3MxM9Q/AITKADiOHgMFY5MOfHHU=; b=AfV+SVv9G7pQdKblCI2jTUHlPabyGYR3SD6CwXmki8NTseA7VVMQChHw9/ddd67aY2 E55ogOs4veCW343wZjHFbyIcc0qST0xNbFf7y8wSa94QHT5R3fWlfa7pGqAOhETKbQ01 aCWfYxKPuO2/LfrMe187gbTqSmzCSgGQ3yawHjFXJcoKgKzlclCVCAOBxR1ov0Orw9Vv HdUhBj+LpeACkTP6tpubiKZvGGk5y97ba34c44wmOn97CiH0DfLO4tu2w/rce1BwbkSq eCeKhYaTLWgVSzP1Jr8I/SrZhBYM5tA9PZcJmbI3bvXvBbTB/ddCyjKBTNZW0Z3FCzGy w9XQ== X-Gm-Message-State: AOJu0YwS4gO0ErUud1sadvdU+Nl1Rmo1AP0cXnd46tq6wc4IiYy23Qe5 Hwijk+tPcxUdkf0NSdAhx3OiK1rcI+M9SlRw0QyCvumL2BlQNVQVTK1zXPMLz/73xW2paAwy/5x YdKLIX7gIXaSRDwfGy0HGOUKLo2WPHwkwHl50e8oTeXPMAYXCZyDrmqkrCyA7Y9ASTw== X-Gm-Gg: AR+sD10n4aAaSMVSz0iSYjNFBa8cXTOTdLSUhcrnSXZtaUwUBFG34Q46MlZTJasTbSU p7onHIJ+BuowyrZZ+2KmYSIE7oZHOHLl0vJfOoU35x+mOORXJitLFVAqnWv8oILn3gn0wyIVDS8 YN5xZGBgZ9/5MbqAxFPeGfdV3uM0M2UKIZtsC7sDvJfgSnmIUOU8cgv0WapoyyeAwIGQPrxoHXM QU99KZCtzCUkXizNjFEj+GrJX1dhygXK9qjkstfleQTagClxGbEoFlBpba3Lejp49hwMl8IJLZs kiTxjDxkJJA3ZcoAd5oCn1p5CA+5s9lQXmo+eBWKkZMgBw4f8RTqj6NuUdedf4LJG98ighAiYnb CVwA5U5q9uzBEpNvDVtiIIjMPPzsK2fPwRG+r4SkNIVFzfPEe X-Received: by 2002:a05:6a21:33a0:b0:3bf:6237:4d3f with SMTP id adf61e73a8af0-3cd012c84a2mr2125756637.18.1787103114992; Tue, 18 Aug 2026 18:31:54 -0700 (PDT) X-Received: by 2002:a05:6a21:33a0:b0:3bf:6237:4d3f with SMTP id adf61e73a8af0-3cd012c84a2mr2125672637.18.1787103114523; Tue, 18 Aug 2026 18:31:54 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 05/11] target/hexagon: take BQL when reading the system pcycle count Date: Tue, 18 Aug 2026 18:31:38 -0700 Message-Id: <20260819013144.3264096-6-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfXzjR3Abz7grHm VAGzEJkiTJ/x+aflfWNNtMrtKWqt7FYIhu2Rfnf+rgHFOwsZwnZUwTWBmzM9H4f4p/Jb9UgRkew T45EnE7yw2QNEd2t4hbsuZcjR+r2wrc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfXwo8SWSl3PDO8 jfLF5nghCCtaJ49pgbf8lhLyZNZNMOS7fb2+mjo5ckcj0Mbv0sBdhrzyexS5jw+Kq7OsaEw3MYc BgrjyA5UHYsvBaIzF7wwbDZlRidAgvUDxuenjwcgt0EON2YJNVWDbXZ02sOO5BjCVuAz6g09KiE T0opMb9SJhLV0N+yUC0vrk8IcsEz5KSP3364sYk8Lz72b4yiMJvwDSKxdOqQSywE5zL4K+HshEq S83T9Zr9fqfDqtM2dz7eUVHe6X//HFQtl0AaflDmukhsZRmlmklI0y3BZs5zmvl+VNgoicnD1be gmuTz0kZ5Qn5qSJpxGrdIhoVzm3Osu+B6PTipyKervQA5cRj78u06XT3xeyMHz63/eHS87PX9fI t99Z5HLjLi+ciAag1nAu90tLykpM6BqKd198DzwIUVGavBFnzuF2Rm0eBqK56PLzcNAvJva29Ox vGNZVF2IyyAjBR1Ia7w== X-Proofpoint-ORIG-GUID: BbGJYRDgvdJ-TvxOUKgCAmcB2Svgg2bg X-Authority-Analysis: v=2.4 cv=bN0m5v+Z c=1 sm=1 tr=0 ts=6a85078b cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=tKA3sQWDS_42iA0j-SoA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-GUID: BbGJYRDgvdJ-TvxOUKgCAmcB2Svgg2bg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 priorityscore=1501 clxscore=1015 adultscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103239653158500 hexagon_get_sys_pcycle_count() iterates all CPUs, so take the BQL with BQL_LOCK_GUARD() instead of asserting the caller already holds it. Convert the matching setters the same way, which keeps the locking contract symmetric and makes the read-modify-write in the _low/_high setters atomic. BQL_LOCK_GUARD() is a no-op when the lock is already held, so the nested guards on the guest-register read path cost nothing. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/cpu_helper.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 64c5746c6d9..649c583c0fa 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -36,7 +36,7 @@ uint64_t hexagon_get_sys_pcycle_count(CPUHexagonState *en= v) uint64_t total =3D 0; CPUState *cs; =20 - g_assert(bql_locked()); + BQL_LOCK_GUARD(); CPU_FOREACH(cs) { CPUHexagonState *thread_env =3D cpu_env(cs); total +=3D thread_env->t_cycle_count; @@ -54,11 +54,15 @@ uint32_t hexagon_get_sys_pcycle_count_low(CPUHexagonSta= te *env) return (uint32_t)(hexagon_get_sys_pcycle_count(env)); } =20 +/* + * Every function in this family takes the BQL itself, so the guard below + * holds it across the read-modify-write. Nested guards are no-ops. + */ void hexagon_set_sys_pcycle_count_high(CPUHexagonState *env, uint32_t val) { uint64_t old; =20 - g_assert(bql_locked()); + BQL_LOCK_GUARD(); old =3D hexagon_get_sys_pcycle_count(env); old =3D deposit64(old, 32, 32, val); hexagon_set_sys_pcycle_count(env, old); @@ -68,7 +72,7 @@ void hexagon_set_sys_pcycle_count_low(CPUHexagonState *en= v, uint32_t val) { uint64_t old; =20 - g_assert(bql_locked()); + BQL_LOCK_GUARD(); old =3D hexagon_get_sys_pcycle_count(env); old =3D deposit64(old, 0, 32, val); hexagon_set_sys_pcycle_count(env, old); @@ -81,7 +85,7 @@ void hexagon_set_sys_pcycle_count(CPUHexagonState *env, u= int64_t val) int num_threads; int64_t delta, per_thread, remainder; =20 - g_assert(bql_locked()); + BQL_LOCK_GUARD(); total =3D hexagon_get_sys_pcycle_count(env); =20 /* Count active threads */ --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103160; cv=none; d=zohomail.com; s=zohoarc; b=SL/xtsnhQKzVXdGpgDTFxm51UF8hlKf/rRS2vZsEqCjKsJMU3Ho0XZtqLxODZjOdug34+gIASO/rBuTOtxlRQnPU0cBcNx95pl37CKgVpzAuF56Hs6LIe0So3jsNjH4UBCAHfOCuyUmLf/2Nsf2fxgFBQC0A0/6uxsRcHjdhLKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103160; h=Content-Type: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=2htJV3Qn9nRSsGNPzVxPWrsaM+ncItU2iqHptaT2vP4=; b=Z9PjPxK6zyZVMBtaC9DSBNFedcCwtkHpLUN9ZA/U+H5J4c/EEUlUm2qn1TNU/bc8uWhVE79zOnYItRVTs9ZlMsPzOIbU6lAwurfrTGcnokYC24in2yr9OZfoQaqMpfeyy1LwKDtAVRzZDiyO906KLdn384Uy2FjOowrU5YHiW7Y= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103159887523.4077306344674; Tue, 18 Aug 2026 18:32:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwV9t-0008Kr-Tp; Tue, 18 Aug 2026 21:32:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9s-0008KJ-Dw for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:00 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9q-0008DI-V1 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:00 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INkULC3326000 for ; Wed, 19 Aug 2026 01:31:57 GMT Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfprq8x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:31:57 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38dc085b0a7so1136736a91.2 for ; Tue, 18 Aug 2026 18:31:57 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.31.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:31:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 2htJV3Qn9nRSsGNPzVxPWrsaM+ncItU2iqHptaT2vP4=; b=V780oYgL69eho2yX VBJRg+gzaKDUdrDKyPlTMu9RU2NPSl4dJ7rVNYwPdexZ+kViGvWtiO3da7lWL54F TIWJukHBr9xr6cp+NwfW3WtEOsR9s/wX6vCyjUQHYSCMtXWUhcj8VWD7WrX/6Mc1 rWhmBqUoRYbf1QEYyEW3Nno+Mql7d69UlF9l87mQgB6u0tiPGti4UUHtbNlfZUBo cx3eodKFvRf/TwCfPv0T9j9Uk1vhn3hyBAxVUYuHDUPTOdwTO4a/piWvjP7IN5aa OYtJvJlVYwgPe5D2TgP1K4qZ3RHKWJs/L0CRwrBbR1h5z7aGdA2HIKCWCHGv5Rfx j0xUgg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103117; x=1787707917; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=2htJV3Qn9nRSsGNPzVxPWrsaM+ncItU2iqHptaT2vP4=; b=VNJOgTzYx9xIXIX6SlEBT0rqi54xftG9xfQYU6qCI5lF6jKwTOonSyZICulEi6mLh3 Yzd34Br/qYkNDF3ONTa8HPbQb3kh1XaI51jpwENe9I4et5SAVfPutc244LzpGTUOtgvX tKwZHVkt+yi5UoHJcyCxWT/qhtejVUWwJruZZWuIpxh8NKbE74IzaJuU2uHarKjDbGqD P6/1Hru9hj8xhwdYB/8yW/D+ikJC4tpHps3LiZHgavRBOaZ2IzIdrXYJBXHmfql51qp3 pmrZklViLqaBlHZq+e5MZ68w1zrhpO+lIK8bxl7TD6gkOLvIM2Csm9K1khX0NbVe8qWX q5Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103117; x=1787707917; h=content-transfer-encoding:content-type: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 :content-type; bh=2htJV3Qn9nRSsGNPzVxPWrsaM+ncItU2iqHptaT2vP4=; b=joNTpLcoe1QBfIdoYrYwoKYANtwKT7Trdk4xxZ7F6hkSFaPz8PNRndM3jg3K2uWlik 7d5r1K0a1krl6pF4PyvxmWEZWJb9LM1VrX6+Iih0ZI/0AjJM933y36HYeViv+3oyAths x0yYNK/qtGXPFoA7eQ8835OBF0ENDK++VM/MDYc32z8N228A/pUdJeTLdyXfNU/Fbi5R rE10wmoyRYmJLswpyFdWQ9E7O4SR2Z8tIv4wGEXef7iFxQOObSRKjkG3Nr1YaKrGDZY3 VOC7UUHl3umyCAkF9Lu05VI/CsKIs2IUKfU9FmYbiR9eVKhxmAUccmTyJjQ3+gUmC7dI 9Slw== X-Gm-Message-State: AOJu0YzplTEdK0RFCwJcdB3kEExeKL5eSObWxe7huODRkMytRSFpp1Uo 9ZwvsMk0MQAweiBvr6Es345Wojmg09wTGzTWrLo9QdbU9YiVYCs2/IVtOnLi2DHPYwp1fbwrhIi YIbzj0VP+Ootrz4d+ahXAgDEbesOkltt97U2oOGUVmn4pRZeyQGOKcg8pfTUQL6FhRw== X-Gm-Gg: AR+sD12yaehP6T+0v7naHjItgdJlpM+W85FOvXrR0Xi19EjWN36diefsR8PSBbAQVF1 Kpcga+/kpfS4rNYhOT4Me+WTdKdUezAjPzoO0tL0GCm4IWkPa0B1AfLrsx69Wo/eEY7Kajjkp5u RwAwAJOq1qYwzVH43eELbvpVNv0MnSg5n4Iesk/gkcsujGVQHuSDwQP+mk6NKGCLi2Hot9h+25U MSjdeWhJ2L5v4+1T9cBX6GFiM0jF2Kl+s+VHUyk8xWkSY0vidrDAzFF69Cnt5hKxcunFNOrCtAy JoO9flYBg6MxgAU3pErrfcJxachZZ5IFBFpPa7OrbdNL9EG9Kbr/wkZLvy81KqsiKDyWnK0oHAJ z+Bxpvlt1aQyDHXBpBzKBEJ7W2xhLPU7DryOiAn9RhkjLTF7E X-Received: by 2002:a17:90b:2c8f:b0:37f:bfa2:1887 with SMTP id 98e67ed59e1d1-39580f119d1mr1990874a91.8.1787103116714; Tue, 18 Aug 2026 18:31:56 -0700 (PDT) X-Received: by 2002:a17:90b:2c8f:b0:37f:bfa2:1887 with SMTP id 98e67ed59e1d1-39580f119d1mr1990810a91.8.1787103116242; Tue, 18 Aug 2026 18:31:56 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 06/11] target/hexagon: gate GPCYCLE guest register reads on SSR:CE Date: Tue, 18 Aug 2026 18:31:39 -0700 Message-Id: <20260819013144.3264096-7-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 5I3Szep4mb0sjNzZYm2DlloMOS0djx-R X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfXyKmyHP89sU06 +HfgK86Zno4yD9gLmzDdf3hgdUQS+7uJvKjO6urVsbukr8dLIrcZ5Z3UXRHThSyKLy0qkaJOC9l aJdC23Z4cCc7gVUVB+FwnNXsx0kHxWaQka77D678dA2FcUZ6FIFMof97jlH+7AFqqLEDuwuHwRn toyfSveOOP9rYSzYcqJYuA6OeolBMcLxOSQdwsX+51IucVlJsvGk973fYKYZB+FvYNsi7K7Y0/J to7+VwkP3MsNcmTvOeyBxqMk5o1FI81Xy6yXqOUvRvMkRyP8pLy5AB1NEFslad+tQ0WfinuCBTE 0ooepVxK4YACsIvPN7kmw/EXm+odlpdL8mSYmq/MQrYG5tPqTblpCiIirh9C+DZzDl974osreha /I337RC6ocQeZa0mLsikNnKKHZW25c5O+y/yct4GOosFEVS7k+YqV7jUy9fwdswGnRLDRrm/vuM 0LveOeGap5R7a3K7c8A== X-Authority-Analysis: v=2.4 cv=aMrAb79m c=1 sm=1 tr=0 ts=6a85078d cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=t0ND8AI8szmjwSGyRvoA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: 5I3Szep4mb0sjNzZYm2DlloMOS0djx-R X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX90II6zAsh0gk +pythej6heusnDlxokW8nUmoxG95hVzSl0rD9P92hUsJbttNzd7ZKNpK0Bawi9QeIwfF1UPwbrm OY3NU5T6YvIlUsr8tvs+uR3w0VIWh0s= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 spamscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103161391158500 GPCYCLELO/GPCYCLEHI read as zero unless the cycle counter is enabled (SSR:CE), matching the hardware. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/cpu.c | 7 +++++-- target/hexagon/op_helper.c | 9 ++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 0bbefc2fb87..0a677840bcb 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -809,14 +809,17 @@ static void hexagon_cpu_class_init(ObjectClass *c, co= nst void *data) #ifndef CONFIG_USER_ONLY uint32_t hexagon_greg_read(CPUHexagonState *env, uint32_t reg) { + uint32_t ssr =3D env->t_sreg[HEX_SREG_SSR]; + int ssr_ce =3D GET_SSR_FIELD(SSR_CE, ssr); + if (reg <=3D HEX_GREG_G3) { return env->greg[reg]; } switch (reg) { case HEX_GREG_GPCYCLELO: - return hexagon_get_sys_pcycle_count_low(env); + return ssr_ce ? hexagon_get_sys_pcycle_count_low(env) : 0; case HEX_GREG_GPCYCLEHI: - return hexagon_get_sys_pcycle_count_high(env); + return ssr_ce ? hexagon_get_sys_pcycle_count_high(env) : 0; default: qemu_log_mask(LOG_UNIMP, "reading greg %" PRId32 " not yet supported.\n", reg); diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 23894ff3d28..2cea1927263 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1912,13 +1912,8 @@ uint64_t HELPER(greg_read_pair)(CPUHexagonState *env= , uint32_t reg) return (uint64_t)(env->greg[reg]) | (((uint64_t)(env->greg[reg + 1])) << 32); } - switch (reg) { - case HEX_GREG_GPCYCLELO: - return hexagon_get_sys_pcycle_count(env); - default: - return (uint64_t)hexagon_greg_read(env, reg) | - ((uint64_t)(hexagon_greg_read(env, reg + 1)) << 32); - } + return (uint64_t)hexagon_greg_read(env, reg) | + ((uint64_t)(hexagon_greg_read(env, reg + 1)) << 32); } =20 /* --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103147; cv=none; d=zohomail.com; s=zohoarc; b=XyAm6yj9qOj+wiQKMqrM7CubnVkJl5CDyynhFpqU4ySkugL1vz5d6UmVr8uxBBlzApxEz5PRYYilWECHPaTJGteVJdpwhdLUIfceBkYdMdfAQMTttcl9uqkzOhyqb6VRS5/PjneArZiEkrS+bcRV5TY98bvC5rdRr1esHhzESOA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103147; h=Content-Type: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=x6XGLZ0WeMKrqVTiytLRtFXKuMZvq+QURVKSw4E61Es=; b=MgZAo2s+NXynqTmuZA6UdOnYcNkSr0gTjxggPwX+mwyZGyrQqfjNGB8sz5889umwVb4CorJ2B8py5NJd6Y1qbtZHI9tvbzb70m/Lusbh6NDfn3sjGF2TvVICm1ikvRewQjC+zEdw5SqPzjs+4dvczL852d6MBZ5P+kKGpKuRkL0= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103147143899.4043088917407; Tue, 18 Aug 2026 18:32:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwV9v-0008LO-UA; Tue, 18 Aug 2026 21:32:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9u-0008Ku-DN for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:02 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9s-0008DU-Jk for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:02 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INkRWc2278847 for ; Wed, 19 Aug 2026 01:31:59 GMT Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfkgrvm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:31:59 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38f97b3f853so819101a91.3 for ; Tue, 18 Aug 2026 18:31:59 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.31.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:31:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= x6XGLZ0WeMKrqVTiytLRtFXKuMZvq+QURVKSw4E61Es=; b=EV0y+nfxRBz/ZZHM 1EmJq/NxUwIwXF/NY8yRZ6w0TPYHiePx5hcbI9Y00ebjpmaA9xc+6fp75AihqPG6 hW0TQJ/tcHiuibpjlVamJ65C6gekxLSwWdT5q0GXOhGg82ICvjzk1VLXk+d1995H aW4YYX8snCZJNfj4SoiGfsrB1V+L2leHYIj0eN574TombVdDYh3cQppP7ACnqnOt 2nvLu4EiOYVSL2HD0i8UFXjpinaSW8LuGfy7SqFrUw3H663kUPIj3ZAxFdNRNbpb UeWFO1T3+eoGgglSiVheC7LnU/su7gZ5Z5oq7Z13P+ADUyHq3cJpuFNWOyghVyVD AJmWjA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103118; x=1787707918; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=x6XGLZ0WeMKrqVTiytLRtFXKuMZvq+QURVKSw4E61Es=; b=LPUXJBtg1Feg2yxkhk68LboCbKnD8xYPXdgQN1l8RcvzGm1updH25YftXwYn+5S652 F1cYfpD4RYp9Xjc02hZnb3VjX2Cjs11AZOOul8M5533zmG9MJ1O/m5/Cfl5WLgCkwnCp IB1ua9l1FIOFlyUuabBDpF3v7ZoQ9vDGzHmKjDmVhA92ePBpzRL3aTBem7YDbRuf2HCU t8wfIDLwoG68gQkMkA3W3zQr06SLgzveXeqPJcXLjdDKblpAqRz4+q2XhTfkEaydw9Gl xzc+ge14Cn0An1qStY6O8KhQOg82ivy2cb6tnYze72g6NZV4M1nuhJagh2oZlE0ZX8k6 B8dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103118; x=1787707918; h=content-transfer-encoding:content-type: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 :content-type; bh=x6XGLZ0WeMKrqVTiytLRtFXKuMZvq+QURVKSw4E61Es=; b=a6lsrgB7Di0+SmZjtG6Q6RKc9ea8BR/ttITTv9JoBIcAgB5Tq/nZaF4WSQ6jxCyij9 s39p3lGdw0IJ5Y7qS4djKp36+IONbXDg6v6KXO/t5+fxw68oVuDc3Wq14ip0K0wzZhUK TnMNkYZJbzXi3SKlZhRcnq3Q1oJahHZDQDFkbLq7CtkLNK8vO4cioGsbmoO8avDgMKah BMBKHSFIY8bGOSyzTe6gAJy38/Zp6cNVMuSGH+2uLDJmX5KQiY/SE/PteqCPTCaCqJEC T/qCQUHBc8C8DdgHsVCL9BvafyJkKWn1YMrVmnpuSweVmV28GT5LZgCR8fqokLQftpdQ iZMQ== X-Gm-Message-State: AOJu0YyiQjJZmnB/HzZsC8SQUgnFjWYoaVS6Q+jZqNfNm+bfNz1KfLeY i+KeMFZeyE5iB1//9lR/Pn9j1Wxk+1jIZdgmBQKIw+AfsLRrLnmffUSJujqfaszXf0Lf5U+UWsT gX5PH5fiHILiqDvHiohKH09RCcytPZ0rwlf3R3mxDHXn0mdgi8d8d4JZpc5J+qzGZUg== X-Gm-Gg: AR+sD13wwIpDSLHKedzRV2rbfWF31qJUlZvnrqU2GdBZwGNElZzOejdHFOKGTuuQs47 U9xmmTPTiZYXFAwYj87wz24oj8iJ7nonuxakcTWTq97IHHuGhlTm4dtStizqgvJRn5+u6WFDIRC 6Huog8AAWhy0FuXDJdDsHj2XI4Cnd4ZwXfI0neyLup9GSRLTaHStmjQaR9Xh91pKma9SGYqD1C6 18UcpJCTj/tfg6k2NU0tVhajp8Wzcn1bi8hCAroAM6LcSgpH+YRdmEN/dhEpNo3kvI92P1ow4Xx yYhhTQU2lgASp+OlsyI+017hZ8O2hGmKSQ8qmR2okQr+2oTC0O1JvqepZT1NUWhA4fg5L0xuMhA VbSucFilzKNKG1XtwIBV3wv2mrSAnmT7L24AoHPpJHkCHapRK X-Received: by 2002:a17:90b:3945:b0:37f:eafd:3505 with SMTP id 98e67ed59e1d1-39580eafaa7mr2110914a91.6.1787103118307; Tue, 18 Aug 2026 18:31:58 -0700 (PDT) X-Received: by 2002:a17:90b:3945:b0:37f:eafd:3505 with SMTP id 98e67ed59e1d1-39580eafaa7mr2110804a91.6.1787103117712; Tue, 18 Aug 2026 18:31:57 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 07/11] target/hexagon: read UTIMERLO/UTIMERHI from the global timer Date: Tue, 18 Aug 2026 18:31:40 -0700 Message-Id: <20260819013144.3264096-8-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=NoPhtcdJ c=1 sm=1 tr=0 ts=6a85078f cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=q_fxtLUCAn1J2UUIEkUA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-ORIG-GUID: zyWCyyLnWZFfgwSy2fESvOe4aV08K2IR X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfXwJFMaeyhdyZj D5ey3332AR/5adzmeCegEyYrMDkMT+z4Myea3Qd1K/2V64JStQVSBg+B3iPuE5HbCoYk0AgzpjS Ktya7GNhnOcXPxx41o+ld6soAsUs9yc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX22o9eq9rnFSR UcVPPvFsz8+uKaYwk7zpwQOALEsxo6OSouq6lRKsBwaquosf2hWc6Z8jGW2u9878zDb7rQXRvbP jlSJ8X6P66wXmc5taEbcfAg6Nkp3DGU5yuYqE8tsjuUhMhRvQwC39a0+/WVLgWfQhZ1kNER8Szl iNGzca7/6IKMPk9Yt4qeT+eP/0oXb5aEKWDv/ZMgC4U+SfEsE5e1Pdk3fSDFb4p63v46kyG8/Fa cF4N/6TZomrWQxgGnJCJdKPd6CarHmkqgOCvRQ/2tHPi5CjXG7FN6OGBs4byvnKvnzCy+t8fruu y6UUSEDUM54wilBs0lWwGtD2Ko4GqWF+SZ/Nvot2a4MhR36YYem4YwQ+DJhsACCcpabB3a64p8g 6qkD3IFfl3hq/kIX0b0Yj2WYVU0VXvt8TBUOGhMROoAhhSrwzAOwi/i3t5/J1/bkg1dMKCoq0A1 GGJG+XwQAG5Pgo/JDFQ== X-Proofpoint-GUID: zyWCyyLnWZFfgwSy2fESvOe4aV08K2IR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 adultscore=0 priorityscore=1501 phishscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103147948158500 In system mode, route accesses to the qtimer-backed global TIMERLO/TIMERHI so guest reads see a live, monotonically increasing timer. In user mode we derive it from QEMU_CLOCK_VIRTUAL. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/helper.h | 4 ++++ target/hexagon/genptr.c | 29 +++++++++++++++++++++++++++++ target/hexagon/op_helper.c | 21 +++++++++++++++++++++ tests/tcg/hexagon/reg_mut.c | 11 ++++++++--- 4 files changed, 62 insertions(+), 3 deletions(-) diff --git a/target/hexagon/helper.h b/target/hexagon/helper.h index 78dc28ca9e5..e39afd623b5 100644 --- a/target/hexagon/helper.h +++ b/target/hexagon/helper.h @@ -113,6 +113,10 @@ DEF_HELPER_FLAGS_4(gvec_sabsdiff_w, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(gvec_uabsdiff_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = i32) DEF_HELPER_FLAGS_4(gvec_uabsdiff_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = i32) =20 +#if defined(CONFIG_USER_ONLY) +DEF_HELPER_FLAGS_0(utimer, TCG_CALL_NO_RWG, i64) +#endif + #if !defined(CONFIG_USER_ONLY) DEF_HELPER_3(raise_stack_overflow, void, env, i32, i32) DEF_HELPER_2(swi, void, env, i32) diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 2a98b13b714..282a697d190 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -411,6 +411,23 @@ static inline void gen_read_ctrl_reg(DisasContext *ctx= , const int reg_num, } else if (reg_num =3D=3D HEX_REG_QEMU_HVX_CNT) { tcg_gen_addi_tl(dest, hex_gpr[HEX_REG_QEMU_HVX_CNT], ctx->num_hvx_insns); +#ifndef CONFIG_USER_ONLY + } else if (reg_num =3D=3D HEX_REG_UTIMERLO) { + gen_helper_sreg_read(dest, tcg_env, + tcg_constant_i32(HEX_SREG_TIMERLO)); + } else if (reg_num =3D=3D HEX_REG_UTIMERHI) { + gen_helper_sreg_read(dest, tcg_env, + tcg_constant_i32(HEX_SREG_TIMERHI)); +#else + } else if (reg_num =3D=3D HEX_REG_UTIMERLO) { + TCGv_i64 utimer =3D tcg_temp_new_i64(); + gen_helper_utimer(utimer); + tcg_gen_extrl_i64_i32(dest, utimer); + } else if (reg_num =3D=3D HEX_REG_UTIMERHI) { + TCGv_i64 utimer =3D tcg_temp_new_i64(); + gen_helper_utimer(utimer); + tcg_gen_extrh_i64_i32(dest, utimer); +#endif } else { tcg_gen_mov_tl(dest, hex_gpr[reg_num]); } @@ -439,6 +456,18 @@ static inline void gen_read_ctrl_reg_pair(DisasContext= *ctx, const int reg_num, tcg_gen_addi_tl(hvx_cnt, hex_gpr[HEX_REG_QEMU_HVX_CNT], ctx->num_hvx_insns); tcg_gen_concat_i32_i64(dest, hvx_cnt, hex_gpr[reg_num + 1]); +#ifndef CONFIG_USER_ONLY + } else if (reg_num =3D=3D HEX_REG_UTIMERLO) { + TCGv lo =3D tcg_temp_new(); + TCGv hi =3D tcg_temp_new(); + gen_helper_sreg_read(lo, tcg_env, tcg_constant_i32(HEX_SREG_TIMERL= O)); + gen_helper_sreg_read(hi, tcg_env, tcg_constant_i32(HEX_SREG_TIMERH= I)); + tcg_gen_concat_i32_i64(dest, lo, hi); +#else + } else if (reg_num =3D=3D HEX_REG_UTIMERLO) { + /* One helper call, so the pair is a coherent 64-bit snapshot. */ + gen_helper_utimer(dest); +#endif } else { tcg_gen_concat_i32_i64(dest, hex_gpr[reg_num], diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 2cea1927263..df31ed2488a 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -37,6 +37,9 @@ #include "cpu_helper.h" #include "tcg/tcg-gvec-desc.h" #include "translate.h" +#ifdef CONFIG_USER_ONLY +#include "qemu/timer.h" +#endif #ifndef CONFIG_USER_ONLY #include "hw/hexagon/hexagon_globalreg.h" #include "hex_mmu.h" @@ -46,6 +49,24 @@ #include "hexswi.h" #endif =20 +#ifdef CONFIG_USER_ONLY +/* + * User mode has no qtimer device backing TIMERLO/TIMERHI, so derive the + * user timer directly from the virtual clock -- the same clock the qtimer + * counts -- at the qtimer's default 19.2MHz tick rate, masked to the + * qtimer's counter width. + */ +#define HEX_UTIMER_FREQ_HZ 19200000ULL +#define HEX_UTIMER_CNT_MASK 0x00ffffffffffffffULL + +uint64_t HELPER(utimer)(void) +{ + return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), + HEX_UTIMER_FREQ_HZ, NANOSECONDS_PER_SECOND) & + HEX_UTIMER_CNT_MASK; +} +#endif + #define SF_BIAS 127 #define SF_MANTBITS 23 =20 diff --git a/tests/tcg/hexagon/reg_mut.c b/tests/tcg/hexagon/reg_mut.c index c5a39e55100..9ce18f3ebe5 100644 --- a/tests/tcg/hexagon/reg_mut.c +++ b/tests/tcg/hexagon/reg_mut.c @@ -77,10 +77,10 @@ static inline void write_control_registers(void) check32(result, 0x00000000); =20 WRITE_REG_NOCLOBBER(result, "utimerlo", 0xffffffff); - check32(result, 0x00000000); + check32_ne(result, 0xffffffff); =20 WRITE_REG_NOCLOBBER(result, "utimerhi", 0xffffffff); - check32(result, 0x00000000); + check32_ne(result, 0xffffffff); =20 /* * PC is special. Setting it to these values @@ -106,8 +106,13 @@ static inline void write_control_register_pairs(void) WRITE_REG_NOCLOBBER(result, "c15:14", 0xffffffffffffffff); check64(result, 0x0000000000000000); =20 + /* + * c31:30 is UTIMERHI:UTIMERLO, a read-only free-running counter. The + * write must be discarded; the read-back is whatever the timer says, + * so only check that the written value did not stick. + */ WRITE_REG_NOCLOBBER(result, "c31:30", 0xffffffffffffffff); - check64(result, 0x0000000000000000); + check64_ne(result, 0xffffffffffffffff); =20 WRITE_REG_PAIR_ENCODED(result, "c9:8", (uint64_t) 0x0000000000000000, C9_8_EQ_R1_0); --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103160; cv=none; d=zohomail.com; s=zohoarc; b=Tf+FAEFK8AwUpbwRCIlS2sE6DO+mwblfzpzFBX4y6/j6RIUx73vEPs7ISiAY4YbOi8hycKclYhyk0SiDuBnlIf4FXvus4m9UKeEkBw+FpwHMiD36xp4efXz3uUH+88Te7d4UMZIaA2HZ6hihXi2yjM475TSqeWHTdj7dGRVnyh4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103160; h=Content-Type: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=Kl6EcPv3IDZO8LcHBR0aNkdc2vq6ayKXKpJlwpGcfH4=; b=fMW3u444IzMEt7hZBQd5ZSMOm81y6RhSmfNBCGR2mQOMutuBlNzYfd7emtPGk82CwHenglBoTaZyLfTwyJjOFhtjsh0c3ltzRuB30zBD2HmOXL05h7dhQK5XjMC4U9bWzcOLeeI7YESFn4V8LC2SMKU6MJySdLZRr4QiGHzmYYA= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103160012499.82392165071656; Tue, 18 Aug 2026 18:32:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwV9y-0008M0-Al; Tue, 18 Aug 2026 21:32:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9x-0008Lg-3v for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:05 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9v-0008Dj-5v for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:04 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INkWHe2278952 for ; Wed, 19 Aug 2026 01:32:01 GMT Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfkgrvv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:32:01 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-848568a6f62so711230b3a.0 for ; Tue, 18 Aug 2026 18:32:01 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.31.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:31:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Kl6EcPv3IDZO8LcHBR0aNkdc2vq6ayKXKpJlwpGcfH4=; b=A1vXgo+LkRCyygBt 0OWNY+IhjOlFGTBdQYevtZ8oRd/nUSLVgjcotaVNB+imRzc088rWjwrIvaF1LeZa GvtREKngpgYVSNHSKmjSqrJDiIyEBfxWEl0FQdmM2sl/V+PEqLHEVkT//uejudbz FKdCKTRzjiXkZoKqfncdGtYI1OM3RXOIYg9Z0no8ZBA44quttD2rvYa6sEuQlPlK xfw/UVAYiq4HXlnA7nbgGmKd/INP3eNufXIgi+ATPLh8/gIEaTXhjt3OFMKEmVEV 889GG+XOe6flb/7TzmnWFL968uCGATHUSGI3boOItwwQ6JR7P4bD61H+JKQmQafF ZKiswQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103121; x=1787707921; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=Kl6EcPv3IDZO8LcHBR0aNkdc2vq6ayKXKpJlwpGcfH4=; b=el19t4zy9JaLJemusMbYGHmGQ73zLSsgJswtFokivstcKCzpP58LP3EjMh3UG3EVCw KEZQQSmSgspIylK9P8FoGC0ehGYm1cUC5YuOq9fSuapE+8o7N9qL3EPx95V98zldWvGQ 7ZyjPu+bH3W6X4j1HxB/UElf/P+YMFl2WYn10QLGT9H0W6vfY2gy8dykeMMBCPUn46nU grtwigiBZWYPI7s+oQ2hLzX6CuefEPOxaBnp8Axfv1efna1km/EqRxRADAZVdWrzUTC8 uLGe7gMekkw72ntXQbN68cyPc0uME1VDPLHpcTg9PCEqfAHUEkzpCgR41Fc1BZLaF1iL Oy7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103121; x=1787707921; h=content-transfer-encoding:content-type: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 :content-type; bh=Kl6EcPv3IDZO8LcHBR0aNkdc2vq6ayKXKpJlwpGcfH4=; b=neflED0lTEF7HA8yXXXXW8fq/vesg9VMnwTdtOWNp/ojSmmwtoFGta3rngMNlby/RL LvuJgyuFr/arV2eUrkp2psdgLtkDKbH0Zd5xbKqoye2ICGYcpwDTx60JNRFSO0dYdpxW Hfey1o3ofWKd0Lkcgi/TbzW+bAvkpbBXldJuWPh+0y9l+e3timMI4g0aYJ4EQsTgKHVd cJaUjbcFAtcM+OGqYzLWjHW1qdlouKLsk57ZqdFyxbsFJgRf0aLgMn1xyIN+DHUNSiXq seMloh9d5vzwSaW8MSJtDCRmoGKSyjYn5Ug5v1PGqcVx91gS+tpa7GMQ+58CIW3K8KQt 6Zvg== X-Gm-Message-State: AOJu0YzexG0AsuvNOqYfsulGYY+uMjW+eQQnOnG4mNj3J7V732lrMuNF Yh87wKBtD5ZzigQy0oM5FptXDOMn9j04Xyy0LYq2UBQZIMscSj8TA+Ab5LeJL5LjpeD5FPpzDiH /dZr1cZg1HxG6kdIgMKD2oGT6Mu9yqPmO3nXVXeD13uJzEn97CA2fjgImb73S1t5fQw== X-Gm-Gg: AR+sD10XkcWxrYVa90bsRk6Sp+zI1DNjLf+SbnqxVrnHHtlBQBhT5BxhR4bemy90xF5 h44Il8mxbwHH+Ykg2vpTZrAqGYJzHLhDMLT8fKO3WemlYsBPoKpNmQsidxCV3YgPABbHD+vIoi1 SLkq+/+3eyDvDLZFIjf2jITzBGhwkCi93GQqFBO/YTZ0o2rY42trjDry5fYVJjUkwAOWK6iSANh Um79KskcSnDQFRsoB3O4HyYfDDt2YnGoCV3z2hOXTYBf3JkSbAn5zIhbSElZdvc5cLj06Rv4h/c dWBKOCOKluDxZmChf/j0PKBZwhL8JDAczfpP2UsJ2wayJ18oNNRI+MH8pa+LN+6Pt3wPzNLLfaA slr7NuMLVM/AwMBrUEvdfYrtyJGtDcygR/Xwg/dlAUvxnuN52 X-Received: by 2002:a05:6a20:94c8:b0:3cc:1dcc:b079 with SMTP id adf61e73a8af0-3cd013867b8mr2112578637.19.1787103120942; Tue, 18 Aug 2026 18:32:00 -0700 (PDT) X-Received: by 2002:a05:6a20:94c8:b0:3cc:1dcc:b079 with SMTP id adf61e73a8af0-3cd013867b8mr2112515637.19.1787103120506; Tue, 18 Aug 2026 18:32:00 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 08/11] target/hexagon: raise imprecise exception on multi-TLB match Date: Tue, 18 Aug 2026 18:31:41 -0700 Message-Id: <20260819013144.3264096-9-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=NoPhtcdJ c=1 sm=1 tr=0 ts=6a850791 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=ibjyMvudXchfNAek6V4A:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: mUBSxQF7HPzlp-9fhPCCefYwpQ4URIGu X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfXzNb2eLVDWYhv g0aGyBy//UZzS0X9NOF/UNym8+w7JtjhT2pEISvK+djbIEJWq/aXRW8C2tSXGpw1QZ64rDT1bIE 0D5DHc6mgGD26GcUlVXAY5qFDeKFq4M= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX3qSkSWkojJ68 ztxxJrX1LYJKQM7BOBvqWVI6dK/jZSkZdYH7UFiKaMbBdYbxajD3lijF7TUMZasTfMPo7ZZkofj fEXccb/p590MQzt6JnXwS5MENMyB4J3p1kPRZGOdeeX2PbMK8FL03Fl634+ym73nZ197Xnj8kpP 36kEVDIBE0WwwHH74FOG71m0qQkMMVOonK/XFA8nZt3ZFcS4lL7WOLi60DL5CiFQdgRUQQlTccF LMLmTrQcEwuKY6AHAxeocAE3+SQtAwISBh+0WNFsWSbLHdxexWKC5xhrQV3MCLt8Jvck+extIlf Vq1ZALUHBMYk6i40yOZTs19Z85z1UAGPCjviWuVEVj4u4l4v0c0kSaq8orjwjkZjXBFceccVXch Abzh+IkZysaoevL6Wlb9zkC7YiwuZI/YGS/6iUY1F1f0/2jI3FaKWKOZgyV6Yrjv3PfRMgvuygO /1pCi3dBinBArK7+ygA== X-Proofpoint-GUID: mUBSxQF7HPzlp-9fhPCCefYwpQ4URIGu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 adultscore=0 priorityscore=1501 phishscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103161509158500 tlbp now records a pending imprecise exception (via env->imprecise_exceptio= n) when the lookup matches multiple entries, and the translator raises it after the tlbp packet. Implement the HEX_EVENT_IMPRECISE delivery path so the guest sees HEX_CAUSE_IMPRECISE_MULTI_TLB_MATCH instead of the exception being silently dropped. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- include/hw/hexagon/hexagon_tlb.h | 3 ++- target/hexagon/cpu.h | 1 + hw/hexagon/hexagon_tlb.c | 5 ++++- target/hexagon/hex_mmu.c | 5 ++++- target/hexagon/hexswi.c | 37 +++++++++++++++++++++++++++++--- target/hexagon/machine.c | 5 +++-- target/hexagon/translate.c | 29 +++++++++++++++++++++++++ 7 files changed, 77 insertions(+), 8 deletions(-) diff --git a/include/hw/hexagon/hexagon_tlb.h b/include/hw/hexagon/hexagon_= tlb.h index 760dc1ea811..67c0a56b79e 100644 --- a/include/hw/hexagon/hexagon_tlb.h +++ b/include/hw/hexagon/hexagon_tlb.h @@ -32,7 +32,8 @@ bool hexagon_tlb_find_match(HexagonTLBState *tlb, uint32_= t asid, int32_t *excp, int *cause_code, int mmu_idx); =20 uint32_t hexagon_tlb_lookup(HexagonTLBState *tlb, uint32_t asid, - uint32_t VA, int *cause_code); + uint32_t VA, uint32_t *imprecise_exception, + int *cause_code); =20 int hexagon_tlb_check_overlap(HexagonTLBState *tlb, uint64_t entry, uint64_t index); diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index c50fbb3f72a..ed5671abe5c 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -147,6 +147,7 @@ typedef struct CPUArchState { uint64_t t_cycle_count; #endif uint32_t next_PC; + uint32_t imprecise_exception; target_ulong new_value_usr; =20 MemLog mem_log_stores[STORES_MAX]; diff --git a/hw/hexagon/hexagon_tlb.c b/hw/hexagon/hexagon_tlb.c index b6d4aff389e..6539458f25f 100644 --- a/hw/hexagon/hexagon_tlb.c +++ b/hw/hexagon/hexagon_tlb.c @@ -319,15 +319,18 @@ bool hexagon_tlb_find_match(HexagonTLBState *tlb, uin= t32_t asid, } =20 uint32_t hexagon_tlb_lookup(HexagonTLBState *tlb, uint32_t asid, - uint32_t VA, int *cause_code) + uint32_t VA, uint32_t *imprecise_exception, + int *cause_code) { uint32_t not_found =3D 0x80000000; uint32_t idx =3D not_found; =20 + *imprecise_exception =3D 0; for (uint32_t i =3D 0; i < tlb->num_entries; i++) { uint64_t entry =3D tlb->entries[i]; if (hex_tlb_entry_match_noperm(entry, asid, VA)) { if (idx !=3D not_found) { + *imprecise_exception =3D HEX_EVENT_IMPRECISE; *cause_code =3D HEX_CAUSE_IMPRECISE_MULTI_TLB_MATCH; break; } diff --git a/target/hexagon/hex_mmu.c b/target/hexagon/hex_mmu.c index 81d64a6146c..de108f709c0 100644 --- a/target/hexagon/hex_mmu.c +++ b/target/hexagon/hex_mmu.c @@ -86,9 +86,12 @@ uint32_t hex_tlb_lookup(CPUHexagonState *env, uint32_t s= sr, uint32_t VA) { HexagonCPU *cpu =3D env_archcpu(env); uint8_t asid =3D GET_SSR_FIELD(SSR_ASID, ssr); + uint32_t imprecise_exception =3D 0; int cause_code =3D 0; =20 - uint32_t result =3D hexagon_tlb_lookup(cpu->tlb, asid, VA, &cause_code= ); + uint32_t result =3D hexagon_tlb_lookup(cpu->tlb, asid, VA, + &imprecise_exception, &cause_code= ); + env->imprecise_exception =3D imprecise_exception; if (cause_code) { env->cause_code =3D cause_code; } diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 43c373ea2ee..d29c12e6481 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -69,6 +69,7 @@ void hexagon_cpu_do_interrupt(CPUState *cs) =20 { CPUHexagonState *env =3D cpu_env(cs); + HexagonCPU *cpu =3D HEXAGON_CPU(cs); uint32_t ssr; =20 BQL_LOCK_GUARD(); @@ -83,7 +84,6 @@ void hexagon_cpu_do_interrupt(CPUState *cs) =20 ssr =3D env->t_sreg[HEX_SREG_SSR]; if (GET_SSR_FIELD(SSR_EX, ssr) =3D=3D 1) { - HexagonCPU *cpu =3D env_archcpu(env); if (cpu->globalregs) { hexagon_globalreg_write(cpu->globalregs, HEX_SREG_DIAG, env->cause_code, env->threadId); @@ -243,8 +243,39 @@ void hexagon_cpu_do_interrupt(CPUState *cs) break; =20 case HEX_EVENT_IMPRECISE: - qemu_log_mask(LOG_UNIMP, - "Imprecise exception: this case is not yet handled"); + if (get_exe_mode(env) =3D=3D HEX_EXE_MODE_WAIT) { + env->gpr[HEX_REG_PC] =3D env->wait_next_pc - 4; + clear_wait_mode(env); + } + switch (env->cause_code) { + case HEX_CAUSE_IMPRECISE_MULTI_TLB_MATCH: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 4, cs->exception_index); + if (cpu->globalregs) { + hexagon_globalreg_write(cpu->globalregs, HEX_SREG_DIAG, + (0x4 << 4) | (env->t_sreg[HEX_SREG_HTID] & 0xF), + env->threadId); + } + break; + + case HEX_CAUSE_IMPRECISE_NMI: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 4, cs->exception_index); + if (cpu->globalregs) { + hexagon_globalreg_write(cpu->globalregs, HEX_SREG_DIAG, + (0x3 << 4) | (env->t_sreg[HEX_SREG_HTID] & 0xF), + env->threadId); + } + break; + + default: + qemu_log_mask(LOG_GUEST_ERROR, + "Imprecise exception with unhandled cause 0x%x\n", + env->cause_code); + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 4, cs->exception_index); + break; + } break; =20 default: diff --git a/target/hexagon/machine.c b/target/hexagon/machine.c index 2dd95466e7d..bf4646f4a8b 100644 --- a/target/hexagon/machine.c +++ b/target/hexagon/machine.c @@ -10,8 +10,8 @@ =20 const VMStateDescription vmstate_hexagon_cpu =3D { .name =3D "cpu", - .version_id =3D 1, - .minimum_version_id =3D 1, + .version_id =3D 2, + .minimum_version_id =3D 2, .fields =3D (const VMStateField[]) { VMSTATE_UINT32_ARRAY(env.gpr, HexagonCPU, TOTAL_PER_THREAD_REGS), VMSTATE_UINT32_ARRAY(env.pred, HexagonCPU, NUM_PREGS), @@ -26,6 +26,7 @@ const VMStateDescription vmstate_hexagon_cpu =3D { VMSTATE_UINT32(env.cause_code, HexagonCPU), VMSTATE_UINT32(env.wait_next_pc, HexagonCPU), VMSTATE_UINT64(env.t_cycle_count, HexagonCPU), + VMSTATE_UINT32(env.imprecise_exception, HexagonCPU), =20 VMSTATE_END_OF_LIST() }, diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 5cfa60ca302..1d28f2db0fc 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -65,6 +65,7 @@ TCGv hex_llsc_val; TCGv_i64 hex_llsc_val_i64; #ifndef CONFIG_USER_ONLY TCGv_i64 hex_cycle_count; +TCGv hex_imprecise_exception; #endif TCGv hex_vstore_addr[VSTORES_MAX]; TCGv hex_vstore_size[VSTORES_MAX]; @@ -1051,6 +1052,28 @@ static void update_exec_counters(DisasContext *ctx) ctx->num_cycles +=3D PCYCLES_PER_PACKET; } =20 +#ifndef CONFIG_USER_ONLY +/* + * A tlbp instruction may detect multiple TLB matches and set a pending + * imprecise exception. Raise it after the packet that ran the tlbp. + */ +static void check_imprecise_exception(Packet *pkt) +{ + for (int i =3D 0; i < pkt->num_insns; i++) { + if (pkt->insn[i].opcode =3D=3D Y2_tlbp) { + TCGv PC =3D tcg_constant_tl(pkt->pc); + TCGLabel *label =3D gen_new_label(); + tcg_gen_brcondi_tl(TCG_COND_EQ, hex_imprecise_exception, + 0, label); + gen_helper_raise_exception(tcg_env, + hex_imprecise_exception, PC); + gen_set_label(label); + return; + } + } +} +#endif + static void gen_commit_packet(DisasContext *ctx) { /* @@ -1150,6 +1173,10 @@ static void gen_commit_packet(DisasContext *ctx) ctx->pkt.vhist_insn->generate(ctx); } =20 +#ifndef CONFIG_USER_ONLY + check_imprecise_exception(&ctx->pkt); +#endif + if (ctx->pkt_ends_tb || ctx->base.is_jmp =3D=3D DISAS_NORETURN) { gen_end_tb(ctx); } @@ -1357,6 +1384,8 @@ void hexagon_translate_init(void) #ifndef CONFIG_USER_ONLY hex_cycle_count =3D tcg_global_mem_new_i64(tcg_env, offsetof(CPUHexagonState, t_cycle_count), "t_cycle_count"); + hex_imprecise_exception =3D tcg_global_mem_new(tcg_env, + offsetof(CPUHexagonState, imprecise_exception), "imprecise_excepti= on"); #endif for (i =3D 0; i < STORES_MAX; i++) { snprintf(store_addr_names[i], NAME_LEN, "store_addr_%d", i); --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103200; cv=none; d=zohomail.com; s=zohoarc; b=FyX2+cbJmQXuQZUxNt4FDcazJHaDdDz3/S4sZ6zci203wGi/iTYVMmX3Qx1/8l8Uo6yJCqAeK+BKdcXRF9xKIleippKSiHidmu9/A3cX6i8eQKIflh/jioziFv3d0O0ENif2VElXXgtV4OwPcLx2l5tIs/RV6Ce+NoTVVXRoh4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103200; h=Content-Type: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=fjl8aKGT0z4dIjKw/fwlqubDkiypCjE9DRkAgvVKwV8=; b=kHUeaCvs7PVGEHoYKDkKofXd6szPbCquJkN4vl3FSmx42bKlapraR8vusqldgK2QiDWCE6dG8K5z89XxoANP3OB718MYI+Pv4Xo5zwkxufBSxvsm/x7LO7oKWphmRY1b2/i/A92ZieYehGlocX9m3Fb4HW+b5M9idShFHhRdxo8= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103200093742.6973118435455; Tue, 18 Aug 2026 18:33:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwVA2-0008Mi-Hl; Tue, 18 Aug 2026 21:32:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwVA0-0008MG-BD for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:08 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwV9y-0008E0-DH for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:08 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INkWOx2775482 for ; Wed, 19 Aug 2026 01:32:05 GMT Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yftrr1m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:32:05 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c856470fe9fso316774a12.2 for ; Tue, 18 Aug 2026 18:32:04 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.32.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:32:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= fjl8aKGT0z4dIjKw/fwlqubDkiypCjE9DRkAgvVKwV8=; b=jJCQi7jYloOeqVN8 GAC8XDHKvfIaD0wkLG216nxBCzLj6ILrYgdFuVFF8R21mRdX0Lf6ZMpHU6IVQBrr pgoYmdmZNWos5d/EJJVCdBPT30/cNeZ0UTPzJSpp7KKzWOLl5xNXWoMDVpoCkP3m mNaH6tEsIX0UsOSlcTbCtIPvA5uLsuWg+k4ng1bKRW5UN4xOmqvtezKDGcTBYqQT nB6C0df0fIO/8Wheb281Hn2bTCGGhN4i4IUSlgfXcCd8WMCvf+QEppUNOCpMe13N Nm49AFJ6B/e4KGdXkuUXxNgo/mpLQ+gzEko/9JDf/ZbiPDw3hLs75BIc88Avp0j+ bO4NLQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103124; x=1787707924; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=fjl8aKGT0z4dIjKw/fwlqubDkiypCjE9DRkAgvVKwV8=; b=dj/H1XO2W1DWIjCgMPQ6PgsvMhKOctYKztD24egTW42vp+1HqKpMOcOGDwU6pc2VAi /yeue0GP/b7PSyVjJ36/cUBtL0zM2sy4+CAL14AFN9BGex02bV7PE1MNkSmMbeVhYpAT y63iN6tkXWxTxnC12ku1OIoWtK2SBMxD8u4xsCJfrV1U3edNN8myB8+bCbtPD8iq9x00 /tp9PwLSkQuQpnojBcNNsPVm5BrkdWgAcoe38RUeDjHkj9eAwChT3CRPR1sx820gStLG bBcWzPaAWrqKQaMkHPu7jPU/ri5oHNYyOnpvfFXo4lmqeN5XdexDInTrYveKV1Tz8VaL yPAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103124; x=1787707924; h=content-transfer-encoding:content-type: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 :content-type; bh=fjl8aKGT0z4dIjKw/fwlqubDkiypCjE9DRkAgvVKwV8=; b=VUFPvoU2zzvua7CUDwmcLxZ5AXWI+29YXUZ2Jo+/Rp2a6wMhv3WgqP/iDXJZpGOUH5 xcBNjwDQMdEK29T/V9M4tGfuotO6QifDef/ZhTfcqUrnzW7N+TYeh1gbaujSqhZE3Zom tXx+00IbqVwVxbKJ2p61jMUglVE6fHDlQRQjTxC7FeOoE7DXoVTWvPtWcgEa/U9+n309 zW4XuLp13kypeFsPklAVBG1SAjqiOq7OniqX3FLKWzOliQM0rXH4r+NWwgXkIqgnRiqK /jsb6VZ5pkUQKg/XaLh774o81tEsP5IL24kFUIFg8Mu1kcePz3vUCLIEzugFo1x+P/XR Crxw== X-Gm-Message-State: AOJu0Yxwtg9taRVFTqADpI9DAgHRz1OifMu+0W9aR9SEX5MhKXSVUUF+ bBPQ5/7+PmojIRHzHWCtPVCnBYHQE058LiFlMBpBSotmukixFEZWXq41gw7qdqACMKytvc2kaRO f2IRcR98FJO615ezDn2tRlItLFf3QYnwi7Tl1O0FF3pWhEIdyZd1IFkzVJfg5/eBG4Q== X-Gm-Gg: AR+sD11kkVdMvXuj2/kLuTHHClqg+44pmqrBszbn0zwaWkifBE6w0EQVieWBYC1+YWS MdJ9+dvh4UZyqTw3uy5JHotPLNP6COM3rCsiK2GxYB4XTFwhTqHJP5HPuG5dDxZvUlaEYx4jprx CtOpOj9IcFJi8kjZ+EtclD+P8k0xGIpa6byoxJ0fJnLJXhwRk/L9TcGLr8rnOR4IsBLvvPG3fCr p8nJ0y0dTrp7O0o2qKnLD++ucvuOox3DeHMO+43VgdGfFnV0GzMAfVMCnNsD4ckOOKg/e+iOyEk m58cFgqkgyegVGlR+XSLQ/vYLwxDLpXgFVmXOunW+r677E4v75Nk3lSh/EuEc72PFX50/ijrCjm tPM7eMMFeSN+cAWPh2YOaNTIjsPVr5HycliRIuFjH7IOV+RPX X-Received: by 2002:a05:6a20:6f87:b0:3c3:7762:5d5f with SMTP id adf61e73a8af0-3cd01322a9fmr2330138637.19.1787103124179; Tue, 18 Aug 2026 18:32:04 -0700 (PDT) X-Received: by 2002:a05:6a20:6f87:b0:3c3:7762:5d5f with SMTP id adf61e73a8af0-3cd01322a9fmr2330045637.19.1787103123743; Tue, 18 Aug 2026 18:32:03 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 09/11] target/hexagon: implement direct-to-guest interrupt delivery Date: Tue, 18 Aug 2026 18:31:42 -0700 Message-Id: <20260819013144.3264096-10-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=FIorAeos c=1 sm=1 tr=0 ts=6a850795 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=Zk8ngpzFGPinGHXTi4kA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfXzioY1mbUVny5 DAqYNmRZuunZyYEXZaJ8hz7q3vji0WsDbJsN79C8IbUJgJDwQwmIJbvjnBy+F+CYmyh27JHzjet rzHruJn1VXhOn4Xj8InBSetPLFFHHC0= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX3b3PM31Sqx/R dbYBnoQ/Y5zOI9qLRNExu5p7tqMD6kOYpZb9aT9nDpuiwqeDffCoBSUbTg9KdqCi46FI6lfyYBR qwLiAzqmaAV+AUVkAQBW1giOeTyqp80Ch6Eu+7O6RHsLv/7vOT29fWDIDjYi9+oXXCECgwu34bx 3gjshBDay/mWFiQdzrdObiXUzd474pAljJLB2AJiX/F+Id8trXYSvnidJKXvB05lELdcnjqbWyv eS1apL5Agd3wSiq3bJEpC9+VFMLrTCj39K43gZtp9elK8od3ZKdCn2Tg/MV4hiV43eDZWVlwCfs RqIYYizjorQxVyX/C4uGKYp8NMS5vqB7ZYMxRxQPTxtZgy7I3KmijRlpa4YnkiDlZCHakDsbWGc o74mPn4l1QAvdg3qDfeqY+y8l2wTp/QUJCtgzBWEAjkI3iEQnEW0heo46KRroyzbo+sOd14PMWC cDUGo5Fp7bXf1w0LO/w== X-Proofpoint-GUID: BMMSi-qpuSTtX6A_FjTOK3KKUcNeF9pu X-Proofpoint-ORIG-GUID: BMMSi-qpuSTtX6A_FjTOK3KKUcNeF9pu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 adultscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103201613158500 Interrupts 3 through 5 are routed to guest mode when CCR:GIE and the matching CCR:VV bit are set. Enter through GEVB rather than EVB, record the pre-entry state in GSR and the return address in GELR, and read the vector ID from the l2vic. Signed-off-by: Brian Cain --- target/hexagon/reg_fields_def.h.inc | 7 +++ target/hexagon/cpu.c | 5 ++ target/hexagon/hex_interrupts.c | 87 ++++++++++++++++++++++++++--- 3 files changed, 92 insertions(+), 7 deletions(-) diff --git a/target/hexagon/reg_fields_def.h.inc b/target/hexagon/reg_field= s_def.h.inc index d2c706d56b5..29497fbcc4d 100644 --- a/target/hexagon/reg_fields_def.h.inc +++ b/target/hexagon/reg_fields_def.h.inc @@ -136,6 +136,13 @@ DEF_REG_FIELD(CCR_VV1, 29, 1) DEF_REG_FIELD(CCR_VV2, 30, 1) DEF_REG_FIELD(CCR_VV3, 31, 1) =20 +/* GSR fields */ +DEF_REG_FIELD(GSR_CAUSE, 0, 16) +DEF_REG_FIELD(GSR_CFI, 28, 1) +DEF_REG_FIELD(GSR_SS, 29, 1) +DEF_REG_FIELD(GSR_IE, 30, 1) +DEF_REG_FIELD(GSR_UM, 31, 1) + /* ISDB ST fields */ DEF_REG_FIELD(ISDBST_WAITRUN, 24, 8) DEF_REG_FIELD(ISDBST_ONOFF, 16, 8) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 0a677840bcb..efaf569c6f8 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -475,6 +475,11 @@ static void hexagon_cpu_realize(DeviceState *dev, Erro= r **errp) error_setg(errp, "hexagon cpu requires 'tlb' link property to be s= et"); return; } + if (!HEXAGON_CPU(dev)->l2vic) { + error_setg(errp, + "hexagon cpu requires 'l2vic' link property to be set"); + return; + } #endif =20 qemu_init_vcpu(cs); diff --git a/target/hexagon/hex_interrupts.c b/target/hexagon/hex_interrupt= s.c index 3534481da24..ea1ba0903dd 100644 --- a/target/hexagon/hex_interrupts.c +++ b/target/hexagon/hex_interrupts.c @@ -11,6 +11,7 @@ #include "cpu_helper.h" #include "exec/cpu-interrupt.h" #include "hex_interrupts.h" +#include "hw/intc/hex-l2vic.h" #include "macros.h" #include "sys_macros.h" #include "system/cpus.h" @@ -215,19 +216,75 @@ static void restore_state(CPUHexagonState *env, bool = int_accepted) } } =20 +static bool int_should_dtg(CPUHexagonState *env, int int_num) +{ + uint32_t ccr =3D env->t_sreg[HEX_SREG_CCR]; + + switch (int_num) { + case 3: + if (!GET_FIELD(CCR_VV1, ccr)) { + return false; + } + break; + case 4: + if (!GET_FIELD(CCR_VV2, ccr)) { + return false; + } + break; + case 5: + if (!GET_FIELD(CCR_VV3, ccr)) { + return false; + } + break; + default: + return false; + } + + return GET_FIELD(CCR_GIE, ccr); +} + +static void guest_interrupt_entry(CPUHexagonState *env, uint32_t cause, + uint32_t event_pc) +{ + uint32_t old_ssr =3D env->t_sreg[HEX_SREG_SSR]; + uint32_t new_ssr =3D old_ssr; + uint32_t ccr =3D env->t_sreg[HEX_SREG_CCR]; + uint32_t gsr =3D 0; + + gsr =3D deposit32(gsr, reg_field_info[GSR_CAUSE].offset, + reg_field_info[GSR_CAUSE].width, cause); + gsr =3D deposit32(gsr, reg_field_info[GSR_SS].offset, + reg_field_info[GSR_SS].width, + GET_SSR_FIELD(SSR_SS, old_ssr)); + gsr =3D deposit32(gsr, reg_field_info[GSR_UM].offset, + reg_field_info[GSR_UM].width, + !GET_SSR_FIELD(SSR_GM, old_ssr)); + gsr =3D deposit32(gsr, reg_field_info[GSR_IE].offset, + reg_field_info[GSR_IE].width, + GET_FIELD(CCR_GIE, ccr)); + env->greg[HEX_GREG_GSR] =3D gsr; + + fSET_FIELD(new_ssr, SSR_SS, 0); + fSET_FIELD(new_ssr, SSR_GM, 1); + env->t_sreg[HEX_SREG_SSR] =3D new_ssr; + hexagon_modify_ssr(env, new_ssr, old_ssr); + + SET_SYSTEM_FIELD(env, HEX_SREG_CCR, CCR_GIE, 0); + env->greg[HEX_GREG_GELR] =3D event_pc; + env->gpr[HEX_REG_PC] =3D env->t_sreg[HEX_SREG_GEVB] | + (HEX_EVENT_INT0 << 2); +} + static void hex_accept_int(CPUHexagonState *env, int int_num) { CPUState *cs =3D env_cpu(env); HexagonCPU *cpu =3D env_archcpu(env); - uint32_t evb =3D - hexagon_globalreg_read(cpu->globalregs, HEX_SREG_EVB, - env->threadId); const int exe_mode =3D get_exe_mode(env); const bool in_wait_mode =3D exe_mode =3D=3D HEX_EXE_MODE_WAIT; + uint32_t elr; =20 set_ipend_bit(env, int_num, 0); set_iad_bit(env, int_num, 1); - set_ssr_ex_cause(env, 1, HEX_CAUSE_INT0 | int_num); cs->exception_index =3D HEX_EVENT_INT0 + int_num; env->cause_code =3D HEX_EVENT_INT0 + int_num; clear_pending_locks(env); @@ -235,15 +292,31 @@ static void hex_accept_int(CPUHexagonState *env, int = int_num) qemu_log_mask(CPU_LOG_INT, "%s: thread " TARGET_FMT_ld " resuming, exiting WAIT mode\n", __func__, env->threadId); - set_elr(env, env->wait_next_pc); + elr =3D env->wait_next_pc; clear_wait_mode(env); cs->halted =3D false; } else if (env->k0_lock_state =3D=3D HEX_LOCK_WAITING) { g_assert_not_reached(); } else { - set_elr(env, env->gpr[HEX_REG_PC]); + elr =3D env->gpr[HEX_REG_PC]; + } + + if (int_should_dtg(env, int_num)) { + int vic_group =3D int_num - 2; + uint32_t vid_packed =3D l2vic_read_vid(cpu->l2vic, vic_group / 2); + uint32_t vid =3D extract32(vid_packed, + (vic_group & 1) ? 16 : 0, 16); + + guest_interrupt_entry(env, vid, elr); + } else { + uint32_t evb =3D + hexagon_globalreg_read(cpu->globalregs, HEX_SREG_EVB, + env->threadId); + + set_ssr_ex_cause(env, 1, HEX_CAUSE_INT0 | int_num); + set_elr(env, elr); + env->gpr[HEX_REG_PC] =3D evb | (cs->exception_index << 2); } - env->gpr[HEX_REG_PC] =3D evb | (cs->exception_index << 2); if (get_ipend(env) =3D=3D 0) { restore_state(env, true); } --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1787103162; cv=none; d=zohomail.com; s=zohoarc; b=DF7pmwoo/jHnyWmjtcQzkInrc2HtxgJ/QPQmnXT8q2SoVKxwzVQJVKL0S5Fk02MaNy4SKXODl68jVg8veqAjRFzS0WfwdjuzLexjmKBgILinuTRfpMIOJK7NeZqlFyfNBXnLk85uzpYyhhRlWFbMGasnXU4LRqTkSEQYGVbRQeE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103162; h=Content-Type: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=mSKFGKY+KrZPOeryydWZ5sEqp5+r+Z//ZA2B/KGKuIE=; b=gAqMfiZCwaJfzqS9JTNN0iP7YJkWP6U1WRWM8J0+gON+kN8m/abKAtrfAuG0CviTT5iPQmTawetljNViuMjSK7WNvuJAoFDPAB6Ln4z0RQRTAO6l/NLzY2jUKkX7Cm27WMHDZBPzk0E+hQkF6TrNWRIbLc1yCFxgRMuPs6o2aB8= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103161921863.153975592977; Tue, 18 Aug 2026 18:32:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwVA5-0008N8-U2; Tue, 18 Aug 2026 21:32:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwVA4-0008Mk-Ft for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:12 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwVA2-0008EJ-S4 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:12 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INkfY22345608 for ; Wed, 19 Aug 2026 01:32:09 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfm8qfw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:32:09 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38e4758ab46so867424a91.0 for ; Tue, 18 Aug 2026 18:32:09 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.32.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= mSKFGKY+KrZPOeryydWZ5sEqp5+r+Z//ZA2B/KGKuIE=; b=p6p5v94kWaVz03FK dnbvZZT8SplPe1Xl93ZHHMMrxASTI41bzRVVI7vhFZaxxy4LN885qsncNMtjdAPe dfzBmsI7VQQqHfIZyK6wgnLzqy2b91oZAeczKfkDlJqGP1MhWjvkk+eJDDoOednA RZ8sbQiqh+TKoYlEf5VMTakVJDL2EMoqZ9Mx7VGYlN3/jVhBHLabsTrtwguo/NUi q8Klbbke2p+PsPDOJLlIuDyASypz9eKM5UfF2Brp0KRopmon+OjsYTZB53Pyc8X1 jbY8G2cXJkg6GhPtZvWds66tVXdBJMDwCsxlfAMSRfbajjpmaU01LoTNjsruktK1 DL8ktA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103129; x=1787707929; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=mSKFGKY+KrZPOeryydWZ5sEqp5+r+Z//ZA2B/KGKuIE=; b=UviDMZXazshJoILjUOw0Z94Ch1IUQk2zSuC5pVo/KYtXkS04o8Uk4lnMTV7LjI5swF HJ5JVcR+O6V5hnIN1ejm2z0zhqzoh11b/XPUxmLlcV56ZrfsDjSAQJZxkcfc/wKTgiVq 9nU4a4s2tsp1XvQuBj6ra2rPKK/frR2xQD37oJ62IytwXZgsjakEJTquox+bV3PBhhCk 1wK8f7YSR7I7mgunI9HiK9/M1Zh1+LvZAABxWVEveiHdIh6Ttvd7bOIisr2MSy97GL2J ii31Gjgn1itdyFVEVHnOXPNxbTIp5tsTwUqhq+JxlwDBviy/0g5iwcGuwkYTl1ssrLhb /NVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103129; x=1787707929; h=content-transfer-encoding:content-type: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 :content-type; bh=mSKFGKY+KrZPOeryydWZ5sEqp5+r+Z//ZA2B/KGKuIE=; b=bSVehfyF8j2ottT//HUZqaq5oKGd9e4lbRKLUZB1AOkawty2cfWGyh+reYxmQgI3JO USIQoWGGL5Oy2NhCd0/YKAIaZUjK/GtGccWACnLNtbz/xrTMJ5btY2MtoeuiJCr+dPq7 kyV+Riw8EeojSWM2+GPL/JohXpciTXexUI5X5DUrpUrJxJNJKg1AOve6Po+FKv82coZv DKayO3dmQ0Wfu81Ho8sVBqo3JuSRJ03rzw66QKFLHZyNK8v2xHCkFD/VBxZ/ENwYPn6G 8b5qRP9vdValzFCsFWss0BeqjOITrAdRgsOzTgzeXSusiWn7xN2E1h5J1ll4AFCrApnI xMMg== X-Gm-Message-State: AOJu0Yw86Bww/GYyCvYGzwN0opwE8tV+e/vthGuyBe64rmsAAtqGwEnV M3Q0hx0jQEQ5Gsxn0Tx38765sU5T46ixBrDU35kMqT0AoYEg1VhZqjy30CJIm74ZjSqB1NCcdMn +SJWYXVucO7VXY1EjL6Qlis7DMn9I/YbUM+JNYQD6qggE+05xs+3woC3L/29Qv5OkSw== X-Gm-Gg: AR+sD13CIoKOrNmH9or7w10Vt4Tpkhdb7gvesoajJmWAV4gD/gMJ9LzajoiMoV5TYQc AdWHWnKxVJBzHCFGKcM3Pl1S+j8aR017z4kWO3oB2XoKfDXYQGsCKhXqmcSl/u3s3imPiXEC7hE CdXGCbHd8aa1t1T4rP6R3E1ySSNrVS9tPXGbcKmzPyy4spiug/3hXhA14oOy+6ycuxDQR6/6EH2 4J4rD+UX4dcxv+evwvNuiNLvgRAfjdeYRTKhz3GNI7i8ImB+S4/evDB8MkZpmk1aKuIU9QaDTTx uhMWhAih7M5iyxYZ9HUkyeWj9PVdSonn6347ScWJxxRvMaGKdEoK7Qi5L7PBvguX99kVgZxgiIh IhXyPiFVrmIn9jLUGtFVN3Gan1eSlXPkvMNsCfbvbB/UgcmLd X-Received: by 2002:a05:6a21:9182:b0:3c3:b57b:645e with SMTP id adf61e73a8af0-3cd00df4c1emr2725320637.5.1787103128686; Tue, 18 Aug 2026 18:32:08 -0700 (PDT) X-Received: by 2002:a05:6a21:9182:b0:3c3:b57b:645e with SMTP id adf61e73a8af0-3cd00df4c1emr2725215637.5.1787103128278; Tue, 18 Aug 2026 18:32:08 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 10/11] target/hexagon: fix iassign{r,w} to cover all threads Date: Tue, 18 Aug 2026 18:31:43 -0700 Message-Id: <20260819013144.3264096-11-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfXwusuauW8oYVb U4mYBzovQzD3iPJTirgXTmw7x2621lsdmLYSPOGnxH/dPDltm6mY9HUxYiOMWG2TSY0DLwAGpnj 6r/+NfPquinxMg8w7TbBXVbER5yd/i2AkWfO9ilQZ1l4MrmCmcOwUQOGG3zfU9kcnVxSSK/sHPl TizRB/7UWmL6WAXFFoOwejYcOm5TGIigINLlEEGM8wQO90dypJPOJHHFge+JbWaXrn3WUm7Y6cv NgOWkhU35qF8CSZW9w/KqYkoFCsBo7TYZItDHpjDx9hrGnShb5PtyjJ4ALQARwZvQMkeTfNZ9K/ AN/jXv+KsKQquA/DlUliySld6EH5aY/Xju2FkJxGm94j0d9mzUFd6URGyGVHcGWhODTq9Iacx52 RyvSuQULROAaGdiqVGW/ZnmcwTzFglrId73OXgiYcH2fp9dBGlq3Jcin19dvv1dUX8V3ihUAmNM nUVSgAtjnc4I5tiQ86Q== X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX5Yghf9B7OH+I 6i59QDck/3NRq6sJn5rraRm8R0yV39uxUHuz5LC0DU89nRJzQ222GjAP3cxbzzKxZ95VW/4ZG6F QqhYnYwnyUb0Mr5Czno+17EeiGCMXqE= X-Proofpoint-GUID: j_J38N8rTucarN9ijywBaZP2TtHSrJ2q X-Proofpoint-ORIG-GUID: j_J38N8rTucarN9ijywBaZP2TtHSrJ2q X-Authority-Analysis: v=2.4 cv=J+SaKgnS c=1 sm=1 tr=0 ts=6a850799 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=1MU65uQV28RDXwrdXuMA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 adultscore=0 clxscore=1015 priorityscore=1501 spamscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @qualcomm.com) X-ZM-MESSAGEID: 1787103163344158500 iassignw/iassignr were filtering CPU_FOREACH by MODECTL_E, the thread-enabled mask. That mask reflects whether a thread has been started, not whether it exists, so IMASK writes/reads never reached threads that hadn't been started yet, leaving their IMASK stale or unreadable. Drop the MODECTL_E filtering and operate on every thread. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/op_helper.c | 42 +++++++++----------------------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index df31ed2488a..e19c3c91085 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1637,61 +1637,39 @@ void HELPER(cswi)(CPUHexagonState *env, uint32_t ma= sk) =20 void HELPER(iassignw)(CPUHexagonState *env, uint32_t src) { - uint32_t modectl; - uint32_t thread_enabled_mask; CPUState *cpu; - HexagonCPU *hex_cpu; =20 BQL_LOCK_GUARD(); - hex_cpu =3D env_archcpu(env); - modectl =3D hex_cpu->globalregs ? - hexagon_globalreg_read(hex_cpu->globalregs, HEX_SREG_MODECTL, - env->threadId) : 0; - thread_enabled_mask =3D GET_FIELD(MODECTL_E, modectl); =20 CPU_FOREACH(cpu) { CPUHexagonState *thread_env =3D &(HEXAGON_CPU(cpu)->env); - uint32_t thread_id_mask =3D 0x1 << thread_env->threadId; - if (thread_enabled_mask & thread_id_mask) { - uint32_t imask =3D thread_env->t_sreg[HEX_SREG_IMASK]; - uint32_t intbitpos =3D (src >> 16) & 0xF; - uint32_t val =3D (src >> thread_env->threadId) & 0x1; - imask =3D deposit32(imask, intbitpos, 1, val); - thread_env->t_sreg[HEX_SREG_IMASK] =3D imask; + uint32_t imask =3D thread_env->t_sreg[HEX_SREG_IMASK]; + uint32_t intbitpos =3D (src >> 16) & 0xF; + uint32_t val =3D (src >> thread_env->threadId) & 0x1; + imask =3D deposit32(imask, intbitpos, 1, val); + thread_env->t_sreg[HEX_SREG_IMASK] =3D imask; =20 - qemu_log_mask(CPU_LOG_INT, "%s: thread " TARGET_FMT_ld - ", new imask 0x%" PRIx32 "\n", __func__, - thread_env->threadId, imask); - } + qemu_log_mask(CPU_LOG_INT, "%s: thread " TARGET_FMT_ld + ", new imask 0x%" PRIx32 "\n", __func__, + thread_env->threadId, imask); } hex_interrupt_update(env); } =20 uint32_t HELPER(iassignr)(CPUHexagonState *env, uint32_t src) { - uint32_t modectl; - uint32_t thread_enabled_mask; uint32_t intbitpos; uint32_t dest_reg; CPUState *cpu; - HexagonCPU *hex_cpu; =20 BQL_LOCK_GUARD(); - hex_cpu =3D env_archcpu(env); - modectl =3D hex_cpu->globalregs ? - hexagon_globalreg_read(hex_cpu->globalregs, HEX_SREG_MODECTL, - env->threadId) : 0; - thread_enabled_mask =3D GET_FIELD(MODECTL_E, modectl); /* src fields are in same position as modectl, but mean different thin= gs */ intbitpos =3D GET_FIELD(MODECTL_W, src); dest_reg =3D 0; CPU_FOREACH(cpu) { CPUHexagonState *thread_env =3D &(HEXAGON_CPU(cpu)->env); - uint32_t thread_id_mask =3D 0x1 << thread_env->threadId; - if (thread_enabled_mask & thread_id_mask) { - uint32_t imask =3D thread_env->t_sreg[HEX_SREG_IMASK]; - dest_reg |=3D ((imask >> intbitpos) & 0x1) << thread_env->thre= adId; - } + uint32_t imask =3D thread_env->t_sreg[HEX_SREG_IMASK]; + dest_reg |=3D ((imask >> intbitpos) & 0x1) << thread_env->threadId; } =20 return dest_reg; --=20 2.34.1 From nobody Sat Sep 26 23:03:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1787103250; cv=none; d=zohomail.com; s=zohoarc; b=I3zEKujIRhP0SnOCKAFg0Aq7hDK7fvXI9951yYCIp6O7v/aEyPbmviaXtU00bJvyylKkg0EfAegP8c9lYUd6topHwyxQBkHKWiuph5uBQ3ayoXMAtFDh8OwY4ZqUyDn7k8tIBpt3kCO7ndAcHv9RAmyWXSkw/CDEBV8cmdlESOo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787103250; h=Content-Type: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:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=vL6EilpIGkizHWX++hIEuUs37YE9GHOFZfdQUQTTLwI=; b=UDspzdvhCQ1chva6FSonXFp5q08IMtkFNVLMM+uoudV2TgrxS/0aV8AlEizfM5MBs/i9WSKsYioyd4CLpI77Oje4uz1j/RZP9MJH5lWh1R3gPMhiCGFo+uqRKXxUQDEW7yQthGSrAip9Jdku0jLPLmaXcGiYU1jkyfV9xTOWoIc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787103250225698.0348440192876; Tue, 18 Aug 2026 18:34:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwVA8-0008Nh-9t; Tue, 18 Aug 2026 21:32:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwVA6-0008NT-I3 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:14 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwVA4-0008ES-PX for qemu-devel@nongnu.org; Tue, 18 Aug 2026 21:32:14 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67INl2s31833054 for ; Wed, 19 Aug 2026 01:32:11 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4yfm0q99-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 01:32:11 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-3954def0191so899540a91.3 for ; Tue, 18 Aug 2026 18:32:11 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327befa4b94sm1157539eec.13.2026.08.18.18.32.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 18:32:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= vL6EilpIGkizHWX++hIEuUs37YE9GHOFZfdQUQTTLwI=; b=PqY22DFMPCK3Vetj mzeaZhFjp+db8Ibx+U6dOjdEoHryTiux5/HwBMF5US3UZxbQOvZla98nCqK+pisV OZ9ptjdC2Yad2YvFjgsGlTSLQaGf5M/nAhl6HNml9oL+bPOkao7JoM/BrjgXIdgX 7RcxwvMOwDONpK0JT54X4z0u40sBpYvl82zflSJ6L8JEE6mBHMpCEoEy2P4/+bD5 XSFj53R8iAUsFZW8P+96+iD2d7NCqPqN3RSu6franjAiztu53rH38KIDcvaiSUQx FukQkpu0vG/BjCoIO8wbd9I8kmTcFqxGw8k1PCmqdtautpR7LDO/o6WOid9YbaTQ ko3SEQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787103130; x=1787707930; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=vL6EilpIGkizHWX++hIEuUs37YE9GHOFZfdQUQTTLwI=; b=ilcrnVTU1A5+ZWKMEssWzOb4KG8E9ccQZRO2YexunHI0No4E11l85/CBlXB+hPp2il iP9fO7/1GQbcjEkm6tHFk0jm9fW3izcXtGXn22KsLh5zRrEB1AG48irc7wkEzU+Uj2Nt kaiujyaTyZ9vHcYQCH3Kvk4oQduOklB0VsqVXPR/G27O9N9oOK5SBWILAyRXMC+5yNDo 7lWhl6crbpHeihNXsj0tpxEYn4Fwq02bAWy858sXYAFsQoNHShxeNqMMrMswrIZR4gpV bL6kY76HybA9KjpFO0RnFhHlSC5qwcKQnmGvQtHOtjGOGfv9LnPENDpBV/D+NmAjTXTR 5GkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787103130; x=1787707930; h=content-transfer-encoding:content-type: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 :content-type; bh=vL6EilpIGkizHWX++hIEuUs37YE9GHOFZfdQUQTTLwI=; b=fBIqax3QBuSUzebISCkykv+QiCjcw3YNaeGsaCHIJuX89/0mmu8Thx2O49Ijpg1eLk 4GYGyqvaLd7B8oNqO5U/u3EwAyzojUex+pkwOvg1KEgGVjTk+hLDz3NLqYFm5633vwZb bIGBiQI0ywljs3vqOxsxZWAPp5Lz6mu+ZIyXJ7HvinWQFNy0FM+PLhfY4Iw1cstc5uM4 N3glvYyHiXoMfLA+aDf7ILjr2lVzrHIhveBnrRoPs48TmDx6uHAeDb+ZFkDZrDzI3XRQ oV+keWRSZvTLYMvzBmkuE/2mQ0cWx6mItBj0gKp4OogZC1RGCNsNA4WioJxHeQNIzNrC PFnQ== X-Gm-Message-State: AOJu0YwmDjtxzifYRuZsJ6Lv4L8lEeAJCjT7kHDgpOLfaGgy7JDbHHtr o+229cexmt9pZtDP0ohjDOFl2PyQL8kS6PkD8OXQAFIHpfwsUMAuKjX7olouxblU8PpoWd0gWre 1sARN7xt4W+Wuef1kge263oP0Ft8837875VQ792g7I2QQ4+HOrrhYPDNVd8h783191g== X-Gm-Gg: AR+sD118XEcKNBB3BSY9IhBC5z6Uks+xAntsle7gtzSe/xJQGhtcuUAeRjX4i7FasuH Wt9kL6UNwaDI+rVrWuXU2NCt2XxCp9S3HHmeQqjfJs4yApCQfGAj0whs3S7Gu5ryJ4Z7Wuh/yA3 sHs/etV9UkO8OhR6SAzuyfiK3H8NPHKEaSfd46gM9cr9e+htXf9sIczUI9kV2urlYtHsQjUSXPA BcNS9o1LoOyZILD7rGg92XGabg6YLW1FlPHweqiDf3De755mo0DUWv/CdpscyhYKoWw13lecPVC 6tQLpulwSCetSMeNi3wGR6fwpfkQN97kb4+7BYt5QEcu9pAY/5PrC7sniDs6NC1hxbqTiyY3uS4 JEXtKOWWQxcXShr9W4jbYbqjIgR7qXMIVsAf7g1scoZeZZ4DS X-Received: by 2002:a17:90b:4ac9:b0:37f:ed7e:7e42 with SMTP id 98e67ed59e1d1-395810cad6amr1778267a91.14.1787103130454; Tue, 18 Aug 2026 18:32:10 -0700 (PDT) X-Received: by 2002:a17:90b:4ac9:b0:37f:ed7e:7e42 with SMTP id 98e67ed59e1d1-395810cad6amr1778177a91.14.1787103130021; Tue, 18 Aug 2026 18:32:10 -0700 (PDT) To: qemu-devel@nongnu.org Cc: Laurent Vivier , Brian Cain , Helge Deller , Pierrick Bouvier Subject: [PATCH 11/11] tests/functional/hexagon: update to v0.2.12, +test_{interrupts, sys_regs} Date: Tue, 18 Aug 2026 18:31:44 -0700 Message-Id: <20260819013144.3264096-12-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> References: <20260819013144.3264096-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: UH-5KBW_75hemdukxL5DHXoEnJxnh2Hl X-Authority-Analysis: v=2.4 cv=bth8wkai c=1 sm=1 tr=0 ts=6a85079b cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=5vFef2XoAAAA:20 a=EUspDBNiAAAA:8 a=0juuJDdZq1bm1YNGZfAA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-ORIG-GUID: UH-5KBW_75hemdukxL5DHXoEnJxnh2Hl X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX/8eu8yK36e1M ml1WpNwtx9F03ykJcK07mTrz14+1KXu2u49guqjbqCMkT6bTv/CeGRENiZhnAGw4xxsP7gOfixe eWs2VDIuMQ7J79LcabfPHRYGBxKA2G4tezY6LBSaIckaS3b6Rsfe1dl5PSVV1xo8uoe6JgVPRXh 5XGdOcLtEPsVWg153jTFH0HxZMquq72sQMVZaiOl0Ds2teMwkPuS6GfJRoP27eBPHVJ0xFHLybh onCy/0biEH8km9W0Uz1hMn2Y5EME0p5Qge75XXAGvYcC0psAcujJfJmPBZM6lqvx/U3CCQhSLrv FwVz4ccPqC/7OwXkPMMzMRFj7fVpgXCBnRBOXRkavFgKP1ZOxWVTKzkyKN8S8cT2efobOaQXRxn ww7fmNqbJykXAvxSI2KyF+rHdOR0kIvp07xMrAp90G5fAKuusMJzr+TVbgqVTNXcosnOtZrLHkW 2hvUOqnKK7lFrdix8jg== X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAwOSBTYWx0ZWRfX5uYyeAqfHaaD VIDzYALHcDZUmNu7vJcnffQ72D2i1ozP9ycChwfo8mPFTE8YBtaTya5K/OjIs3wjKuuTR9znE3c mV7/fte19daPBdbXuXVKWDYtVFJsUHI= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_05,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 suspectscore=0 spamscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190009 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Brian Cain From: Brian Cain via qemu development Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZM-MESSAGEID: 1787103251704158500 test_interrupts also now passes in full following the iassign{r,w} fix, so enable it alongside the other arch tests. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- tests/functional/hexagon/test_arch_tests.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/functional/hexagon/test_arch_tests.py b/tests/functional= /hexagon/test_arch_tests.py index 0834398c3b1..8e71386c186 100755 --- a/tests/functional/hexagon/test_arch_tests.py +++ b/tests/functional/hexagon/test_arch_tests.py @@ -21,8 +21,8 @@ class ArchTestsUart(QemuSystemTest): =20 ASSET_TARBALL =3D Asset( "https://github.com/qualcomm/qemu-hexagon-testing/releases/" - "download/v0.2.5/arch_tests_uart.tar.gz", - "edb4f37b877a3a72a0e10920477458a43b40045d34398fee8cb763fefd342f4f", + "download/v0.2.12/arch_tests_uart.tar.gz", + "871a339bf78cac0ebaf1b2509bfcd5b249ad8190be33e0cf848283b2f6915323", ) =20 def run_uart_test(self, test_name: str, @@ -58,6 +58,10 @@ def test_int_steering(self) -> None: """ self.run_uart_test("test_int_steering") =20 + def test_interrupts(self) -> None: + """Tests interrupt delivery.""" + self.run_uart_test("test_interrupts") + def test_cache(self) -> None: """Tests cache operations: dckill/ickill, l2kill, dczeroa, dccleaninva, cache disable/enable, barriers, and dcinva/dccleana. @@ -70,6 +74,10 @@ def test_l2vic(self) -> None: """ self.run_uart_test("test_l2vic") =20 + def test_sys_regs(self) -> None: + """Tests system registers.""" + self.run_uart_test("test_sys_regs") + def test_threads(self) -> None: """Tests hardware thread management: start/stop, MODECTL state, per-thread HTID, shared memory, wait/resume, STID priority, and --=20 2.34.1