From nobody Wed Apr 8 02:52:32 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=1773202177; cv=none; d=zohomail.com; s=zohoarc; b=AWDzk5+3LZMake1ophtBFRYrA5lqLk9wgOln7cWm/+iItYvmBzrnb/BwNB8V+2h5UjlQupcNXz1mHJGTZletDAsnye2BIjRdhXC0HiR1llUkatc21YZA3da70i3rLOAfIIhJGMdCojaNmOvFsAFgKojGa1/FTaUZ2dZRlLAw0dw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773202177; 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=T9JTYXW+AYZiCgx4x8J2yUvCzjHE/kbJu94Psbyy1pA=; b=jBRnga+/3cUpTdeW7rgCASvZAFwjL3gZCG861oKPzcQjkB/d1OS8sgiamzOcLNEcCAIjBFP/mJHtiJBWMxQBq8FC6olC6EGLkbDz6Dqz3vWLhDW8NKDjrCTj9KEZNklxebV1xN8r71bLLwOeIudxCngmB8/WHfikzUjozQuSJQc= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1773202177720289.2070796151115; Tue, 10 Mar 2026 21:09:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w0As0-0000n4-IT; Wed, 11 Mar 2026 00:08:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w0Arr-0000l8-1h for qemu-devel@nongnu.org; Wed, 11 Mar 2026 00:08:20 -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 1w0Arp-0008TH-90 for qemu-devel@nongnu.org; Wed, 11 Mar 2026 00:08:18 -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 62AKoJEO1863538 for ; Wed, 11 Mar 2026 04:08:16 GMT Received: from mail-oa1-f71.google.com (mail-oa1-f71.google.com [209.85.160.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ctmw82q1u-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 04:08:15 +0000 (GMT) Received: by mail-oa1-f71.google.com with SMTP id 586e51a60fabf-417120d5378so27421849fac.1 for ; Tue, 10 Mar 2026 21:08:15 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-4177e5ea30asm998656fac.10.2026.03.10.21.08.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 21:08:14 -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= T9JTYXW+AYZiCgx4x8J2yUvCzjHE/kbJu94Psbyy1pA=; b=HRm8g1vpdGPoecVn XRv7fikh4erMvqX6rQzYcywYfkL/YzoTjTMosg1cET2tXMKkygkyi4yUgieRFPkh 84kNOuBOqlErCJLxI1eKBTmMwlyOifnqh2C8NT0T4ldxQUEakjOKdL69XFlI4Q1K Qu62sIHIbSyE+Uv1Q9ljCkrHvCEUJSAq+TtAsFg47fHLmZ5ri1PgSGrGkA17GuVL UERLQbN9+w3CNqHLC0H7pmD1savkwDvB03Q7N6D02ANyRvWMD4qYM813vVFuBH8e CTJiflVcHmcP7eW/yyDBCvfYd1Yatnf/eKu/nRYrEUDnYiAWMiQR+nANyYZuF1Pf cGc/2A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773202095; x=1773806895; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T9JTYXW+AYZiCgx4x8J2yUvCzjHE/kbJu94Psbyy1pA=; b=IWvf4+uVCLOAPi1yyEhXHzwJgXEMmmYlZYEK9LY5M4f8Qap7JaReNeJumJQZl9gl5X LbE0V/d04JwO+48tToYLKO/VZSXn2wycCN8KOKNYCVIsJwrB5/qp5DtipDa5ID8TapEc oNVGSlySFQwkqUYyVZDU/lY5jHockZfsSd//gi2nihjFN/lz7/Ls/FYKeXGZxXBu+Ap9 ps/mGiq+3Sdskx9y26s6lxzyHTPQRTC1Rb1w54LPrVPyynunTfpuZHL5aKVFJZhLA9RM spvY2WONzVjlNJw1ANzQlcZqaXkzMImFuhwGu4mTcPFiAKEBNZax1Q7ge1yOqFtSTt4k OJkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773202095; x=1773806895; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=T9JTYXW+AYZiCgx4x8J2yUvCzjHE/kbJu94Psbyy1pA=; b=MCJsBjORFGaNARYR0so8HV0fQwxz887VnVd2QnmSiU146iG6xg3OoSkh62p6V+6Gbm tVbdbl74uaUPbKxXoF+mUXgLN04rI49rA/NJUo85535Iop5WrN/5Y+vLQcoO401oXp/L PmGOcEkOeyUmgM8XZnWUyg31xU6SMRh87q4cw/vX7Qg0/FoU56I6HWlw24FS82Zu0hvY 1Q3LpXkAF5iqtmh73GiC2Kk4OWEKK18s1rSj0zMOg0iXCj1CIOi8yVfcTw9OVO+JTVv0 mUXOCMjYbVYztUQxLwyfcjD5aqA19LIcZ8fYrhR5Wr5xeGrMgyg1TyGxCa4Ije+AF08b 31bQ== X-Gm-Message-State: AOJu0YxBvS6D6ge5gwFNXYpBqmHSmxzLGDZTIANY9x06HJ1cgO2JoxTH 91kJyyVqQqTlS94zYSUI6VALGWX+hWDm2OI6nnFM+AhVcasOs2iIE98yKr3a/NFjh8sJ6qKOot7 tyvq76n4OiCB21+wcibUKEzAaXM6QHPXEmmbc9A/UAYq9tRibzf23325DtTagOXh6dQ== X-Gm-Gg: ATEYQzwT0/agPnDTU+N5CzCXbc5EJi/FL/Yjek+uCFGDwWleFPnwLpJ9fI6A7QTm6B4 iK2I+xwtmPs6tjgsvOfns8GvbX95W58cQ6Lb0poXG7fetNlu41yG9k3oWmdo0a6y+nxKlOqSTIS R5zW4fFhlGzE/oVR+6R64Fi+t1cbZtqFRYtzJA1IUYjxHvCgII6anEODHBqOSzhKrkrWbgWJoMR q2k9gTcdnzbdt1GQIr0gaFHP4lmqMmTWP0X8frtTfx7H33nvA0vGqM4sa52bFtHf9aZ7/Tf3Hud k3c9JYwNzJkfdPN0dMkElt5IhLMVKZA23g1ABAvcBDlbSw5sUCgG4mT7ZImG5viD3Ewfyn6QsHG 9pioKRjT5X0m6i9kKn6k/jwfHZ0rDIPy8nVO/U7n/HJV7sa785oIMJkcCqdC6thTSfjl/+g== X-Received: by 2002:a05:6870:ebc7:b0:417:6c45:b92e with SMTP id 586e51a60fabf-4177c6895fbmr794417fac.19.1773202094937; Tue, 10 Mar 2026 21:08:14 -0700 (PDT) X-Received: by 2002:a05:6870:ebc7:b0:417:6c45:b92e with SMTP id 586e51a60fabf-4177c6895fbmr794406fac.19.1773202094532; Tue, 10 Mar 2026 21:08:14 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, philmd@linaro.org, ltaylorsimpson@gmail.com, matheus.bernardino@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, quic_mburton@quicinc.com, sid.manning@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, Brian Cain Subject: [PATCH v3 06/32] target/hexagon: Implement wait helper Date: Tue, 10 Mar 2026 21:07:32 -0700 Message-Id: <20260311040758.1068731-7-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260311040758.1068731-1-brian.cain@oss.qualcomm.com> References: <20260311040758.1068731-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: yxq-Hu9UMo3X-dpABzoW0FKrMLLDWpJa X-Proofpoint-GUID: yxq-Hu9UMo3X-dpABzoW0FKrMLLDWpJa X-Authority-Analysis: v=2.4 cv=PJECOPqC c=1 sm=1 tr=0 ts=69b0eaaf cx=c_pps a=CWtnpBpaoqyeOyNyJ5EW7Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=UWtQ3YZIe0Xef7kIUYIA:9 a=QEXdDO2ut3YA:10 a=vh23qwtRXIYOdz9xvnmn:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDAzMiBTYWx0ZWRfX9Air2kO1HT+X QKY4iGVv/PMmGmClZnh6uAEoSFzY4tzuQB4LN9ocZCif2EmgYa96IOw35mrvO6uiMkFcXjoGk3P Hb0ZSJVq/epZkNoVWU4MX99N1HL5d5ACxNu6Qda3/dXFM7aLd9eJhkIcGGbSTlYCqoFj8SNRAZo KhhfHhB2WEFfPGZhYZsajAPi9W6iHhadXaOtldvZAlTy1t4Dpsab7P598K0+2G6hg5WssB+lMKJ 0w3JmHJe/j1qH2WLCiNuesYky67/YrrPO05EGxs03PSZm38yDxMCOUjyedg1xKAP/afcFEPVJGh N845sLpDSfQVFMWL5xt1AwVpeZJRriEuJPMr7bg19as3/p6tbSj6PUBvEv4F7cV735tIgbT5tkC MUwp6NP+0c2Wein0xM8l0uqlQWI7kGedgfwGVjizMO45qyc9U/BPewBI6MZYwRnHmFzQ6fYt3wj Y+0qT7BlzDVn2hIfgog== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 malwarescore=0 spamscore=0 phishscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110032 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: 1773202180111154100 From: Brian Cain Signed-off-by: Brian Cain Reviewed-by: Taylor Simpson --- target/hexagon/op_helper.c | 51 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 161c7eaf31f..6dfc1269809 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1484,9 +1484,56 @@ void HELPER(stop)(CPUHexagonState *env) hexagon_stop_thread(env); } =20 -void HELPER(wait)(CPUHexagonState *env, target_ulong PC) +static void set_wait_mode(CPUHexagonState *env) { - g_assert_not_reached(); + g_assert(bql_locked()); + + HexagonCPU *cpu =3D env_archcpu(env); + const uint32_t modectl =3D cpu->globalregs ? + hexagon_globalreg_read(cpu->globalregs, HEX_SREG_MODECTL, + env->threadId) : 0; + uint32_t thread_wait_mask =3D GET_FIELD(MODECTL_W, modectl); + thread_wait_mask |=3D 0x1 << env->threadId; + SET_SYSTEM_FIELD(env, HEX_SREG_MODECTL, MODECTL_W, thread_wait_mask); +} + +static void hexagon_wait_thread(CPUHexagonState *env, uint32_t PC) +{ + g_assert(bql_locked()); + + if (qemu_loglevel_mask(LOG_GUEST_ERROR) && + (env->k0_lock_state !=3D HEX_LOCK_UNLOCKED || + env->tlb_lock_state !=3D HEX_LOCK_UNLOCKED)) { + qemu_log("WARNING: executing wait() with acquired lock" + "may lead to deadlock\n"); + } + g_assert(get_exe_mode(env) !=3D HEX_EXE_MODE_WAIT); + + CPUState *cs =3D env_cpu(env); + /* + * The addtion of cpu_has_work is borrowed from arm's wfi helper + * and is critical for our stability + */ + if ((cs->exception_index !=3D HEX_EVENT_NONE) || + (cpu_has_work(cs))) { + qemu_log_mask(CPU_LOG_INT, + "%s: thread %d skipping WAIT mode, have some work\n", + __func__, env->threadId); + return; + } + set_wait_mode(env); + env->wait_next_pc =3D PC + 4; + + cpu_interrupt(cs, CPU_INTERRUPT_HALT); +} + +void HELPER(wait)(CPUHexagonState *env, uint32_t PC) +{ + BQL_LOCK_GUARD(); + + if (!fIN_DEBUG_MODE(env->threadId)) { + hexagon_wait_thread(env, PC); + } } =20 void HELPER(resume)(CPUHexagonState *env, uint32_t mask) --=20 2.34.1