From nobody Mon Sep 28 00:09:41 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=1787115253; cv=none; d=zohomail.com; s=zohoarc; b=bc2BhNahQAv89xfu86axV9IMgMEFCJBDKoZop/9nQL0eZRYpAEgIa5OvqM/0gad7Hpozu9oql212y2au1lkzIJ7vO3Hha0NsO47Jmlx80c/2DoEWUsurMWVzJOxC/6mTH56JrtMnbdHJ5shvBUBmrwm6Uo84MlDOI93Y/ugRoxQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787115253; 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=DTnpwtj5Gfi9Hj6gNkpNJ3mVeY9cQhw/BZjlZ0es5B0=; b=dQs8dWqYH2P887Yxk+pBQXafPak5OrO79OCAMVuZQi7HMEAiamdtIRIWWX5ur7aRHQ9Oi5OUS8ebUOhEmFEE2YEtSDwqxmNpTnl4uYqJ2/mPCm0nqpro86O2O0yBPvffBZAJeXzbrPKLzhh8P9tSywecUu0SOFE66O9hKEkgIDk= 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 1787115253528352.7825775863995; Tue, 18 Aug 2026 21:54:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwYJB-0008E6-JB; Wed, 19 Aug 2026 00:53:49 -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 1wwYJ9-0008AM-5O for qemu-devel@nongnu.org; Wed, 19 Aug 2026 00:53:47 -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 1wwYJ7-0004jJ-D6 for qemu-devel@nongnu.org; Wed, 19 Aug 2026 00:53:46 -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 67J2lPOi2223233 for ; Wed, 19 Aug 2026 04:53:44 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 4g4yfm1c7x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 04:53:43 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-ca6bd8a190cso690212a12.0 for ; Tue, 18 Aug 2026 21:53:43 -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-327bef3ce17sm3763421eec.1.2026.08.18.21.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 21:53:41 -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= DTnpwtj5Gfi9Hj6gNkpNJ3mVeY9cQhw/BZjlZ0es5B0=; b=QSoS3DAA794jVnvP 16F6CktuzAMjBq3f02Re5J6gbYQm7ATTsM+cq21GBxIizh8zk2DzF5h0J1gA7FhJ uLYPY59AQgM3YqH4TBZftSh8cE3wxIAWpZVArzZn9piqxNp1zjm5Og1mKkPJWDbQ 8NKcnCHCTGEZBkWPDVwf/bu2NO63ols6kNnH/OkUSDfR5rSAgeGw740qFauCPVSn z/w7p+kcmrDnaOprnC9OcnzKdsfNd5Ha/UCJq2S4YypH8VNcDOMNolO/sf6xici6 NCLqpl1E+L+nSigaqCp4mPnHfCzzQpNq6zg+R6lCb5Q/cNbXUHhZ+70TCnVDhPu5 1IMDqQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787115223; x=1787720023; 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=DTnpwtj5Gfi9Hj6gNkpNJ3mVeY9cQhw/BZjlZ0es5B0=; b=HB+F3RJce5lXRWKUbzZtsXtdEZPmycABNNLRab5eaiRjRXLy4sZyReYBl2hDWtVy4f y+jjZe1ggXcn+wEGxPGzjMGLZbpR1C0ztGKhUFEFoMqc4FZ0/N5h5+QP5Dv/9mDFnRkU 4BbiFpbJfYlD0kLt4X6R9Ko7AZYgq0poabfdMkKLvPRwtCSfZy2EFErxZ3QACWqjdzb/ jHwmi7BifcLtXpYcZaDFx3di7Dw2Mj2/O6oGzmOMVKXpTipV2lR2G+GR00Y5KsrCrRxi HajLIc67sUvcN6M5uGpNKBjDvhjkiKXrdTqCZOcJcsxjS2AQdNvPaYqevyY2HjmJ+sIH D/HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787115223; x=1787720023; 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=DTnpwtj5Gfi9Hj6gNkpNJ3mVeY9cQhw/BZjlZ0es5B0=; b=M/x+mGnNzLfTNv2D0b5/Iq3Dtk2yCc/VrA8YyliWZedrmCgeHziBvednpwrGtJlDws RwB++d7yoAmVbjix4mRbXgB/WnInml1ujYKLklTLFhXk+TKw6Ye5hoZDUBKonVBNwppR Tr+vflmtdr9g6NdDUSlMjz50zIbybA9LwB3Ho9TWc9o1qPmj9aNpIWnOyiD+nHOrSr0+ N7UcKQ8iI4EwtlNcD2dlSL5zJWVsV75EaWMks9RF+F+5zr4ZNkqJvDTZrLmkVK8ZpdIr KEVSxw9j6O9bp03vK6C8IzyqGDhoxN2BiJJpTLT25/RGlayd8qufki4XwZuKv3eZMHM3 wtjw== X-Gm-Message-State: AOJu0YyiQqAXFILHFU+Uyn9r0pVApPdcE1WKsUyrMiBRr9BdevM1kHhs QxqX35rbFqes3V9DbX0MagHFrSjDlSzoQs3/EOyB+bKJGku5queSnvlpAimjXpExe3ZfWeHU8li JAV+Qg2eq+bVOJR+gPhqqPnF4grvXKiQs5tiFhanCKTuFs4w65oAoS1lm5JQGsNob5w== X-Gm-Gg: AR+sD10KjMj5GPGtnrXI/va74cQ6B+NzUQJnpcFJCbculxdc2N6sGyiimkKv3AWVBAy 9k2CiwhDFxldkdikRupx8yIvKzi5Y1mMNvyPtEaU6tquvcsa35ReKaFf7Fp7MW2KESawJ80+Y2r DFJGUGVWOzBqSSRJoZp1IJjXa8m3YO232DqRFrNavAKcPkiN3jPxmlPIZu7/GYIOM0sk08Tiu4w qOGzmJ59G1sOommf50QvrWrX8AIS8BRJl+sGp7dg7w9GFszNSkrIM+x50HX9Rc2X3D5QnxPvZRZ mNoezyoNisghkCQtIf2qoHdIbzTF0sqTBov+QTySvJJKjl+aKTwZsLIJi3ujnvo+iRVo9A/vrkl Fuwt2wqN9272QmnydxeqC4eCbSB+X46S6VfqOmZJyDQC2a+Q2 X-Received: by 2002:a05:6a20:914c:b0:3c3:9070:96b3 with SMTP id adf61e73a8af0-3cd00db96f0mr3857293637.3.1787115222921; Tue, 18 Aug 2026 21:53:42 -0700 (PDT) X-Received: by 2002:a05:6a20:914c:b0:3c3:9070:96b3 with SMTP id adf61e73a8af0-3cd00db96f0mr3857237637.3.1787115222508; Tue, 18 Aug 2026 21:53:42 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , Brian Cain Subject: [PATCH 1/2] target/hexagon: invalidate translated code for user icinva Date: Tue, 18 Aug 2026 21:53:38 -0700 Message-Id: <20260819045339.3661773-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819045339.3661773-1-brian.cain@oss.qualcomm.com> References: <20260819045339.3661773-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: EPmweOr3YskxiBQPLf3ouWdnEOlatcqk X-Authority-Analysis: v=2.4 cv=bth8wkai c=1 sm=1 tr=0 ts=6a8536d7 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=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=ooCGj4RZbTp4S4j5W-YA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: EPmweOr3YskxiBQPLf3ouWdnEOlatcqk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAzNCBTYWx0ZWRfX/Aa4RmMxqspQ MoqguFUSY4f4LESaZU4yxbAeh7iDXFNUn7UEvm3oR7vh25/XanMW/NMqgflU0VyXnoVB4vD6GYs 2hik8DJWqn6KVzqF9rGD+oEZrAR3tc3jAuF4b2vbXN2t2SmY/YG+0EJ4LuOLYWATtrkOhk9K5CY /x0chjQpZIdx/ZDn4gt9x081eAMS9VJ8nK9JXG545ImTDt0qazgmT7Ci6lAoauDM6JSRQRJaRlk BOnsm0KcB3Ei63xEgrShP9a5n0R+bSfqKIn84Xkb6un2NblwOvzx+W7q8YaVxawng3yd/qmJCWf ADNiaeIoOY0k8gTgUsosd6GxvzBj5hmiFV8V01WpzWGI69Slm0rt+rPvjXoVuI7S8MCmQhTH1Xb +pXcyjuLRrhOCdZT9bwMqZrGG5nepyZbQjHNXr/SCTLHfkFSk7kRzw0S2XhAJcjGnmVzQ6kkmzy FGxCRQZ9we68CWFoBGA== X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDAzNCBTYWx0ZWRfX8v8CI4U6UVkf 4gwyyJ42FAp9xzbJAKB5aAMe6o/nf5Ktp1Px6WUY440siSAI7+NIvq8fI7Is05R7+bp1nUEEBh3 MzrVCIChiDuuRV8nOsQskU2dhk/NG7o= 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-19_01,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-2608190034 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: 1787115253903158500 Route linux-user icinva through a helper that invalidates the addressed icache line under mmap_lock For system mode icinva has nothing left to do, so it stays a nop. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/gen_tcg.h | 9 +++++++++ target/hexagon/helper.h | 4 ++++ target/hexagon/op_helper.c | 15 +++++++++++++++ target/hexagon/translate.c | 3 +++ 4 files changed, 31 insertions(+) diff --git a/target/hexagon/gen_tcg.h b/target/hexagon/gen_tcg.h index 40e03781d36..1d25391282a 100644 --- a/target/hexagon/gen_tcg.h +++ b/target/hexagon/gen_tcg.h @@ -497,8 +497,17 @@ do { RsV =3D RsV; } while (0) #define fGEN_TCG_Y2_dccleana(SHORTCODE) \ do { RsV =3D RsV; } while (0) + +#ifdef CONFIG_USER_ONLY +#define fGEN_TCG_Y2_icinva(SHORTCODE) \ + gen_helper_insn_cache_op(tcg_env, RsV, \ + tcg_constant_tl(insn->slot), \ + tcg_constant_tl(ctx->mem_idx), \ + tcg_constant_tl(ctx->pkt.pc)) +#else #define fGEN_TCG_Y2_icinva(SHORTCODE) \ do { RsV =3D RsV; } while (0) +#endif =20 /* * allocframe(#uiV) diff --git a/target/hexagon/helper.h b/target/hexagon/helper.h index 78dc28ca9e5..a5a5c123533 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_5(insn_cache_op, void, env, i32, int, int, i32) +#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/op_helper.c b/target/hexagon/op_helper.c index 23894ff3d28..84f5564b1e6 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -23,6 +23,9 @@ #include "qemu/main-loop.h" #include "cpu.h" #include "exec/helper-proto.h" +#include "exec/mmap-lock.h" +#include "exec/target_page.h" +#include "exec/translation-block.h" #include "fpu/softfloat.h" #include "exec/cpu-interrupt.h" #include "internal.h" @@ -311,6 +314,18 @@ int32_t HELPER(vacsh_pred)(CPUHexagonState *env, return PeV; } =20 +#ifdef CONFIG_USER_ONLY +void HELPER(insn_cache_op)(CPUHexagonState *env, target_ulong RsV, + int slot, int mmu_idx, target_ulong PC) +{ + target_ulong start =3D RsV & ~31; + + mmap_lock(); + tb_invalidate_phys_range(env_cpu(env), start, start + 31); + mmap_unlock(); +} +#endif + int64_t HELPER(cabacdecbin_val)(int64_t RssV, int64_t RttV) { int64_t RddV =3D 0; diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 06a8159d283..1560c412732 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -354,6 +354,9 @@ static bool pkt_ends_tb(Packet *pkt) if (pkt->pkt_has_cof) { return true; } + if (check_for_attrib(pkt, A_ICFLUSHOP)) { + return true; + } #ifndef CONFIG_USER_ONLY /* System mode instructions that end TLB */ if (check_for_opcode(pkt, Y2_swi) || --=20 2.34.1 From nobody Mon Sep 28 00:09:41 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=1787115256; cv=none; d=zohomail.com; s=zohoarc; b=a07q+t7j2dORh9X0X1zirvlLFrg0I5YFCBi2z9gWaN58jecdLmivGKP7qj/gjQ+rKY2nC4rHqXNynut9alPlEh+0KMe8Ltk6/T3JDtCUmKO+Z4xYQMT6JfcGIJvqoGexVOyEWiOEoUXVsMUA3BopkZ1bA8Ed51INSLHE62zerI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787115256; 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=IrikZtqmYKRJ/VitVeFEi2+IURvKU36MikEGHCBxKKg=; b=P/RvoxXqlPvIVrhxRPsfZm8o6u3KFkG4r+07xfHlPJpylDv8zhnNCM8u/fjwEzM9pgtaYLf96s68IIhYTg/ycsf2KnTdadUdEKdVfxo5tseqsZanUqq2B9bbu+NpS7X7BaCIU3hvOJj3EtFuJdYAUHA0i3rexdool+Of1EaMSsU= 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 1787115256868549.8187014061737; Tue, 18 Aug 2026 21:54:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwYJC-0008E8-SN; Wed, 19 Aug 2026 00:53:50 -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 1wwYJA-0008Bo-MX for qemu-devel@nongnu.org; Wed, 19 Aug 2026 00:53:48 -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 1wwYJ8-0004jb-Sc for qemu-devel@nongnu.org; Wed, 19 Aug 2026 00:53:48 -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 67J2lMxS030189 for ; Wed, 19 Aug 2026 04:53:45 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 4g4yfm1cmu-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 19 Aug 2026 04:53:45 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-848568a6f62so898833b3a.0 for ; Tue, 18 Aug 2026 21:53:45 -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-327bef3ce17sm3763421eec.1.2026.08.18.21.53.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 21:53:42 -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= IrikZtqmYKRJ/VitVeFEi2+IURvKU36MikEGHCBxKKg=; b=LIWN/mBDWElNXsmg rIucOSMQo7CgBC/qJy6X7U0FYkRcN8Eqj8N5wVxxGraoGRREZDGJELiXgEHqllq/ RnEazl6IK5xqAdb2MG7YR3j3H48QqwWhhvgW4h2dhePPmc21KVmVL9qKKzAXgcur B4rN49N3xfcW701yvDKcLOd/7wfALqU2q4gOx3/AmvaW3r5xlyZCZbnLdLbwqYO+ i0HZ11nLaYVBfnf5GCfsqiWA8ffeXh42A17y/1I5bKo6XF3zSTQ7ljPk2ozeoR0l zenZlCWVJgCfjHJh461BnK6+47ccPYb7iU5SBUUQ30+3Gv2lDRvMIyGVjLbBD2FJ olvjDw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787115225; x=1787720025; 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=IrikZtqmYKRJ/VitVeFEi2+IURvKU36MikEGHCBxKKg=; b=CNWhmWb+3da4XdSwExIA2Q+GDqu6dPxFWBNs0xGWpjIUihdTYbeF4NhZUhyb/ZGXiy G5hG6ncmb4Fm5t0kehFEBJfft+/ejbMHCGf7v1Qd3vRd+dM318dP0RGhI/f170ggmyS4 JWZMz5pzPXRa/WiNnXVnOKIMLGKkPZ326IrgVI2bjr7+/IEaawEO4xvCQUqRC8WFfnhJ XgClf4AfR5kyeIqceyJFhdXFqJ0y2r/oGrA1FQxhuck9D7UlkiZ0LsPTR7ir0J1kgz6H z/8jJPcxtISmujFA/5Os2Hd0Vur2slzUGQVsgwfmYZlwsWqor4MJ8bgKJ2AlSGk7z2pS Oacg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787115225; x=1787720025; 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=IrikZtqmYKRJ/VitVeFEi2+IURvKU36MikEGHCBxKKg=; b=iem7c5bYCUASL7O5clPpSNcQAL1ENi+Boc2tZeWZcWfplKWtPnt3B1zdpFYO2xpt4E jbtONlte0pGYRXTelzSskpH3GxxZL5/YIn5f65N6/rviFhUGBh8CiYtvjtNJg/woG0ZS QGfF0TCD93bQ1Ce1v4Ayxbsfc4MzGXtNlgm0E3kb3lLPhooqfuwu4j/imXoiJFuvsdjv qGHaR7H1hxAtiUUUC48bZeAT17DhsAAJMHTZoyjXVIazbeR0p3l4wEJhTAfx1mNADOUu RYWusb7h1cZaHm5M9eV0f3IMenjBr1ZFIE6tqQJZ5/wF6lqSPAG+N8lv25jdGqLbMtl+ 37lg== X-Gm-Message-State: AOJu0YwKDAIW1G1Jgc/XC76kG/gBRz7OUAm0Qi3jv7FMcSmdvaoG09YQ 8TNWYgMk1GfZq3U2IvD5MP2v0b/G+i+3INqnD0R1K3/LOGdmAESpw+Ibg8bWQuKzfGlu81kZqsH wUeV3r/UbclGt/sf1FaJLvmwDD6lutLNxjYyV/NOoubw2u+BHKrVCL+jX5k12ZyhNpA== X-Gm-Gg: AR+sD10eItfWqNucg96vttyJotLVWHL6r4fDtix3Pnur3k4XGNJuEMvL39EkGaBo6Oc zdE4/PDcde+CMBCHLmtDD8szwuaxgr4dXt1WOq2Lo3VVaaWedAfp2ai94TMdRoA8iQzZbJwi1Fd sj/aA+WqCR1NpTEYt85WQEX4Bis4NaH3Zl7I5uF7D8kjYHvtjGLjRPTgdTO/eRB3GXeNZFdDKGB Ip3ju/b9If2KRJF8Hrd4UdXu61GN8Y+1eAOXZd6R+6ebJu/0tOGusGDAWEeLdtwGUf35oZloxiP mIOzA2TOWIJmNfloXufcJAspi4UEIyljaQbTrqe9U1sp5WWRBSvYIQHgFaTU/UJdKwkJFJwVsyQ 8Mt4EFlVH6o8ddsTi1NcHYDCVcjVTNasTDnoYk3QgWF3Vo1nx X-Received: by 2002:a05:6a21:748e:b0:3c3:f371:1ea9 with SMTP id adf61e73a8af0-3cd011f30b6mr4409106637.10.1787115224515; Tue, 18 Aug 2026 21:53:44 -0700 (PDT) X-Received: by 2002:a05:6a21:748e:b0:3c3:f371:1ea9 with SMTP id adf61e73a8af0-3cd011f30b6mr4409043637.10.1787115224056; Tue, 18 Aug 2026 21:53:44 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , Brian Cain Subject: [PATCH 2/2] tests/tcg/hexagon: add icinva test Date: Tue, 18 Aug 2026 21:53:39 -0700 Message-Id: <20260819045339.3661773-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260819045339.3661773-1-brian.cain@oss.qualcomm.com> References: <20260819045339.3661773-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: AW1haW4tMjYwODE5MDAzNCBTYWx0ZWRfXxD/3gKF+XwRb 9LcDccXgMmKKqTtuMfHGThr45UGCe4t4h5CxyxRSVhbzhi2eJm2XySeAWhssafMfV/khAjuYt4o zaBlPdNOefdMIBn0HXUUpXJ5+hvEGrg= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDAzNCBTYWx0ZWRfXwR+aoSf+9juB 0vSjfuRozTOvYeZqhqSDbjdXyvrnj/lJ+E0qno1CiZCPTqi4GWjovwL1iU2TEq20dSHxxRLuMfQ XCUD9Q9E9eLwhIZqKZE5lQ4HOGCPP4F0L9N//hwMnjehiNM6XzUD/GnjoH6nThfiL2d3Uy8mMDf F6ljnDaUPIxlP1xbLIO5IYz5gN2NaoEARuYyHVjioTruYrqJ0cl9+NKgFhDyHdUjSWcftkVXhm/ NXR195NWlDCm4tR2nJeTY7WvmMnMV4yjyfCONbZo27dD+KWcMWfAfMfYdEMDONgso7xwISedBYQ diBtShOH88UJdo2lhdSRyzavwxveBWYk44WwqMVd/8xT2v1jDXHvjG7qLLIU+/iknXSFoblvB8M lOryY6osuvTFRTroeCvenOLltz0lpruYXjmOdtNrOPXTjTSjEAdqN4HXjIeu30eNk7wdVnKT9p7 XXsY1E/SArgLNmIlU9A== X-Proofpoint-ORIG-GUID: 8oGCEiBuvqPF_G7zrMimfJXvfrfzq5-G X-Authority-Analysis: v=2.4 cv=bN0m5v+Z c=1 sm=1 tr=0 ts=6a8536d9 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=7vJHg93iHWy1kEV8rwgA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-GUID: 8oGCEiBuvqPF_G7zrMimfJXvfrfzq5-G 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-19_01,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-2608190034 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: 1787115257890158500 Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- tests/tcg/hexagon/icinva.c | 71 +++++++++++++++++++++++++++++++ tests/tcg/hexagon/Makefile.target | 2 + 2 files changed, 73 insertions(+) create mode 100644 tests/tcg/hexagon/icinva.c diff --git a/tests/tcg/hexagon/icinva.c b/tests/tcg/hexagon/icinva.c new file mode 100644 index 00000000000..0252e0f899d --- /dev/null +++ b/tests/tcg/hexagon/icinva.c @@ -0,0 +1,71 @@ +/* + * Test that icinva ends the current translation block. + * + * icinva only invalidates the emulator's cached translation for a + * code range; it doesn't retroactively fix up code that has already + * been decoded as part of the still-executing translation block. If + * icinva doesn't force a new TB to start right after it, a packet + * patched via a store immediately before icinva (with no + * change-of-flow in between) still runs the stale decode baked into + * the current TB instead of the freshly-patched instruction. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include +#include +#include +#include + +int err; + +#include "hex_test.h" + +/* Encoding of "r0 =3D #99" */ +#define ICINVA_NEW_INSN 0x7800cc60 + +static uint32_t __attribute__((noinline)) test_icinva_smc(void) +{ + uint32_t result; + + /* + * r1 =3D address of the "patch_slot" packet below (1:) + * Overwrite it with the "r0 =3D #99" encoding, invalidate the + * icache for that address, then fall straight through into it + * with no intervening jump/call. + */ + asm volatile( + "r1 =3D ##1f\n" + "r2 =3D ##%[newinsn]\n" + "memw(r1) =3D r2\n" + "icinva(r1)\n" + "1:\n" + " r0 =3D #11\n" + "%[out] =3D r0\n" + : [out] "=3Dr"(result) + : [newinsn] "i"(ICINVA_NEW_INSN) + : "r0", "r1", "r2", "memory" + ); + + return result; +} + +int main(void) +{ + long pagesize =3D sysconf(_SC_PAGESIZE); + uintptr_t page =3D (uintptr_t)test_icinva_smc & ~(pagesize - 1); + uint32_t result; + + if (mprotect((void *)page, 2 * pagesize, + PROT_READ | PROT_WRITE | PROT_EXEC) !=3D 0) { + perror("mprotect"); + return 1; + } + + result =3D test_icinva_smc(); + check32(result, 99); + + puts(err ? "FAIL" : "PASS"); + return err; +} diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile= .target index 61adf6356e4..27268e66b7a 100644 --- a/tests/tcg/hexagon/Makefile.target +++ b/tests/tcg/hexagon/Makefile.target @@ -60,6 +60,7 @@ HEX_TESTS +=3D invalid-encoding HEX_TESTS +=3D multiple-writes HEX_TESTS +=3D unaligned_pc HEX_TESTS +=3D unaligned_data +HEX_TESTS +=3D icinva =20 HEX_TESTS +=3D test_abs HEX_TESTS +=3D test_bitcnt @@ -103,6 +104,7 @@ circ: circ.c hex_test.h dual_stores: dual_stores.c hex_test.h fpstuff: fpstuff.c hex_test.h hex_sigsegv: hex_sigsegv.c hex_test.h +icinva: icinva.c hex_test.h load_align: load_align.c hex_test.h load_unpack: load_unpack.c hex_test.h mem_noshuf_exception: mem_noshuf_exception.c hex_test.h --=20 2.34.1