From nobody Sat Apr 11 18:38:37 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=1775678150; cv=none; d=zohomail.com; s=zohoarc; b=UnTjwJPzKUtq52YcsLwTrZ15iYQwAPShrnaNy/AeCONPuNCF8p/GnCODy/0+SEwXlFcE0FAr1IbwgxA2BGYxEpIlvrpaGiB0kaXB4UQv8pse2TrxcIfBaWO96Qa76mwsILxTuACX+gKSG3kEOCZiLU26xFFsLHCY6MizMoNWy8o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775678150; 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=u4RjKyvpnz+y/VOl95Hj6W3WCKJiAaBCbdGTrB3Z9UQ=; b=ZS0s+LzjKprlok+XCEVPop522kcBXVrTTYFEvIcjmhsT1VT9OMku0CvxFUJ9tA/AOH/zZ787m6CxcMDIb1aHEhJI4V65yvuUC4Y0+58uQJqo4SQ+GEmzjJ5Hnc9MhKdWnAUVgsqwHzPMn/bGocAVXRaGLpLeaf4ZaxrnzXTdc9Y= 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 (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775678150651391.24909268381236; Wed, 8 Apr 2026 12:55:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAYaF-0006lD-JZ; Wed, 08 Apr 2026 15:29: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 1wAY8I-00088h-8N for qemu-devel@nongnu.org; Wed, 08 Apr 2026 15:00:10 -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 1wAKQN-0005i2-1h for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:21:56 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 637M6pF52451580 for ; Wed, 8 Apr 2026 04:21:54 GMT Received: from mail-dl1-f70.google.com (mail-dl1-f70.google.com [74.125.82.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddae68wra-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:21:54 +0000 (GMT) Received: by mail-dl1-f70.google.com with SMTP id a92af1059eb24-12c0ed22849so283088c88.1 for ; Tue, 07 Apr 2026 21:21: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 a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21:51 -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= u4RjKyvpnz+y/VOl95Hj6W3WCKJiAaBCbdGTrB3Z9UQ=; b=UGXV7GznwDDaqaYL dT8/rIDg31ZXke6sRDgo6Pab2R6tX6fyIC0e/d6yT6sGKS+eYAsIBB5pdYYxnbhi tphJ1BlyWLSJKZOSBUimXcJivLt07InBxZa5b/LChkJKEE7J504kS1Ltwn1lVQs6 DyAOU8AJuknPHzn9nXZUiKJoQMuBC28Z9HfYA4LwUMIE0TkUT2c/QqZ6VHY6askA J7NePKKz+ymRobAaFvprb5lhsHc1bZJflEWwAkMyEV5dyHgB7y2qnirKQJHBOT/H Ez+70tBD2l6YhBzxz5AJUAPGgxymJFJSwTBopChYqdDZ+R1x/tHX9+YS5Ssw7r5z N0IG7A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622113; x=1776226913; 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=u4RjKyvpnz+y/VOl95Hj6W3WCKJiAaBCbdGTrB3Z9UQ=; b=bS83ycVotwlZbyJzBFPLluT7kfrmHG4QBNjr7mP/4VVn7gNTiQKnpJeX5GFrkeoKv1 /bhTGloWaB7x7Pau3mcsrDFHVEOMkIduuWakVJntohaTEsUzgjZNhPTh18tMDLgJS9Ln X/eYwB3kZA2B585yrqphXoJMKndX4pQaNIgiOmNEsjL+H8x548cfe8c35sb/G4QyFhgI 5ZUXXOCtHSGLbIctTEKLAtpVnUuepWbBAra2ZzQh6jKuGfJBALjC8KsmWwlrxAEw4wDf koESNfPRAlLbMvAKOK3Ur7yn/PS9u8+sDd7COvZc0qXd1EzLqIolBXel9E6+9VdzjLQc SexQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622113; x=1776226913; 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=u4RjKyvpnz+y/VOl95Hj6W3WCKJiAaBCbdGTrB3Z9UQ=; b=rc0lvwrfzGqQ75tD+AnpU9a6cImhNW19pgf8FhXKhDfPCnHS1f4IXuyEZcjVF3uKxd Z1o7ht8387n9k7BAmNE6pz0QnNJNGymtnCY78Pq+m7uNjNih9OA3CMFgc2LFrOzopiV1 xQVT+QlZKQ46sB22XeulbWaz//7cRjcBDkiOqCvp/QRBbMosyl5xA0mhBOVo3SJ6LXaz 41ZOjdeIAv/bTGI0FI1DVumv5gz8g++FqNUTgSn7BgSwON00bHQb7kmLmwSYFioDW1fw hJuCI+2eLU0tD8t1rKUgevY1+yFV7vgRJrNuY5o8UPCeWL0JVOA0rT06NL1agV32VqFB S/Gg== X-Gm-Message-State: AOJu0YyKW/Y70wtiHSrizUj3d5aLLNyVNNHT4cyMIIdUPKCOQ05Ouis1 Z/JFQIDMv8r7m1DiIk4tlVKHiqx7MBycugsUT8P7rnOQRE4LFx51YYiC7fcj/YtB5e19URs1NJa CdSKa3vOTKb/cL3SZEhR1CsTuvptDwOPpqjg1BD70tJKVy/mKlrv2KmV/OwGh4O2BFw== X-Gm-Gg: AeBDievw2L+u0kU0MkqSkMO8YtXoVU1DmJ5M37SWKX3Y+wKEsR4WFJFfbp7dv2hD9wB ewEVKOKxghq227ATeBjG/hqBx6EwEqoXFPb4hafjoT0fHxLVN6FtDhqD9ZgzIDW3vbZzHGRnUVt dkT+f+oFQ2rU6+9MqP28Nhi7rWndV2U8S3v0uBktjiomfbK+o3MLQcsVVygFMmWnEQ2cODwX2ac 8T/I9l7uJ4Y8l8Hpcy9Z4MzcHWTPoTqQuS/Pa44Hvn0fghJ53zzQb75phn7U/n0nc4IJlt4000S J1XrKBhKDxZhfPtazFq0Wy0opU7Ai+vS7B1WlGXtsPCTBkGIaLw8qUi7AQYs1XUsmj19CvL2BEy 0tPX76X9iv8hPIPGACvQ16FTprp4OqfLEgEtrDg817qXEJBHNoOJSqEU8IybWdy4GVw9L5g== X-Received: by 2002:a05:7022:220b:b0:11e:3e9:3e92 with SMTP id a92af1059eb24-12bf08ba9f5mr9309261c88.23.1775622112817; Tue, 07 Apr 2026 21:21:52 -0700 (PDT) X-Received: by 2002:a05:7022:220b:b0:11e:3e9:3e92 with SMTP id a92af1059eb24-12bf08ba9f5mr9309248c88.23.1775622112205; Tue, 07 Apr 2026 21:21:52 -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 Subject: [PATCH v4 1/9] hw/hexagon: Add globalreg model Date: Tue, 7 Apr 2026 21:21:40 -0700 Message-Id: <20260408042149.1902796-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-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: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfX/gjSg6/pyc1Y bSM604X+WFQEJg1pJvbfplw8vfEXkKLzGKU3H+ev48U6WjXvudO2CxYvSd9F1/EgKLSGGJhBN/7 H8FmtlEdvSynauZ9sB1WcPNvMcpwSCEAHm2txIn8CT8q1mqRfpjdymBoPCfbRAgfEZqxYEe0sxx yf94651C4hi/DkJhuwCw1lG7R968RDOdXmYb3dRfSU0Q2a+p/F3dIjFDkDlr3GU1IDTZOjFIhp6 ufhhJPNJMtppuUWhLF0qPKneouBIJhKGj+RvT479KHUouZEypRGui5bueoAKFuwEIpxNMejXuLh n9K5LR3XxkIAMese8qMhSEa/g6eYwj5Ch3Iv+XU/O1GswjQs6A505fSHYbDzgSmjq3sx25+kSgA AOVGyWYVU7u8B7mlzYzwUgQTyKrIEbdfyx3PIcuSF0cBXQkC5+OyTs/IoAzAssdgkXKssMuXJGF Y9cJbfDfDCjJB9nA4RA== X-Proofpoint-GUID: kS3jqrbuIebPWIbj1pMDGZ8n3_W5xcDQ X-Proofpoint-ORIG-GUID: kS3jqrbuIebPWIbj1pMDGZ8n3_W5xcDQ X-Authority-Analysis: v=2.4 cv=K4AS2SWI c=1 sm=1 tr=0 ts=69d5d7e2 cx=c_pps a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=issYwmIsIXpfOU_0AR4A:9 a=QEXdDO2ut3YA:10 a=Kq8ClHjjuc5pcCNDwlU0:22 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 clxscore=1015 phishscore=0 malwarescore=0 spamscore=0 bulkscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 1775678152089158500 Some of the system registers are shared among all threads in the core. This object contains the representation and interface to the system registers. Signed-off-by: Brian Cain --- include/hw/hexagon/hexagon_globalreg.h | 56 ++++++ hw/hexagon/hexagon_globalreg.c | 245 +++++++++++++++++++++++++ 2 files changed, 301 insertions(+) create mode 100644 include/hw/hexagon/hexagon_globalreg.h create mode 100644 hw/hexagon/hexagon_globalreg.c diff --git a/include/hw/hexagon/hexagon_globalreg.h b/include/hw/hexagon/he= xagon_globalreg.h new file mode 100644 index 00000000000..c9e72f30b0a --- /dev/null +++ b/include/hw/hexagon/hexagon_globalreg.h @@ -0,0 +1,56 @@ +/* + * Hexagon Global Registers QOM Object + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HEXAGON_GLOBALREG_H +#define HEXAGON_GLOBALREG_H + +#include "hw/core/qdev.h" +#include "hw/core/sysbus.h" +#include "qom/object.h" +#include "target/hexagon/cpu.h" + +#define TYPE_HEXAGON_GLOBALREG "hexagon-globalreg" +OBJECT_DECLARE_SIMPLE_TYPE(HexagonGlobalRegState, HEXAGON_GLOBALREG) + +struct HexagonGlobalRegState { + SysBusDevice parent_obj; + + /* Array of system registers */ + uint32_t regs[NUM_SREGS]; + + /* Global performance cycle counter base */ + uint64_t g_pcycle_base; + + /* Properties for global register reset values */ + uint32_t boot_evb; /* Boot Exception Vector Base (HEX_SREG_E= VB) */ + uint64_t config_table_addr; /* Configuration table base */ + uint32_t dsp_rev; /* DSP revision register (HEX_SREG_REV) */ + + /* ISDB properties */ + bool isdben_etm_enable; /* ISDB ETM enable bit */ + bool isdben_dfd_enable; /* ISDB DFD enable bit */ + bool isdben_trusted; /* ISDB trusted mode bit */ + bool isdben_secure; /* ISDB secure mode bit */ +}; + +/* Public interface functions */ +uint32_t hexagon_globalreg_read(HexagonGlobalRegState *s, uint32_t reg, + uint32_t htid); +void hexagon_globalreg_write(HexagonGlobalRegState *s, uint32_t reg, + uint32_t value, uint32_t htid); +uint32_t hexagon_globalreg_masked_value(HexagonGlobalRegState *s, uint32_t= reg, + uint32_t value); +void hexagon_globalreg_write_masked(HexagonGlobalRegState *s, uint32_t reg, + uint32_t value); +void hexagon_globalreg_reset(HexagonGlobalRegState *s); + +/* Global performance cycle counter access */ +uint64_t hexagon_globalreg_get_pcycle_base(HexagonGlobalRegState *s); +void hexagon_globalreg_set_pcycle_base(HexagonGlobalRegState *s, + uint64_t value); + +#endif /* HEXAGON_GLOBALREG_H */ diff --git a/hw/hexagon/hexagon_globalreg.c b/hw/hexagon/hexagon_globalreg.c new file mode 100644 index 00000000000..634d3b169fd --- /dev/null +++ b/hw/hexagon/hexagon_globalreg.c @@ -0,0 +1,245 @@ +/* + * Hexagon Global Registers + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/hexagon/hexagon.h" +#include "hw/hexagon/hexagon_globalreg.h" +#include "hw/core/qdev-properties.h" +#include "hw/core/sysbus.h" +#include "hw/core/resettable.h" +#include "migration/vmstate.h" +#include "qom/object.h" +#include "target/hexagon/cpu.h" +#include "target/hexagon/hex_regs.h" +#include "qemu/log.h" +#include "qapi/error.h" + +#define IMMUTABLE (~0) +#define INVALID_REG_VAL 0xdeadbeef + +/* Global system register mutability masks */ +static const uint32_t global_sreg_immut_masks[NUM_SREGS] =3D { + [HEX_SREG_EVB] =3D 0x000000ff, + [HEX_SREG_MODECTL] =3D IMMUTABLE, + [HEX_SREG_SYSCFG] =3D 0x80001c00, + [HEX_SREG_IPENDAD] =3D IMMUTABLE, + [HEX_SREG_VID] =3D 0xfc00fc00, + [HEX_SREG_VID1] =3D 0xfc00fc00, + [HEX_SREG_BESTWAIT] =3D 0xfffffe00, + [HEX_SREG_IAHL] =3D 0x00000000, + [HEX_SREG_SCHEDCFG] =3D 0xfffffee0, + [HEX_SREG_CFGBASE] =3D IMMUTABLE, + [HEX_SREG_DIAG] =3D 0x00000000, + [HEX_SREG_REV] =3D IMMUTABLE, + [HEX_SREG_ISDBST] =3D IMMUTABLE, + [HEX_SREG_ISDBCFG0] =3D 0xe0000000, + [HEX_SREG_BRKPTPC0] =3D 0x00000003, + [HEX_SREG_BRKPTCFG0] =3D 0xfc007000, + [HEX_SREG_BRKPTPC1] =3D 0x00000003, + [HEX_SREG_BRKPTCFG1] =3D 0xfc007000, + [HEX_SREG_ISDBMBXIN] =3D IMMUTABLE, + [HEX_SREG_ISDBMBXOUT] =3D 0x00000000, + [HEX_SREG_ISDBEN] =3D 0xfffffffe, + [HEX_SREG_TIMERLO] =3D IMMUTABLE, + [HEX_SREG_TIMERHI] =3D IMMUTABLE, +}; + +static void hexagon_globalreg_init(Object *obj) +{ + HexagonGlobalRegState *s =3D HEXAGON_GLOBALREG(obj); + + memset(s->regs, 0, sizeof(uint32_t) * NUM_SREGS); +} + +static inline uint32_t apply_write_mask(uint32_t new_val, uint32_t cur_val, + uint32_t reg_mask) +{ + if (reg_mask) { + return (new_val & ~reg_mask) | (cur_val & reg_mask); + } + return new_val; +} + +uint32_t hexagon_globalreg_read(HexagonGlobalRegState *s, uint32_t reg, + uint32_t htid) +{ + uint32_t value; + + g_assert(reg < NUM_SREGS); + g_assert(reg >=3D HEX_SREG_GLB_START); + g_assert(s); + + value =3D s->regs[reg]; + + return value; +} + +void hexagon_globalreg_write(HexagonGlobalRegState *s, uint32_t reg, + uint32_t value, uint32_t htid) +{ + g_assert(s); + g_assert(reg < NUM_SREGS); + g_assert(reg >=3D HEX_SREG_GLB_START); + s->regs[reg] =3D value; +} + +uint32_t hexagon_globalreg_masked_value(HexagonGlobalRegState *s, uint32_t= reg, + uint32_t value) +{ + uint32_t reg_mask; + + g_assert(s); + g_assert(reg < NUM_SREGS); + g_assert(reg >=3D HEX_SREG_GLB_START); + reg_mask =3D global_sreg_immut_masks[reg]; + return reg_mask =3D=3D IMMUTABLE ? + s->regs[reg] : + apply_write_mask(value, s->regs[reg], reg_mask); +} + +void hexagon_globalreg_write_masked(HexagonGlobalRegState *s, uint32_t reg, + uint32_t value) +{ + g_assert(s); + s->regs[reg] =3D hexagon_globalreg_masked_value(s, reg, value); +} + +uint64_t hexagon_globalreg_get_pcycle_base(HexagonGlobalRegState *s) +{ + g_assert(s); + return s->g_pcycle_base; +} + +void hexagon_globalreg_set_pcycle_base(HexagonGlobalRegState *s, + uint64_t value) +{ + g_assert(s); + s->g_pcycle_base =3D value; +} + +static void do_hexagon_globalreg_reset(HexagonGlobalRegState *s) +{ + uint32_t isdben_val =3D 0; + + g_assert(s); + memset(s->regs, 0, sizeof(uint32_t) * NUM_SREGS); + + s->g_pcycle_base =3D 0; + + s->regs[HEX_SREG_EVB] =3D s->boot_evb; + s->regs[HEX_SREG_CFGBASE] =3D HEXAGON_CFG_ADDR_BASE(s->config_table_ad= dr); + s->regs[HEX_SREG_REV] =3D s->dsp_rev; + + if (s->isdben_etm_enable) { + isdben_val |=3D (1 << 0); /* ETM enable bit */ + } + if (s->isdben_dfd_enable) { + isdben_val |=3D (1 << 1); /* DFD enable bit */ + } + if (s->isdben_trusted) { + isdben_val |=3D (1 << 2); /* Trusted bit */ + } + if (s->isdben_secure) { + isdben_val |=3D (1 << 3); /* Secure bit */ + } + s->regs[HEX_SREG_ISDBEN] =3D isdben_val; + s->regs[HEX_SREG_MODECTL] =3D 0x1; + + /* + * These register indices are placeholders in these arrays + * and their actual values are synthesized from state elsewhere. + * We can initialize these with invalid values so that if we + * mistakenly generate reads, they will look obviously wrong. + */ + s->regs[HEX_SREG_PCYCLELO] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PCYCLEHI] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_TIMERLO] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_TIMERHI] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PMUCNT0] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PMUCNT1] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PMUCNT2] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PMUCNT3] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PMUCNT4] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PMUCNT5] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PMUCNT6] =3D INVALID_REG_VAL; + s->regs[HEX_SREG_PMUCNT7] =3D INVALID_REG_VAL; +} + +static void hexagon_globalreg_realize(DeviceState *dev, Error **errp) +{ +} + +void hexagon_globalreg_reset(HexagonGlobalRegState *s) +{ + do_hexagon_globalreg_reset(s); +} + +static void hexagon_globalreg_reset_hold(Object *obj, ResetType type) +{ + HexagonGlobalRegState *s =3D HEXAGON_GLOBALREG(obj); + do_hexagon_globalreg_reset(s); +} + +static const VMStateDescription vmstate_hexagon_globalreg =3D { + .name =3D "hexagon_globalreg", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]){ + VMSTATE_UINT32_ARRAY(regs, HexagonGlobalRegState, NUM_SREGS), + VMSTATE_UINT64(g_pcycle_base, HexagonGlobalRegState), + VMSTATE_UINT32(boot_evb, HexagonGlobalRegState), + VMSTATE_UINT64(config_table_addr, HexagonGlobalRegState), + VMSTATE_UINT32(dsp_rev, HexagonGlobalRegState), + VMSTATE_BOOL(isdben_etm_enable, HexagonGlobalRegState), + VMSTATE_BOOL(isdben_dfd_enable, HexagonGlobalRegState), + VMSTATE_BOOL(isdben_trusted, HexagonGlobalRegState), + VMSTATE_BOOL(isdben_secure, HexagonGlobalRegState), + VMSTATE_END_OF_LIST() + } +}; + +static const Property hexagon_globalreg_properties[] =3D { + DEFINE_PROP_UINT32("boot-evb", HexagonGlobalRegState, boot_evb, 0x0), + DEFINE_PROP_UINT64("config-table-addr", HexagonGlobalRegState, + config_table_addr, 0xffffffffULL), + DEFINE_PROP_UINT32("dsp-rev", HexagonGlobalRegState, dsp_rev, 0), + DEFINE_PROP_BOOL("isdben-etm-enable", HexagonGlobalRegState, + isdben_etm_enable, false), + DEFINE_PROP_BOOL("isdben-dfd-enable", HexagonGlobalRegState, + isdben_dfd_enable, false), + DEFINE_PROP_BOOL("isdben-trusted", HexagonGlobalRegState, + isdben_trusted, false), + DEFINE_PROP_BOOL("isdben-secure", HexagonGlobalRegState, + isdben_secure, false), +}; + +static void hexagon_globalreg_class_init(ObjectClass *klass, const void *d= ata) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); + + dc->realize =3D hexagon_globalreg_realize; + rc->phases.hold =3D hexagon_globalreg_reset_hold; + dc->vmsd =3D &vmstate_hexagon_globalreg; + dc->user_creatable =3D false; + device_class_set_props(dc, hexagon_globalreg_properties); +} + +static const TypeInfo hexagon_globalreg_info =3D { + .name =3D TYPE_HEXAGON_GLOBALREG, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(HexagonGlobalRegState), + .instance_init =3D hexagon_globalreg_init, + .class_init =3D hexagon_globalreg_class_init, +}; + +static void hexagon_globalreg_register_types(void) +{ + type_register_static(&hexagon_globalreg_info); +} + +type_init(hexagon_globalreg_register_types) --=20 2.34.1 From nobody Sat Apr 11 18:38:37 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=1775677232; cv=none; d=zohomail.com; s=zohoarc; b=fXZQON/1Bkp8VLVbcgVvqMfd8dAGOIj2ByA0npQFGU3CJsj1LA86B1GQaRyT6WbaHcUAO0YVbAZDiCu/Y+/d04yNukZTwdadsgNHRu+3b5GFWMvTdUzCM5GUn6vyy5GHhXX5BrMM/HebtRyArG2wqaYSFz/7kvvlxa3QtUiMbpI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775677232; 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=ydC2fs+QPd4b5p/ut3R0AWJhnR2AhMIhRgDJsIwO3xo=; b=ex75HNl6p1q9uhnnCj5uowNf672butWQcM/q4EVzkeyqlNZxvXQ5I2nUYJiu/fmRNosF773aDsWlenp+Hm5tJerqAtblFVNaw3rG6qW4OvkTQ48XJ/LDNR4ZWMCOncKbeyiYJnIjKtSxbb+aipfNasbXQgz9DB/vqeasp4uz9tI= 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 (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775677232361211.0554404086157; Wed, 8 Apr 2026 12:40:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAYSq-0004an-9W; Wed, 08 Apr 2026 15:21:24 -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 1wAY3q-00067G-F0 for qemu-devel@nongnu.org; Wed, 08 Apr 2026 14:55:34 -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 1wAKQO-0005iA-2N for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:21:57 -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 6382ZIGR2412265 for ; Wed, 8 Apr 2026 04:21:55 GMT Received: from mail-dl1-f72.google.com (mail-dl1-f72.google.com [74.125.82.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd61v9xaf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:21:55 +0000 (GMT) Received: by mail-dl1-f72.google.com with SMTP id a92af1059eb24-12776bebeb3so23525229c88.1 for ; Tue, 07 Apr 2026 21:21: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 a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= qcppdkim1; bh=ydC2fs+QPd4b5p/ut3R0AWJhnR2AhMIhRgDJsIwO3xo=; b=S9 oz9nSS3R6ZvoRfaKN472K/m+2efpSdj0s8l499AR0ytlexpQBRTTC0PwGvAod/pd Fhk5zwpiGPtbcvtnILoNsqbpv9GWnFYAccI2RUSPJr9cDlvC2/Zo0/cE9GCu7BmQ Ob0TkyKhU9Dh9VJamNlXves5LMVFLsqsf/70/TPIjh1wfwndCpSgCcn37cZb1ZV6 YqONp1O8L2yfk75KSye/dDjsARfmax8Ouw+LTyl0u+0AdD8ieXnKsySx9tC8BNTr RQmCzdNYzWspDksHZpXrNmHDNFOppHwhNEtIbZ1kT0gULEnIQvlAKyWXin7k9wxX O0IpEidwwdq0h5hnT4YA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622114; x=1776226914; 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=ydC2fs+QPd4b5p/ut3R0AWJhnR2AhMIhRgDJsIwO3xo=; b=Z/Iv1TVfNDcKqJ8A5lApmX0X7h+jZub1efD62dwcy9zq7LFzOn+RIVTuTt2zEDldHU V2hOfFHEeenEGxJ3fMJVEaKf3d3lgbor05fJxcpfqOfzFpJTofAvebCrSYyMRzlZg1Ht MzW1hfc0XBmGIQe+NEcHyUnQJdPXdUnnfFOYNRym39LiQ79L8hNGTrvoKm6pS+f6tjY5 AbXdvdI3/LnPOZfVhoCVE2voc+Jeb9zV5odYMEpjNrDaOig5O6SKH8qxJYHd/2LdHE+Z se8cT0G8h/OVR1CuJPyatk1qmtuUOO98E2udS9BHhHQgIFQmtanK4Lwjjq3Uwm13mPSW Y96w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622114; x=1776226914; 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=ydC2fs+QPd4b5p/ut3R0AWJhnR2AhMIhRgDJsIwO3xo=; b=LgeoChKo1a/AhoMya7h3+P+hs2WuIDo8VobxSWhAp/GlVT9RzQfP1tmnvpWmBdJxr/ DoG8Hvs8queF4AVEKOobxyPDsekwxsEnS9PvcxwhX+4P6z/7XYCb5sj9mfFvd2efim0H ixq+Mm62ny5ZVkbrXWWbcHNvpW9ITAMCJPor/03YHa3K04qOUNI6SIDq/Bi7yHce3k9v OkiwdxBGN/NiogxZWWxuuxvdCIGoIH3o/cHI5Er92aRHqsDlTT3sJrrh2IO7CdPID4LT U3EutnLTqEl6WzN4MGFuZSQ04+NiarVuN/4gAdPNjWkqJ+T4JQtDZrq8CSCkxqwz+bHq Z2mw== X-Gm-Message-State: AOJu0YwRC06oyDCquUsFTnXoYipG2rZDaj2FOC2Jo+bKnwHZ4VKnc51H Kz+E0eEUFh16DAD6/nQ7gde6kgADOeeO4+mPElmbnSLHSyBvimsXA0QBG0Kw2836KfXtDFu6pk4 BrmUjfGdILiUy0IpXieYCKki5RQIRTchk97yvvGghCRdDvMqFBdkhk8mFF1U+bJnlow== X-Gm-Gg: AeBDieuYWFOfx7fPEONJDdazYCwk83yQnkTHNx4c4pldnrEijoJp9TXeYlcoEmlMqZo qo9DGsKU/BMcn9rABkSZmNimpj2XH1ytdz++EDAsM4DdyB/Ey1EKMM2zBHDhPCuDuDk2d0JIzXi ojCu0BukLZm4MkuWtPbxsBnh4xluZWCiaiqM3QaFPKBO4xIyRvrkFitTWL8BWK1MXg2D4gHX2YY LClFp/05V76bG0vHWjF1sRzSgYz1CjlMPfu2ITGm2obwQYBGryKpYtA0fa6aXm+GYHsi40gigk6 zvdoAfw5dZF92IoqBXuZ/OUlIoJOu1hfUgKtQb4S/n2nxnx3Yyyt2gC7zPAZevvojfbJTtVZ5oe yMGp0h1/pANtXYO0qtpPMmNnguAJbUAkc754PkVBZ2IGdVXF3lGoPJf94p1uD7UkKCqyPiQ== X-Received: by 2002:a05:7022:6725:b0:12b:ed30:5b85 with SMTP id a92af1059eb24-12bfb6ecb3emr9135834c88.2.1775622113869; Tue, 07 Apr 2026 21:21:53 -0700 (PDT) X-Received: by 2002:a05:7022:6725:b0:12b:ed30:5b85 with SMTP id a92af1059eb24-12bfb6ecb3emr9135821c88.2.1775622113239; Tue, 07 Apr 2026 21:21:53 -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, Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PATCH v4 2/9] hw/hexagon: Add global register tracing Date: Tue, 7 Apr 2026 21:21:41 -0700 Message-Id: <20260408042149.1902796-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfX3KufGbahvXOA yaZ+RaRx1EpdB9iZLF4qD/hdtGHT5nlYA73jtIje+mkHYViPx7Auxn1FcxktkzZZLgjbEBtJUM1 Pv4/inRqXE0LoRIReuB7U7aKHTNUPulRWSSahI0ZaUVS8mZ39pBzwinGasZTKRHAgyZ+GaxrKUl 2b6/wM+7bS1iYUg4CoFu4ZDAPyuOIa2V+iDrKvIjDukH3cDw2skmlMvsusJdziT+oPLoqubEsbP PP7hEFJgXRAgjpsBWfuT5m8sHUYjaZAb9TlztGrjYLpgtlfABGfuXU9Q+lOJaEn2Za2ekkSiLP7 xmXP3TnN/ywHlREFmb2onM2JblmSBgV7cc2VIVudc4OSUET0dWrVLJ1oc/qGZxLty4UyCoFsJha Nr6D8mxuqSPhfGNwFIqkPg5dIoZ4UakBYiFKsUgvnWIxc4uBFY1XsWUFJJhugcegpa94nxBHsjK PLS/sEtFQoDpnGICMEg== X-Authority-Analysis: v=2.4 cv=FecHAp+6 c=1 sm=1 tr=0 ts=69d5d7e3 cx=c_pps a=bS7HVuBVfinNPG3f6cIo3Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=8QmChvNvioVktlEtA_0A:9 a=QEXdDO2ut3YA:10 a=vBUdepa8ALXHeOFLBtFW:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: rts389xXuDyC7h6AYdZ7lPOZoF1rhCfH X-Proofpoint-GUID: rts389xXuDyC7h6AYdZ7lPOZoF1rhCfH 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 impostorscore=0 bulkscore=0 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 1775677234121154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Brian Cain --- meson.build | 1 + hw/hexagon/trace.h | 2 + hw/hexagon/hexagon_globalreg.c | 73 ++++++++++++++++++++++++++++++++++ hw/hexagon/trace-events | 3 ++ 4 files changed, 79 insertions(+) create mode 100644 hw/hexagon/trace.h create mode 100644 hw/hexagon/trace-events diff --git a/meson.build b/meson.build index daa58e46a3c..063c668cce5 100644 --- a/meson.build +++ b/meson.build @@ -3625,6 +3625,7 @@ if have_system 'hw/display', 'hw/dma', 'hw/fsi', + 'hw/hexagon', 'hw/hyperv', 'hw/i2c', 'hw/i3c', diff --git a/hw/hexagon/trace.h b/hw/hexagon/trace.h new file mode 100644 index 00000000000..9e0b39f3c66 --- /dev/null +++ b/hw/hexagon/trace.h @@ -0,0 +1,2 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#include "trace/trace-hw_hexagon.h" diff --git a/hw/hexagon/hexagon_globalreg.c b/hw/hexagon/hexagon_globalreg.c index 634d3b169fd..34a4ca9f2b2 100644 --- a/hw/hexagon/hexagon_globalreg.c +++ b/hw/hexagon/hexagon_globalreg.c @@ -16,11 +16,82 @@ #include "target/hexagon/cpu.h" #include "target/hexagon/hex_regs.h" #include "qemu/log.h" +#include "trace.h" #include "qapi/error.h" =20 #define IMMUTABLE (~0) #define INVALID_REG_VAL 0xdeadbeef =20 +static const char *hex_sreg_names[] =3D { + [HEX_SREG_SGP0] =3D "sgp0", + [HEX_SREG_SGP1] =3D "sgp1", + [HEX_SREG_STID] =3D "stid", + [HEX_SREG_ELR] =3D "elr", + [HEX_SREG_BADVA0] =3D "badva0", + [HEX_SREG_BADVA1] =3D "badva1", + [HEX_SREG_SSR] =3D "ssr", + [HEX_SREG_CCR] =3D "ccr", + [HEX_SREG_HTID] =3D "htid", + [HEX_SREG_BADVA] =3D "badva", + [HEX_SREG_IMASK] =3D "imask", + [HEX_SREG_GEVB] =3D "gevb", + [HEX_SREG_EVB] =3D "evb", + [HEX_SREG_MODECTL] =3D "modectl", + [HEX_SREG_SYSCFG] =3D "syscfg", + [HEX_SREG_IPENDAD] =3D "ipendad", + [HEX_SREG_VID] =3D "vid", + [HEX_SREG_VID1] =3D "vid1", + [HEX_SREG_BESTWAIT] =3D "bestwait", + [HEX_SREG_IEL] =3D "iel", + [HEX_SREG_SCHEDCFG] =3D "schedcfg", + [HEX_SREG_IAHL] =3D "iahl", + [HEX_SREG_CFGBASE] =3D "cfgbase", + [HEX_SREG_DIAG] =3D "diag", + [HEX_SREG_REV] =3D "rev", + [HEX_SREG_PCYCLELO] =3D "pcyclelo", + [HEX_SREG_PCYCLEHI] =3D "pcyclehi", + [HEX_SREG_ISDBST] =3D "isdbst", + [HEX_SREG_ISDBCFG0] =3D "isdbcfg0", + [HEX_SREG_ISDBCFG1] =3D "isdbcfg1", + [HEX_SREG_LIVELOCK] =3D "livelock", + [HEX_SREG_BRKPTPC0] =3D "brkptpc0", + [HEX_SREG_BRKPTCFG0] =3D "brkptcfg0", + [HEX_SREG_BRKPTPC1] =3D "brkptpc1", + [HEX_SREG_BRKPTCFG1] =3D "brkptcfg1", + [HEX_SREG_ISDBMBXIN] =3D "isdbmbxin", + [HEX_SREG_ISDBMBXOUT] =3D "isdbmbxout", + [HEX_SREG_ISDBEN] =3D "isdben", + [HEX_SREG_ISDBGPR] =3D "isdbgpr", + [HEX_SREG_PMUCNT4] =3D "pmucnt4", + [HEX_SREG_PMUCNT5] =3D "pmucnt5", + [HEX_SREG_PMUCNT6] =3D "pmucnt6", + [HEX_SREG_PMUCNT7] =3D "pmucnt7", + [HEX_SREG_PMUCNT0] =3D "pmucnt0", + [HEX_SREG_PMUCNT1] =3D "pmucnt1", + [HEX_SREG_PMUCNT2] =3D "pmucnt2", + [HEX_SREG_PMUCNT3] =3D "pmucnt3", + [HEX_SREG_PMUEVTCFG] =3D "pmuevtcfg", + [HEX_SREG_PMUSTID0] =3D "pmustid0", + [HEX_SREG_PMUEVTCFG1] =3D "pmuevtcfg1", + [HEX_SREG_PMUSTID1] =3D "pmustid1", + [HEX_SREG_TIMERLO] =3D "timerlo", + [HEX_SREG_TIMERHI] =3D "timerhi", + [HEX_SREG_PMUCFG] =3D "pmucfg", + [HEX_SREG_S59] =3D "s59", + [HEX_SREG_S60] =3D "s60", + [HEX_SREG_S61] =3D "s61", + [HEX_SREG_S62] =3D "s62", + [HEX_SREG_S63] =3D "s63", +}; + +static const char *get_sreg_name(uint32_t reg) +{ + if (reg < ARRAY_SIZE(hex_sreg_names) && hex_sreg_names[reg]) { + return hex_sreg_names[reg]; + } + return "UNKNOWN"; +} + /* Global system register mutability masks */ static const uint32_t global_sreg_immut_masks[NUM_SREGS] =3D { [HEX_SREG_EVB] =3D 0x000000ff, @@ -75,6 +146,7 @@ uint32_t hexagon_globalreg_read(HexagonGlobalRegState *s= , uint32_t reg, =20 value =3D s->regs[reg]; =20 + trace_hexagon_globalreg_read(htid, get_sreg_name(reg), value); return value; } =20 @@ -85,6 +157,7 @@ void hexagon_globalreg_write(HexagonGlobalRegState *s, u= int32_t reg, g_assert(reg < NUM_SREGS); g_assert(reg >=3D HEX_SREG_GLB_START); s->regs[reg] =3D value; + trace_hexagon_globalreg_write(htid, get_sreg_name(reg), value); } =20 uint32_t hexagon_globalreg_masked_value(HexagonGlobalRegState *s, uint32_t= reg, diff --git a/hw/hexagon/trace-events b/hw/hexagon/trace-events new file mode 100644 index 00000000000..5d623ed2516 --- /dev/null +++ b/hw/hexagon/trace-events @@ -0,0 +1,3 @@ +# Hexagon global register access +hexagon_globalreg_read(uint32_t htid, const char *reg_name, uint32_t value= ) "htid=3D%u reg=3D%s value=3D0x%x" +hexagon_globalreg_write(uint32_t htid, const char *reg_name, uint32_t valu= e) "htid=3D%u reg=3D%s value=3D0x%x" --=20 2.34.1 From nobody Sat Apr 11 18:38:37 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=1775676026; cv=none; d=zohomail.com; s=zohoarc; b=ZnAe6K9eXU+4y4fl6AoKfmwYWrUglv2I/J4m+y4xkviOi+UhLt1jpb+476Xrc7yCNONncNtd12qBIyvSu/IMsXRjMQ+QhS0wqeVvDmTCq7VWdfHrlOJ8VYXKXVxpLE3SDAGObvJMlptu3ptUDBRoM2arG7+Doy302hXWDN7j+a4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775676026; 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=oR4fPbaNCnoFBBe+3Ls1jwQiPTCm/QLTrk2uxigZxZ8=; b=d83jGZMddgjyb+BiKirOZunePNvgThrF8Z7Oah9eZKlNpN96K45H/8i5KIOYdHr7LVE0I+u5zIeEQaoCfY21JPqweJ8FPKHyT6kCAVXtZ8I4n7ultsCBBEs2i2sguK61BbnyK/9koiAZlCEJLAi/UY4Tm/ESa+Ws5KkINVZUAw8= 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 (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775676026723566.5204165245556; Wed, 8 Apr 2026 12:20:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAYPI-0000jg-EN; Wed, 08 Apr 2026 15:17:44 -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 1wAYJa-0000dA-AV for qemu-devel@nongnu.org; Wed, 08 Apr 2026 15:11:50 -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 1wAKQP-0005iQ-Md for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:21:59 -0400 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 637NfXx01259273 for ; Wed, 8 Apr 2026 04:21:56 GMT Received: from mail-dl1-f70.google.com (mail-dl1-f70.google.com [74.125.82.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddbttrqud-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:21:56 +0000 (GMT) Received: by mail-dl1-f70.google.com with SMTP id a92af1059eb24-12bf921cf49so7127023c88.1 for ; Tue, 07 Apr 2026 21:21:56 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21: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= oR4fPbaNCnoFBBe+3Ls1jwQiPTCm/QLTrk2uxigZxZ8=; b=kDWZUGVKZWJWfP1w 4JUc2pg5B4xf1wBerNudsDdek7FYV8OXG2HZIqArG5dsYzys+/DRMRPCgldiTrZ6 fXg4h4MMryJ479VkzPU9c8FpdIe/pGBwL133UtXYphDXgIFUgmxzrMsPzpsHIass Hv/RuEGkPgeBxyK/L52Q5oVtC85oKRkkOezs+m5lNOMhcmIz0B4c62VwNErrwFfZ DIHrdD26KGDel9jvHyay1AltHhKHghT6QkdNF3jmPYz6tbjlDQgm1o3p8HE4QOsE NAZK5JpPzm1SLJ9BFIFTDQw9DI0S3tuyEh7Pl7ldnlg2WUZCnK6u4ctfRT+sLF9P fIiIgQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622115; x=1776226915; 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=oR4fPbaNCnoFBBe+3Ls1jwQiPTCm/QLTrk2uxigZxZ8=; b=DeWW1bmvfh7s61SAEL0ZRct8duuQ4P8OY6Agj3jMoIf744ArmB8JO+cOLQLFXmBa7w 8ni2eSOceyl3u+hViqMXCObAdIzDu8MDKOZGrZwACo+3bIO8s3hOpMm0v6s/0kBTueIv Gc5krqO1v+7cdO6FC+OLwhIp88SuvanA8ti8kE90VaTotngyt5pD/XERUkszUU4nUd7S dhQbOuYvVy5JjzoLXEjqV8zJwWWk6i1XO5XbJMUwmO0Kdq9Ht/xDj55wLRCe+HlF/joz wSSg4jO87jpXmHFY78Ng0eepNPOuXtgmcIn4WUN2kAhUaJtuiG7H+ebgWraCdHiDw04Y eGCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622115; x=1776226915; 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=oR4fPbaNCnoFBBe+3Ls1jwQiPTCm/QLTrk2uxigZxZ8=; b=T16VePeRuMwodGYAXaRWFCk5sFjTBjc6qdvxfzcuxO0KQ1CLREdT0e9L/caqnLpNY4 0Ndy/7d5aoITRR6Vk8+R4LCXBfk0svqLfNZ9jIkRGikh7xY4ZxyvVc1lxRj4hzUjl9PG cNzKP+YTOIxIlcI+WElLoNO8CzDn6f0HopgYRQyu7DGo//G1/0W8turTYfwP4DiCGEZk XsgaEdzPov0S5fZQY/97bVr3BPOzsOBqr55WrRimWUdsImO9T/8sCR5qGtZ5UT53XF98 AgjXLLvJfqx1VKBLXyjId+zZox2Chs/Ah8z2pJgw640H5aQm7yujMjZRsDRqhJIsHlLR WYgQ== X-Gm-Message-State: AOJu0YywTZfNnCxiQ2f7DNK4A0l55eMKeL2Yg6/DPOuuLw+4p95ZWJbq j+FOLhkGAdkqrjX579elwIMSYQDaLVYOVI0sUyW83KVCLC0i6hiYv63HFZnC6/9UDhSYk68yf5L vIQra6g+cOroQwrNkaTClEIKBNevqv162pXGpSnCb7jODdhkDdnrBvNcPZRe8miwn3A== X-Gm-Gg: AeBDieuvSmjpwDirt7bxSTn/AAibRctHtb9adVVQxx8CwLjR5rJXhclhYKQt0Q2rrO4 TbmsGcZybvPYwx4S7Lpb/xyABlAUtUy9jEflNsF9qq5dxIgqcxceNzlTSx49kuZTYYKqW7r2VGf X0Ppx3UyylfX4WO0xQMgjtnli4nFyZRUmJoWbSrztsVeriVZ9kJzC/Q5JT0BR5F78kx8ShVn4xJ bQchCcSiUzxb+bI2m2teqPdMOA6VEfR0rwUS1IaeY8axRmmNLHHnTYxT0cGFw59A/EKFrnZAlYu 8i7M6rg8Eaaimq3cq7c5W+mBVo6BtFflzNU/X1fkG3QuYLnZVWcr6X6JUeqIS/hj3CJgj96jRUm uPianie7HgBd/5U0whopbWx1dlO6DX9xn3tT1Rv6uiyZVCR4e3/GfClyIdhKXs4fCuZEsdw== X-Received: by 2002:a05:7022:1005:b0:128:cf5c:535a with SMTP id a92af1059eb24-12bfb6f4e06mr10030017c88.11.1775622115113; Tue, 07 Apr 2026 21:21:55 -0700 (PDT) X-Received: by 2002:a05:7022:1005:b0:128:cf5c:535a with SMTP id a92af1059eb24-12bfb6f4e06mr10030005c88.11.1775622114444; Tue, 07 Apr 2026 21:21:54 -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 , Markus Armbruster , Mike Lambert , Sid Manning , Paolo Bonzini , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PATCH v4 3/9] hw/hexagon: Add machine configs for sysemu Date: Tue, 7 Apr 2026 21:21:42 -0700 Message-Id: <20260408042149.1902796-4-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-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: QdINQOxwAjg_zd8yfo5R1gbpDuD0O2NL X-Proofpoint-GUID: QdINQOxwAjg_zd8yfo5R1gbpDuD0O2NL X-Authority-Analysis: v=2.4 cv=TOt1jVla c=1 sm=1 tr=0 ts=69d5d7e4 cx=c_pps a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=COk6AnOGAAAA:8 a=20KFwNOVAAAA:8 a=EUspDBNiAAAA:8 a=zDswL77RPfrYyX9IZBQA:9 a=hiJlUhq8NronkB9Q:21 a=QEXdDO2ut3YA:10 a=Kq8ClHjjuc5pcCNDwlU0:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfXwFzDzpGzwlpm KhiiVZsEdcCSogD9+7e18RUDRdsTr6POg3lMymq9hfNi7WefutxoKR8ZGujwt5ljfU+KvUMOk61 PVieiwPW9lD4DqTQI1g9SNovq3ULOgapCPQqZSNgrGShFwgdO6SoAZN0PMLIHfy+h0BnQhSJBHl mkN046cw/fR7oPl9yO3/UFA+oCmWA1lWibaUxbbxD0bWJ7DIVEV0EtcxCCP7/k7DqLBPOFRsPO9 9q4vPQRXX2z4LIB1ZDJmXhbyhgE9fPX4iC+cnoC+XPWfcFPMGNjG7AO1CDasJcdQ7IJK2AJI1TN dHw+pE22AEHKm805B8oI2SzeqSMSvKFDhmqgTDgIYo4tzOBy5Ji3O7k+jUcnDl9ovf8k6qWx8SM FEA45SswkMcKxlGeZQCj9oZc3dIiv1E4vcWfjAaM1NoQ79bGMyIGpV+GmX/Q6BD6Eg4sztfHSzM DJa3gOrPxaf9+lzaq5g== 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 1775676028435154100 From: Brian Cain Some header includes are modified here: these are uniquely required for basic system emulation functionality and had not been required for linux-us= er. Acked-by: Markus Armbruster Co-authored-by: Mike Lambert Co-authored-by: Sid Manning Signed-off-by: Brian Cain --- MAINTAINERS | 2 + include/hw/hexagon/hexagon.h | 150 +++++++++++++++++++++++ hw/hexagon/machine_cfg_v66g_1024.h.inc | 64 ++++++++++ hw/hexagon/hexagon_dsp.c | 161 +++++++++++++++++++++++++ system/qdev-monitor.c | 2 +- target/hexagon/translate.c | 1 + hw/Kconfig | 1 + hw/hexagon/Kconfig | 5 + hw/hexagon/meson.build | 6 + hw/meson.build | 1 + 10 files changed, 392 insertions(+), 1 deletion(-) create mode 100644 include/hw/hexagon/hexagon.h create mode 100644 hw/hexagon/machine_cfg_v66g_1024.h.inc create mode 100644 hw/hexagon/hexagon_dsp.c create mode 100644 hw/hexagon/Kconfig create mode 100644 hw/hexagon/meson.build diff --git a/MAINTAINERS b/MAINTAINERS index 4055fbe3c21..b9a7c553dfa 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -246,6 +246,8 @@ Hexagon TCG CPUs M: Brian Cain S: Supported F: target/hexagon/ +F: hw/hexagon/ +F: include/hw/hexagon/ X: target/hexagon/idef-parser/ X: target/hexagon/gen_idef_parser_funcs.py F: linux-user/hexagon/ diff --git a/include/hw/hexagon/hexagon.h b/include/hw/hexagon/hexagon.h new file mode 100644 index 00000000000..996f5423c39 --- /dev/null +++ b/include/hw/hexagon/hexagon.h @@ -0,0 +1,150 @@ +/* + * Hexagon Baseboard System emulation. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + + +#ifndef HW_HEXAGON_H +#define HW_HEXAGON_H + +#include "system/memory.h" + +struct hexagon_board_boot_info { + uint64_t ram_size; + const char *kernel_filename; + uint32_t kernel_elf_flags; +}; + +typedef enum { + unknown_rev =3D 0, + v66_rev =3D 0xa666, + v67_rev =3D 0x2667, + v68_rev =3D 0x8d68, + v69_rev =3D 0x8c69, + v71_rev =3D 0x8c71, + v73_rev =3D 0x8c73, + v73m_rev =3D 0xcc73, +} Rev_t; +#define HEXAGON_LATEST_REV v73 +#define HEXAGON_LATEST_REV_UPPER V73 + +/* + * Config table address bases represent bits [35:16]. + */ +#define HEXAGON_CFG_ADDR_BASE(addr) (((addr) >> 16) & 0x0fffff) + +#define HEXAGON_CFGSPACE_ENTRIES (128) + +union hexagon_config_table { + struct { + /* Base address of L2TCM space */ + uint32_t l2tcm_base; + uint32_t reserved0; + /* Base address of subsystem space */ + uint32_t subsystem_base; + /* Base address of ETM space */ + uint32_t etm_base; + /* Base address of L2 configuration space */ + uint32_t l2cfg_base; + uint32_t reserved1; + /* Base address of L1S */ + uint32_t l1s0_base; + /* Base address of AXI2 */ + uint32_t axi2_lowaddr; + /* Base address of streamer base */ + uint32_t streamer_base; + uint32_t reserved2; + /* Base address of fast L2VIC */ + uint32_t fastl2vic_base; + /* Number of entries in JTLB */ + uint32_t jtlb_size_entries; + /* Coprocessor type */ + uint32_t coproc_present; + /* Number of extension execution contexts available */ + uint32_t ext_contexts; + /* Base address of Hexagon Vector Tightly Coupled Memory (VTCM) */ + uint32_t vtcm_base; + /* Size of VTCM (in KB) */ + uint32_t vtcm_size_kb; + /* L2 tag size */ + uint32_t l2tag_size; + /* Amount of physical L2 memory in released version */ + uint32_t l2ecomem_size; + /* Hardware threads available on the core */ + uint32_t thread_enable_mask; + /* Base address of the ECC registers */ + uint32_t eccreg_base; + /* L2 line size */ + uint32_t l2line_size; + /* Small Core processor (also implies audio extension) */ + uint32_t tiny_core; + /* Size of L2TCM */ + uint32_t l2itcm_size; + /* Base address of L2-ITCM */ + uint32_t l2itcm_base; + uint32_t reserved3; + /* DTM is present */ + uint32_t dtm_present; + /* Version of the DMA */ + uint32_t dma_version; + /* Native HVX vector length in log of bytes */ + uint32_t hvx_vec_log_length; + /* Core ID of the multi-core */ + uint32_t core_id; + /* Number of multi-core cores */ + uint32_t core_count; + uint32_t coproc2_reg0; + uint32_t coproc2_reg1; + /* Supported HVX vector length */ + uint32_t v2x_mode; + uint32_t coproc2_reg2; + uint32_t coproc2_reg3; + uint32_t coproc2_reg4; + uint32_t coproc2_reg5; + uint32_t coproc2_reg6; + uint32_t coproc2_reg7; + /* Voltage droop mitigation technique parameter */ + uint32_t acd_preset; + /* Voltage droop mitigation technique parameter */ + uint32_t mnd_preset; + /* L1 data cache size (in KB) */ + uint32_t l1d_size_kb; + /* L1 instruction cache size in (KB) */ + uint32_t l1i_size_kb; + /* L1 data cache write policy: see HexagonL1WritePolicy */ + uint32_t l1d_write_policy; + /* VTCM bank width */ + uint32_t vtcm_bank_width; + uint32_t reserved4; + uint32_t reserved5; + uint32_t reserved6; + uint32_t coproc2_cvt_mpy_size; + uint32_t consistency_domain; + uint32_t capacity_domain; + uint32_t axi3_lowaddr; + uint32_t coproc2_int8_subcolumns; + uint32_t corecfg_present; + uint32_t coproc2_fp16_acc_exp; + uint32_t AXIM2_secondary_base; + }; + uint32_t raw[HEXAGON_CFGSPACE_ENTRIES]; +}; + +struct hexagon_machine_config { + /* Base address of config table */ + uint32_t cfgbase; + /* Size of L2 TCM */ + uint32_t l2tcm_size; + /* Base address of L2VIC */ + uint32_t l2vic_base; + /* Size of L2VIC region */ + uint32_t l2vic_size; + /* QTimer csr base */ + uint32_t csr_base; + uint32_t qtmr_region; + union hexagon_config_table cfgtable; +}; + +#endif diff --git a/hw/hexagon/machine_cfg_v66g_1024.h.inc b/hw/hexagon/machine_cf= g_v66g_1024.h.inc new file mode 100644 index 00000000000..cc4d89b89c9 --- /dev/null +++ b/hw/hexagon/machine_cfg_v66g_1024.h.inc @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +static const struct hexagon_machine_config v66g_1024 =3D { + .cfgbase =3D 0xd8180000, + .l2tcm_size =3D 0x00000000, + .l2vic_base =3D 0xfc910000, + .l2vic_size =3D 0x00001000, + .csr_base =3D 0xfc900000, + .qtmr_region =3D 0xfc921000, + .cfgtable =3D { + .l2tcm_base =3D 0x0000d800, + .reserved0 =3D 0x0000d400, + .subsystem_base =3D 0x0000fc90, + .etm_base =3D 0x0000d805, + .l2cfg_base =3D 0x0000d81a, + .reserved1 =3D 0x00000000, + .l1s0_base =3D 0x0000d820, + .axi2_lowaddr =3D 0x00003000, + .streamer_base =3D 0x00000000, + .reserved2 =3D 0x0000d819, + .fastl2vic_base =3D 0x0000d81e, + .jtlb_size_entries =3D 0x00000080, + .coproc_present =3D 0x00000001, + .ext_contexts =3D 0x00000004, + .vtcm_base =3D 0x0000d820, + .vtcm_size_kb =3D 0x00000100, + .l2tag_size =3D 0x00000400, + .l2ecomem_size =3D 0x00000400, + .thread_enable_mask =3D 0x0000000f, + .eccreg_base =3D 0x0000d81f, + .l2line_size =3D 0x00000080, + .tiny_core =3D 0x00000000, + .l2itcm_size =3D 0x00000000, + .l2itcm_base =3D 0x0000d820, + .reserved3 =3D 0x00000000, + .dtm_present =3D 0x00000000, + .dma_version =3D 0x00000000, + .hvx_vec_log_length =3D 0x00000080, + .core_id =3D 0x00000000, + .core_count =3D 0x00000000, + .coproc2_reg0 =3D 0x00000000, + .coproc2_reg1 =3D 0x00000000, + .v2x_mode =3D 0x00000000, + .coproc2_reg2 =3D 0x00000000, + .coproc2_reg3 =3D 0x00000000, + .coproc2_reg4 =3D 0x00000000, + .coproc2_reg5 =3D 0x00000000, + .coproc2_reg6 =3D 0x00000000, + .coproc2_reg7 =3D 0x00000000, + .acd_preset =3D 0x00000000, + .mnd_preset =3D 0x00000000, + .l1d_size_kb =3D 0x00000000, + .l1i_size_kb =3D 0x00000000, + .l1d_write_policy =3D 0x00000000, + .vtcm_bank_width =3D 0x00000000, + .reserved4 =3D 0x00000000, + .reserved5 =3D 0x00000000, + .reserved6 =3D 0x00000000, + .coproc2_cvt_mpy_size =3D 0x00000000, + .consistency_domain =3D 0x00000000, + .capacity_domain =3D 0x00000000, + .axi3_lowaddr =3D 0x00000000, + }, +}; diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c new file mode 100644 index 00000000000..d5df87605f4 --- /dev/null +++ b/hw/hexagon/hexagon_dsp.c @@ -0,0 +1,161 @@ +/* + * Hexagon DSP Subsystem emulation. This represents a generic DSP + * subsystem with few peripherals, like the Compute DSP. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + + +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "system/address-spaces.h" +#include "hw/core/boards.h" +#include "hw/core/qdev-properties.h" +#include "hw/hexagon/hexagon.h" +#include "hw/hexagon/hexagon_globalreg.h" +#include "hw/core/loader.h" +#include "qapi/error.h" +#include "qemu/error-report.h" +#include "qemu/log.h" +#include "elf.h" +#include "cpu.h" +#include "migration/cpu.h" +#include "system/system.h" +#include "target/hexagon/internal.h" +#include "system/reset.h" + +#include "machine_cfg_v66g_1024.h.inc" + +static void hex_symbol_callback(const char *st_name, int st_info, + uint64_t st_value, uint64_t st_size) +{ +} + +/* Board init. */ +static struct hexagon_board_boot_info hexagon_binfo; + +static void hexagon_load_kernel(HexagonCPU *cpu) +{ + uint64_t pentry; + long kernel_size; + + kernel_size =3D load_elf_ram_sym(hexagon_binfo.kernel_filename, NULL, = NULL, + NULL, &pentry, NULL, NULL, + &hexagon_binfo.kernel_elf_flags, 0, EM_HEXAGON, 0, 0, + &address_space_memory, false, hex_symbol_callback); + + if (kernel_size <=3D 0) { + error_report("no kernel file '%s'", + hexagon_binfo.kernel_filename); + exit(1); + } + + qdev_prop_set_uint32(DEVICE(cpu), "exec-start-addr", pentry); +} + +static void hexagon_init_bootstrap(MachineState *machine, HexagonCPU *cpu) +{ + if (machine->kernel_filename) { + hexagon_load_kernel(cpu); + } +} + +static void do_cpu_reset(void *opaque) +{ + HexagonCPU *cpu =3D opaque; + CPUState *cs =3D CPU(cpu); + cpu_reset(cs); +} + +static void hexagon_common_init(MachineState *machine, Rev_t rev, + const struct hexagon_machine_config *m_cfg) +{ + MemoryRegion *address_space; + MemoryRegion *sram; + DeviceState *glob_regs_dev; + + memset(&hexagon_binfo, 0, sizeof(hexagon_binfo)); + if (machine->kernel_filename) { + hexagon_binfo.ram_size =3D machine->ram_size; + hexagon_binfo.kernel_filename =3D machine->kernel_filename; + } + + machine->enable_graphics =3D 0; + + address_space =3D get_system_memory(); + + sram =3D g_new(MemoryRegion, 1); + memory_region_init_ram(sram, NULL, "ddr.ram", + machine->ram_size, &error_fatal); + memory_region_add_subregion(address_space, 0x0, sram); + + glob_regs_dev =3D qdev_new(TYPE_HEXAGON_GLOBALREG); + qdev_prop_set_uint64(glob_regs_dev, "config-table-addr", m_cfg->cfgbas= e); + sysbus_realize_and_unref(SYS_BUS_DEVICE(glob_regs_dev), &error_fatal); + + for (int i =3D 0; i < machine->smp.cpus; i++) { + HexagonCPU *cpu =3D HEXAGON_CPU(object_new(machine->cpu_type)); + qemu_register_reset(do_cpu_reset, cpu); + + /* + * CPU #0 is the only CPU running at boot, others must be + * explicitly enabled via start instruction. + */ + qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", (i !=3D 0)); + if (i =3D=3D 0) { + hexagon_init_bootstrap(machine, cpu); + if (!qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal)) { + return; + } + } else if (!qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal= )) { + return; + } + + } +} + +static void init_mc(MachineClass *mc) +{ + mc->block_default_type =3D IF_SD; + mc->default_ram_size =3D 4 * GiB; + mc->no_parallel =3D 1; + mc->no_floppy =3D 1; + mc->no_cdrom =3D 1; + mc->no_serial =3D 1; + mc->is_default =3D false; + mc->max_cpus =3D 8; +} + +/* ----------------------------------------------------------------- */ +/* Core-specific configuration settings are defined below this line. */ +/* Config table values defined in machine_configs.h.inc */ +/* ----------------------------------------------------------------- */ + +static void v66g_1024_config_init(MachineState *machine) +{ + hexagon_common_init(machine, v66_rev, &v66g_1024); +} + +static void v66g_1024_init(ObjectClass *oc, const void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->desc =3D "Hexagon V66G_1024"; + mc->init =3D v66g_1024_config_init; + init_mc(mc); + mc->is_default =3D true; + mc->default_cpu_type =3D TYPE_HEXAGON_CPU_V66; + mc->default_cpus =3D 4; +} + +static const TypeInfo hexagon_machine_types[] =3D { + { + .name =3D MACHINE_TYPE_NAME("V66G_1024"), + .parent =3D TYPE_MACHINE, + .class_init =3D v66g_1024_init, + }, +}; + +DEFINE_TYPES(hexagon_machine_types) diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index 1ac6d9a8575..72abc9182a9 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -69,7 +69,7 @@ typedef struct QDevAlias QEMU_ARCH_SPARC | \ QEMU_ARCH_XTENSA) #define QEMU_ARCH_VIRTIO_CCW (QEMU_ARCH_S390X) -#define QEMU_ARCH_VIRTIO_MMIO (QEMU_ARCH_M68K) +#define QEMU_ARCH_VIRTIO_MMIO (QEMU_ARCH_M68K | QEMU_ARCH_HEXAGON) =20 /* Please keep this table sorted by typename. */ static const QDevAlias qdev_alias_table[] =3D { diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index ae980c087f0..15258a203b3 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -32,6 +32,7 @@ #include "translate.h" #include "genptr.h" #include "printinsn.h" +#include "exec/target_page.h" =20 #define HELPER_H "helper.h" #include "exec/helper-info.c.inc" diff --git a/hw/Kconfig b/hw/Kconfig index b3ed092f7a8..dda3139be74 100644 --- a/hw/Kconfig +++ b/hw/Kconfig @@ -54,6 +54,7 @@ source arm/Kconfig source cpu/Kconfig source alpha/Kconfig source avr/Kconfig +source hexagon/Kconfig source hppa/Kconfig source i386/Kconfig source loongarch/Kconfig diff --git a/hw/hexagon/Kconfig b/hw/hexagon/Kconfig new file mode 100644 index 00000000000..7b9577f68f7 --- /dev/null +++ b/hw/hexagon/Kconfig @@ -0,0 +1,5 @@ +config HEX_DSP + bool + default y + depends on HEXAGON && TCG + imply PTIMER diff --git a/hw/hexagon/meson.build b/hw/hexagon/meson.build new file mode 100644 index 00000000000..f528d2bc4ab --- /dev/null +++ b/hw/hexagon/meson.build @@ -0,0 +1,6 @@ +hexagon_ss =3D ss.source_set() +hexagon_ss.add(files('hexagon_tlb.c')) +hexagon_ss.add(files('hexagon_globalreg.c')) +hexagon_ss.add(when: 'CONFIG_HEX_DSP', if_true: files('hexagon_dsp.c')) + +hw_arch +=3D {'hexagon': hexagon_ss} diff --git a/hw/meson.build b/hw/meson.build index ef65ba51950..7fa81db453e 100644 --- a/hw/meson.build +++ b/hw/meson.build @@ -3,6 +3,7 @@ subdir('alpha') subdir('arm') subdir('avr') subdir('hppa') +subdir('hexagon') subdir('xenpv') # i386 uses it subdir('i386') subdir('loongarch') --=20 2.34.1 From nobody Sat Apr 11 18:38:37 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=1775676121; cv=none; d=zohomail.com; s=zohoarc; b=J/5swl13abhJ1s3JjuK284yUCDUTNUKVMgy3skDsJp/JNI8TobpzkplG4M+xY9D24475bzIgEYQ75AYnR5tb39LGNsaclNGKOY2zJuYePL2VQfrr1EdI1Ijv7XZ5kCYPLAmmJNt0ePgwfq++ccHuJloyO0mUTWsokpmuu+iBq7M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775676121; 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=vGTOuwwdCbFJxmkP8mrt/qBNjb/dMJD/0dO3u17IN84=; b=WCzpScWFr7J81HiQ2fEJ0rWEUSXwF5iEJ3ACa5MJA+c5AhCGc3ZFetevpGiDo/LyUer8HG6sRcMiMnE7pfqgS0zG/UjQ8bWWIGbfzE47irMMmc9MfoMFKfQDOcIzuiZkkQZ6dyP3e3t6oVw+eg93pylyQP92KHTWKJEOI85+Vog= 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 (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775676121544835.9303730177287; Wed, 8 Apr 2026 12:22:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAYSg-0003IT-Nz; Wed, 08 Apr 2026 15:21:14 -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 1wAY3D-0005pW-R8 for qemu-devel@nongnu.org; Wed, 08 Apr 2026 14:54:56 -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 1wAKQQ-0005iX-7d for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:21:59 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 637M75OY2451717 for ; Wed, 8 Apr 2026 04:21:57 GMT Received: from mail-dl1-f72.google.com (mail-dl1-f72.google.com [74.125.82.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddae68wrj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:21:57 +0000 (GMT) Received: by mail-dl1-f72.google.com with SMTP id a92af1059eb24-126e8ee6227so9486623c88.0 for ; Tue, 07 Apr 2026 21:21: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 a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21: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= vGTOuwwdCbFJxmkP8mrt/qBNjb/dMJD/0dO3u17IN84=; b=aZxPOIwQpNdo/DLk EUmJp9rpc3dZsuEJ0TOS6ZSnzUr3MSmUGoaYhlZqr5Xb1ciQfe6mzXfkDo5ba1Qa crCmt8BK0Tc3w5fR+bLJIxp+BPl0p4puSpwHWNQFDpGiwAp9mZct8MjoEq/HXR0r 13qhtivW011fAFs4tJxg4SdRwhfy7MjnvlQ0ouxFFYjc4xB1KYVg/ChPKK+EK7Ly 9jDjJIA75CVBW0PSlRiky0NkjUS0nUEtG8MIeCYDFRzYDrQpAB68pNXF8KJ7RFBV LNjxpoDi/SXCgkg1V/kXH75NdTVjVwHqtPSxiq3pdT9DMgjtKyxUySbDp5ys8Syc GMbq9g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622116; x=1776226916; 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=vGTOuwwdCbFJxmkP8mrt/qBNjb/dMJD/0dO3u17IN84=; b=HGoQatBVFefpHwMoM1bVZK2vrznm1OIcUAiaZoIUJzu9J/5ABrA+Roi8e2KUGJwo63 d/EyCGDD1oKXkY73IyKqq4PKGE9+7ecwmcuHWX0D6GeeopPXDmGeLZDeqPDDaoGvr2QA ArZlGIU8QyVB+a/4YaQq4Ek7phCXe3PXYOTJP48yrjKvbselAviaWKHvs+yM25PR0gNA XYaz3EhtIyZ4ls6uAm7FM5ACSRlI5Mg4CqXUestXwxz0cGjmOazdl/T2slwAPuhDTxQa SNYJgpBnaTUdoXfMO6EBvQuC9WK7laonzVXDnxkDpCD5TCs9MrPDu5flSQ9TPibzbn0w JYyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622116; x=1776226916; 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=vGTOuwwdCbFJxmkP8mrt/qBNjb/dMJD/0dO3u17IN84=; b=Uh+yQreOf6bx+71IESt6BR4q3dEvvIbZ3bZX7EM2VKM6+ogomclYxjR50yQaDmMDR4 n32OdOrdeZmSdaWfBa8juB1BDycBWvxn+LlPeYpxL6jaO/lHzW6wSrzPiyTWPKmpECuJ Ud2hwDNxyWG7Yp+wIYRx2pz76tcMAHcsPR7fwOaXRYzQMNCotWNnZOWMhoPRl8ymnESh YAmzBsr0ZTnZl24E5Ee/K1muKOybicb+0hQu/JCQGVGPHyf5FJ1wUAiSi/iFePaWmyYj 7NTcRkPHGN0tt1B2Et8jiKBPiuAbYyOmpEyvTkWieGJ2TKhOeKVdLs/Tp6aOxHRudcHS Hwyw== X-Gm-Message-State: AOJu0YznKbA5NhyU41BFJup2mn7i34PypjigmrhNVJBBa30Qt8ZG1nIG os+MNETihXMmULTeQ4HWc/liMO1JzznV6+idadZlZDxP84XBqvyCpMnq06XK4vby0SHTT1KG1d9 9lIhCAtfG+JlYmGbpjFhkPpKUKz5RrRVBanFXb4OJcKjvQ6HWAKcj04MMFgIDcB1WUQ== X-Gm-Gg: AeBDievUWXAR0JqnKV53vIBqUMtEkLj+r13Efz4+SGAZJaye/HAg37vs3fbbl5ZmBaH RYt07ChuJK1d/nIVJ7w7j4/SWzIJ2DrljUM3EI2vPGg1X+bFdCSEPv1mxIuLIhrjz+HP7LOYbLN +kYGHDRfCK/hIi09gX7oWj8s8xEwiNWF75r2bK87xPXFO4pzUx9ocarua/ELvxrFV+33iJfuYV9 Bcq/J2U/yJxS1Yn42amnBm0L3XcN6Mbgaez8NMkabN18BzHno3zfnGIPGQ/kw1YgcItxiKkm1x0 WEDn8YBny/LDSHBQ6fRnIsI4OZKKj0EG6jd809g2Jt+iqyNYK9Vi+4Apj/8TkQ4SghWPsAU6cwg J4ebFxBx47Dd0QFIe3BUxGtFdWD6oZs9NYxHgXeSSqxXYzxTqZhKUeP5kxRLDBbMRSer4eQ== X-Received: by 2002:a05:7022:112:b0:128:e6d0:d7c3 with SMTP id a92af1059eb24-12bfb73eec9mr9620702c88.20.1775622115995; Tue, 07 Apr 2026 21:21:55 -0700 (PDT) X-Received: by 2002:a05:7022:112:b0:128:e6d0:d7c3 with SMTP id a92af1059eb24-12bfb73eec9mr9620684c88.20.1775622115426; Tue, 07 Apr 2026 21:21:55 -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 v4 4/9] hw/hexagon: Add v68, sa8775-cdsp0 defs Date: Tue, 7 Apr 2026 21:21:43 -0700 Message-Id: <20260408042149.1902796-5-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-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: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfX/fMdl4x+Fseh Zyq/K1TJEA43JsRw/xwyyd8Z7eL81td9XKt5AjZbtER+Ao8ZhGrsZdiCm2XR4ILtVBphqUYU9WC sKRtQZU6Az0bKfsS/cyWKrlXh/7SOezCFqH5tv9H6c5C3ydbW1Y6uOnLt2nc0/CJE4bW8BHQuXw BdHQvp0+D9LsDYX+mATq/szi0ra3gm8fNfENlS7DT3omI+PbklCwAscxzBNGXvwjqjl7o6Tof+M CW0c8Vy+3eA8SB7Gq45wxbTnNRLAfnf7URr2WQEPvj9XckMokEX+19fjfMCCLIpaO6nWr0INUZX 9PNPUp2sDBETdYcwMreEdD8fxGhAf3R9wn3d9dODya8MfiyEH8c8dikxig64NfYG8r8T5lnl9kt w408zIaCEN1rnj7fv0U038klua8v7Kk5JOWZNR6QPW/PhSDdtJ6YJYECe4zLnnSlqsUWntOR9GD EVVd002W+MnOxtWdY8A== X-Proofpoint-GUID: -5YoaMU8Z_P6DxlaU7sxNbw08U0Xvri0 X-Proofpoint-ORIG-GUID: -5YoaMU8Z_P6DxlaU7sxNbw08U0Xvri0 X-Authority-Analysis: v=2.4 cv=K4AS2SWI c=1 sm=1 tr=0 ts=69d5d7e5 cx=c_pps a=bS7HVuBVfinNPG3f6cIo3Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=COk6AnOGAAAA:8 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=Y0VZbjsYLljPqHOwCnMA:9 a=QEXdDO2ut3YA:10 a=vBUdepa8ALXHeOFLBtFW:22 a=TjNXssC_j7lpFel5tvFf:22 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 clxscore=1015 phishscore=0 malwarescore=0 spamscore=0 bulkscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 1775676122584158500 From: Brian Cain Acked-by: Taylor Simpson Signed-off-by: Brian Cain --- hw/hexagon/machine_cfg_sa8775_cdsp0.h.inc | 64 ++++++++++++++++++++++ hw/hexagon/machine_cfg_v68n_1024.h.inc | 65 +++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 hw/hexagon/machine_cfg_sa8775_cdsp0.h.inc create mode 100644 hw/hexagon/machine_cfg_v68n_1024.h.inc diff --git a/hw/hexagon/machine_cfg_sa8775_cdsp0.h.inc b/hw/hexagon/machine= _cfg_sa8775_cdsp0.h.inc new file mode 100644 index 00000000000..442cbe3be31 --- /dev/null +++ b/hw/hexagon/machine_cfg_sa8775_cdsp0.h.inc @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +static const struct hexagon_machine_config SA8775P_cdsp0 =3D { + .cfgbase =3D 0x24000000 + 0x180000, + .l2tcm_size =3D 0x00000000, + .l2vic_base =3D 0x26300000 + 0x90000, + .l2vic_size =3D 0x00001000, + .csr_base =3D 0x26300000, + .qtmr_region =3D 0x26300000 + 0xA1000, + .cfgtable =3D { + .l2tcm_base =3D 0x00002400, + .reserved0 =3D 0x00000000, + .subsystem_base =3D 0x00002638, + .etm_base =3D 0x00002419, + .l2cfg_base =3D 0x0000241a, + .reserved1 =3D 0x0000241b, + .l1s0_base =3D 0x00002500, + .axi2_lowaddr =3D 0x00000000, + .streamer_base =3D 0x00000000, + .reserved2 =3D 0x00000000, + .fastl2vic_base =3D 0x0000241e, + .jtlb_size_entries =3D 0x00000080, + .coproc_present =3D 0x00000001, + .ext_contexts =3D 0x00000004, + .vtcm_base =3D 0x00002500, + .vtcm_size_kb =3D 0x00002000, + .l2tag_size =3D 0x00000400, + .l2ecomem_size =3D 0x00000000, + .thread_enable_mask =3D 0x0000003f, + .eccreg_base =3D 0x0000241f, + .l2line_size =3D 0x00000080, + .tiny_core =3D 0x00000000, + .l2itcm_size =3D 0x00000000, + .l2itcm_base =3D 0x00002400, + .reserved3 =3D 0x00000000, + .dtm_present =3D 0x00000000, + .dma_version =3D 0x00000003, + .hvx_vec_log_length =3D 0x00000007, + .core_id =3D 0x00000000, + .core_count =3D 0x00000000, + .coproc2_reg0 =3D 0x00000040, + .coproc2_reg1 =3D 0x00000020, + .v2x_mode =3D 0x00000001, + .coproc2_reg2 =3D 0x00000008, + .coproc2_reg3 =3D 0x00000020, + .coproc2_reg4 =3D 0x00000000, + .coproc2_reg5 =3D 0x00000002, + .coproc2_reg6 =3D 0x00000016, + .coproc2_reg7 =3D 0x00000006, + .acd_preset =3D 0x00000001, + .mnd_preset =3D 0x00000000, + .l1d_size_kb =3D 0x00000010, + .l1i_size_kb =3D 0x00000020, + .l1d_write_policy =3D 0x00000002, + .vtcm_bank_width =3D 0x00000080, + .reserved4 =3D 0x00000001, + .reserved5 =3D 0x00000000, + .reserved6 =3D 0x00000003, + .coproc2_cvt_mpy_size =3D 0x0000000a, + .consistency_domain =3D 0x000000e0, + .capacity_domain =3D 0x00000080, + .axi3_lowaddr =3D 0x00000000, + }, +}; diff --git a/hw/hexagon/machine_cfg_v68n_1024.h.inc b/hw/hexagon/machine_cf= g_v68n_1024.h.inc new file mode 100644 index 00000000000..82619c42ac1 --- /dev/null +++ b/hw/hexagon/machine_cfg_v68n_1024.h.inc @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +static const struct hexagon_machine_config v68n_1024 =3D { + .cfgbase =3D 0xde000000, + .l2tcm_size =3D 0x00000000, + .l2vic_base =3D 0xfc910000, + .l2vic_size =3D 0x00001000, + .csr_base =3D 0xfc900000, + .qtmr_region =3D 0xfc921000, + .cfgtable =3D { + .l2tcm_base =3D 0x0000d800, + .reserved0 =3D 0x00000000, + .subsystem_base =3D 0x0000fc90, + .etm_base =3D 0x0000d819, + .l2cfg_base =3D 0x0000d81a, + .reserved1 =3D 0x00000000, + .l1s0_base =3D 0x0000d840, + .axi2_lowaddr =3D 0x00003000, + .streamer_base =3D 0x0000d81c, + .reserved2 =3D 0x0000d81d, + .fastl2vic_base =3D 0x0000d81e, + .jtlb_size_entries =3D 0x00000080, + .coproc_present =3D 0x00000001, + .ext_contexts =3D 0x00000004, + .vtcm_base =3D 0x0000d840, + .vtcm_size_kb =3D 0x00001000, + .l2tag_size =3D 0x00000400, + .l2ecomem_size =3D 0x00000400, + .thread_enable_mask =3D 0x0000003f, + .eccreg_base =3D 0x0000d81f, + .l2line_size =3D 0x00000080, + .tiny_core =3D 0x00000000, + .l2itcm_size =3D 0x00000000, + .l2itcm_base =3D 0x0000d820, + .reserved3 =3D 0x00000000, + .dtm_present =3D 0x00000000, + .dma_version =3D 0x00000001, + .hvx_vec_log_length =3D 0x00000007, + .core_id =3D 0x00000000, + .core_count =3D 0x00000000, + .coproc2_reg0 =3D 0x00000040, + .coproc2_reg1 =3D 0x00000020, + .v2x_mode =3D 0x1f1f1f1f, + .coproc2_reg2 =3D 0x1f1f1f1f, + .coproc2_reg3 =3D 0x1f1f1f1f, + .coproc2_reg4 =3D 0x1f1f1f1f, + .coproc2_reg5 =3D 0x1f1f1f1f, + .coproc2_reg6 =3D 0x1f1f1f1f, + .coproc2_reg7 =3D 0x1f1f1f1f, + .acd_preset =3D 0x1f1f1f1f, + .mnd_preset =3D 0x1f1f1f1f, + .l1d_size_kb =3D 0x1f1f1f1f, + .l1i_size_kb =3D 0x1f1f1f1f, + .l1d_write_policy =3D 0x1f1f1f1f, + .vtcm_bank_width =3D 0x1f1f1f1f, + .reserved4 =3D 0x1f1f1f1f, + .reserved5 =3D 0x1f1f1f1f, + .reserved6 =3D 0x1f1f1f1f, + .coproc2_cvt_mpy_size =3D 0x1f1f1f1f, + .consistency_domain =3D 0x1f1f1f1f, + .capacity_domain =3D 0x1f1f1f1f, + .axi3_lowaddr =3D 0x1f1f1f1f, + }, +}; + --=20 2.34.1 From nobody Sat Apr 11 18:38:37 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=1775675948; cv=none; d=zohomail.com; s=zohoarc; b=BCSNp//BEo6gzzTkkLLkk7M1u2NjSxf95haJt/zvmrAwGdDzDpEL61yLA/PgndKPgk1ibjN5ElzdbDK6Zx8HDdK6s5dZE2Kgq62xZYtbyltMABlJM9xVyVu7Nno108WrAWDaPWaTFCBDUDE6T1XGWVr5rTaGHurcyZFsp1XJ2UA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775675948; 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=eS5ihb8Q3Wz0SkTdk6wjG+t9ylH9RVSPrzx1RphpHuQ=; b=Ul/3vT8RThZqAMcqdQ5Wqk7kWUI8pxVcvZXAulpUYuC0oR8SrHk+TL+RsoPyZKmiJivn+qdA0H2JSaFEO1EZWVJ/vpF3RPP3O0HST9r/47YwaF26+5RfuW9sFA3yPK7ZCsWCo1n827OYQ4EBadrCEurY2D0Iw14xXYs/1V0k6Hw= 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 (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775675948023641.286275500592; Wed, 8 Apr 2026 12:19:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAYPK-0000vQ-7B; Wed, 08 Apr 2026 15:17:46 -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 1wAYMs-0006x7-Or for qemu-devel@nongnu.org; Wed, 08 Apr 2026 15:15:15 -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 1wAKQR-0005ig-2r for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:22:00 -0400 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 637NflVw1259505 for ; Wed, 8 Apr 2026 04:21:58 GMT Received: from mail-dl1-f69.google.com (mail-dl1-f69.google.com [74.125.82.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddbttrquk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:21:57 +0000 (GMT) Received: by mail-dl1-f69.google.com with SMTP id a92af1059eb24-12c20d5d7f4so1170906c88.1 for ; Tue, 07 Apr 2026 21:21: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 a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21:55 -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= eS5ihb8Q3Wz0SkTdk6wjG+t9ylH9RVSPrzx1RphpHuQ=; b=hy8m0qKKTi4muGWi UCRLuYf59DEmEoHiFAaXmC/yqDLAcWz0GpQGy4OorQLHvLmiLUUEJkRviCAk+EoK jFLUsJzApHEiQwBWUSnnjo9p0Lc4DOLoGo7rueTVR/U2oEs/33q9JP5XMhyD2Sdp 7uEPHrCcctMjrYRBeaK3lCWYRcPMgkdb8gsGAihtjVyGncbPPldpn4wxLI6BXOw2 2Zs3K9hu3Yi3fRh/LVwrkVpTVFdhQoHE4EvmSC3lc4pj4ClLX5oOV+nzaS4A+S2v BbUri8UhD3FGOVyJEwowercAYcz93s+8RN5zZPZXORuOAbRAFYMr3HzosK3vcj17 aOYS/g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622117; x=1776226917; 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=eS5ihb8Q3Wz0SkTdk6wjG+t9ylH9RVSPrzx1RphpHuQ=; b=eF2qFOG2qRC2b22KGmbMZvvC7Ldnycfn/zfv4BMaddZrGLe2NFl60LKcWkCOvMkcIW dHAHzRGBPuabARK/YBl2e5W7QYtfPt3C6TaKJJz7ZmSfcnMNsj0+lmKGpN34bv1NYVQq PX+Chp4J7sz7uJPPz11XCJEaGv7PTWXxpGNxswf2wH9KL4MiG8xP6UtJbjWfmFVo7pot IRVwav2hOuKA7wpaiNlh6FvfQ9HC+YZl7mUJs+AWY8C/7OAls0pTDIwpidv0OOn2nA7z oKHTbJVbaQFZoZgAFe5JvhJLUY/JBz08Q7A7hOHT4oAR4YhQM7hEjLhf6hJ0pKk4Qb77 ruAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622117; x=1776226917; 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=eS5ihb8Q3Wz0SkTdk6wjG+t9ylH9RVSPrzx1RphpHuQ=; b=s1QvLb/2KAH4fcZIs9h8eJX2Ai6TO80lcVDa8lhVKz3qBRFISSq8xpGtHcvvTZ9z2W v2udsc7ZTHo7IQzwyxmarkYWUJMyTdcpEZrA/4r4rsv34sDNRoeLrWlHoOZFYvu6zt4n HBmP5Ei3ls7kVkzcy28puJfOH/tSt1KE31CxX0Mflhx8lbTYF/du0polqUzmTlOzI43g WNOsdr13/c0h2IyHabHYCAFBuvqLmi7BnAHhoV/3cDFXE23TpnyJyTtYfuSG/hOQPua6 hoNZwfjavuGvmHdgUSTvYBk+7o7njGO7SfCpBPjujGWq6pmA3tAaubC5lmixqBByzpEw N3ag== X-Gm-Message-State: AOJu0YxwC0SAyAeuJ8OcLXd6NgNxnvV3wFC8wJ/kDhjGhCLOZIDrar2N 7Vyg7f1XSGcjbjC9nPFIK0zSe7tHC2T90knZUoS7XHSoWZozAztzPZkRK4t1hheuqrd4Hv8vSL8 A+uoPoI3zBPS91wMa3nw7XkMyzhdxvQ738RDFJtlY4ApwliC02lq0KLqFQ6tsOtL2fw== X-Gm-Gg: AeBDievVBLQmd/g+7723Gwn4NV6LhGHoRNXjy7qvJMi7KQVcyEfPWQA5uhXf769i0st xCO1FmPBVQEmb0TREl0yfRH1IEQzrJCVCTtKxqMLDJPwrvDcIO2/H93Gyj/+tJUxzGHXmMuLVtJ O8u2RfLAMd1dU+ejTJj7L7v4PKDVxgTYibBx+HX8qqUilvfaq7KXbqqSz2aF9MHOTQP7PzzNI/7 pAJpFtOlgWLP2+whjcQDllbDvYdFd1uZhO8tCs6GepUdbb+7Ba3S7xhZipZPWuGg+hHUjTkhyuN ygV7ufqzAwLunf+0PPZyuGUbxdhkvz8PIY5vXLdLyZQiQu6vsoDaXxIPjk3B3al7VThd0nPH/6M rlIOa3Yci6oDMk+jGQRbbXVc7N2QB/68bvPMMzgDfWhrBrXJ7xOZIyUsfV9INpGRYHHpYIw== X-Received: by 2002:a05:7022:3d0b:b0:12a:6fbb:3353 with SMTP id a92af1059eb24-12bfb6e8cd5mr11223840c88.3.1775622116839; Tue, 07 Apr 2026 21:21:56 -0700 (PDT) X-Received: by 2002:a05:7022:3d0b:b0:12a:6fbb:3353 with SMTP id a92af1059eb24-12bfb6e8cd5mr11223817c88.3.1775622116235; Tue, 07 Apr 2026 21:21:56 -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, Sid Manning Subject: [PATCH v4 5/9] hw/hexagon: Add support for cfgbase Date: Tue, 7 Apr 2026 21:21:44 -0700 Message-Id: <20260408042149.1902796-6-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-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: C8SXoq6XzrLrxDqJB0VGeoOIEgNFhwk6 X-Proofpoint-GUID: C8SXoq6XzrLrxDqJB0VGeoOIEgNFhwk6 X-Authority-Analysis: v=2.4 cv=TOt1jVla c=1 sm=1 tr=0 ts=69d5d7e6 cx=c_pps a=kVLUcbK0zfr7ocalXnG1qA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=COk6AnOGAAAA:8 a=pGLkceISAAAA:8 a=kMsUHo8U3t7WCeOG3PUA:9 a=QEXdDO2ut3YA:10 a=vr4QvYf-bLy2KjpDp97w:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfX1635zT5QLhIV 2XXaggDjFEPVA1y2P6vkmtKGt7LZijsC44fWxDNrBFnl55pK6yoltQGQ5wfdq3IRncsFiE7WX5D wJ0G+3oTFWX5iJAasbmgt4whkQt5NoY5a7snbaDdFT/b288spuf1AiZHvotpDTtgcu0WadTbhAW lLhHvXkW3XmGILv8NC9HZXBziN1RM37eFdFrQd9qhYdsnEppqiCeKzhUeYn1hU5W10tZZSLPeJX mVEjtuseoUt1b36huNZ2q7+qQzEqCxzc5RCqsUYQEiJSjb2ErVgCDc49evWqUCBfotdRFwtKke3 RLBH/FrtxFGizCl/0fnUU5V3fnSVhv4O6S+9kDa4YT9rOdz5HFuxNpiFOUPufHn/GGZy6XhjGUg iXFm5my9tabzFwMc8vXw1PlKjmGADzuhv9Yj0B3mOCYryogfwTWbMtpyPq9x44xiK8wkRNvZqlk kuyT2B3mfOAfcffG+Lg== 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 1775675949693158500 From: Sid Manning Reviewed-by: Taylor Simpson Signed-off-by: Sid Manning --- hw/hexagon/hexagon_dsp.c | 11 +++++++++++ target/hexagon/cpu.c | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index d5df87605f4..649cafcf8ec 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -73,6 +73,7 @@ static void hexagon_common_init(MachineState *machine, Re= v_t rev, const struct hexagon_machine_config *m_cfg) { MemoryRegion *address_space; + MemoryRegion *config_table_rom; MemoryRegion *sram; DeviceState *glob_regs_dev; =20 @@ -86,6 +87,12 @@ static void hexagon_common_init(MachineState *machine, R= ev_t rev, =20 address_space =3D get_system_memory(); =20 + config_table_rom =3D g_new(MemoryRegion, 1); + memory_region_init_rom(config_table_rom, NULL, "config_table.rom", + sizeof(m_cfg->cfgtable), &error_fatal); + memory_region_add_subregion(address_space, m_cfg->cfgbase, + config_table_rom); + sram =3D g_new(MemoryRegion, 1); memory_region_init_ram(sram, NULL, "ddr.ram", machine->ram_size, &error_fatal); @@ -114,6 +121,10 @@ static void hexagon_common_init(MachineState *machine,= Rev_t rev, } =20 } + + rom_add_blob_fixed_as("config_table.rom", &m_cfg->cfgtable, + sizeof(m_cfg->cfgtable), m_cfg->cfgbase, + &address_space_memory); } =20 static void init_mc(MachineClass *mc) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index bd3eec0d525..9883c4d1681 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -404,7 +404,6 @@ void hexagon_cpu_soft_reset(CPUHexagonState *env) } #endif =20 - static void hexagon_cpu_reset_hold(Object *obj, ResetType type) { CPUState *cs =3D CPU(obj); --=20 2.34.1 From nobody Sat Apr 11 18:38:37 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=1775676081; cv=none; d=zohomail.com; s=zohoarc; b=ODYcVSYS8/mLFyofZCj5j8hdzvHvKRcVSMNodiZ8eDlSpxkiP7u7ZKWkeM8YGRH6ogBFSKM6MPil5bVPJxeruqMrHsmQHmemJJxFJjuZDhmWfAO/HEgjbUVZOhI+jLEiTdQjgf3uX8ZXbw3R2m50xCdNfKTU11qEbmyAakYWrHA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775676081; 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=LEWN7D4QBDCm/3YwyXJ1nbi+9jJyq8HjarAU/LQbQ9I=; b=Kqkdv13b/VSgGh1pa+Rb9G2FVi0bbvgA5QjDjDOstkWqgv/eo6+zpQ4G0wBxnhsGvOBrZks0GOuqetNYxt1+n9YnuFAbzD3yFWNKs+gF7/gVrSu7BTZVt+XLkB36qzKAhA66ccHlPxiBwm/+HwEUczIUySktx9RogVKeWQVQZ1I= 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 (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775676081095524.1070624727826; Wed, 8 Apr 2026 12:21:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAYPN-0001P0-AH; Wed, 08 Apr 2026 15:17: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 1wAYNZ-0007d7-8U for qemu-devel@nongnu.org; Wed, 08 Apr 2026 15:15:58 -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 1wAKQR-0005im-Ul for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:22:01 -0400 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 637NfjVW1259485 for ; Wed, 8 Apr 2026 04:21:59 GMT Received: from mail-dl1-f71.google.com (mail-dl1-f71.google.com [74.125.82.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddbttrqur-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:21:58 +0000 (GMT) Received: by mail-dl1-f71.google.com with SMTP id a92af1059eb24-12c20a91932so4018113c88.1 for ; Tue, 07 Apr 2026 21:21:58 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21: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= LEWN7D4QBDCm/3YwyXJ1nbi+9jJyq8HjarAU/LQbQ9I=; b=QoE83GtjKvfE41xA tTxBq1U0/WDnQky6tQ3Go1twPIP9S2cFnHROPpPhuDnWdRhDzjsxIPTtWSPyUvg2 1Aq5sP64la0JyJ9FVltY9o+jnrL8A5Xp/6t6IfBN0rEyfJq0zqgrOfbtXhzmFfls gGjGb22U0RavZOc5mJQk5QM5fHBEtR17y5RqIfHUaZjyxmHExeTGNAjZF/RlSnvP j5ALAUezwsulOBIoVZBQPSxVnYNpVpZTIuQRYKKMUa2aexkNPIxaVNmFdddx9UXD g6hV5g66CNZ8BrU0VY5zWd/lvWw7WIUIXHWpVANQ8hVk9KLL/9Zo/kRD9N1hiVmj aie9Ig== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622118; x=1776226918; 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=LEWN7D4QBDCm/3YwyXJ1nbi+9jJyq8HjarAU/LQbQ9I=; b=OwaVBctp0su/eA2VtjK6zg6i8QimafpHZOlcXdcPX4hERhIgaOe/jNKIbcfm0/slzj QzHwaEzYOwVr6445ZnO6o7J1KLhoASFpqR88zX+IhXxa6hk8/OP9MULLL9+Q60B6xXaO Ezju1YxBJ7LNqIeCdmja/+M6VSg/UdlyhT4YU4Z0Ypcq7NDUvxwSb245xVcGTrQg18DI 2bRf1DkC7B2aoLXzfHGE5SCOBeazR21tYQHeyb8sS5AHDdKGEvugZH3mD5VMgAY5EDv4 b6elGA/8gDxDWbYii9D9ELz0s5b6Rkw2mvgG3L8wCZAib9a/+ivYvbn4eaSxhP8kDQ3V ohpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622118; x=1776226918; 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=LEWN7D4QBDCm/3YwyXJ1nbi+9jJyq8HjarAU/LQbQ9I=; b=K4M5ZWzqC8wYlmYcT1dAboN1uFYk2FE4cgbFWKpg+W0o/VW+0bd+kRzwBDoS2oN3p5 QV/8QoPA3T7gCm9ivcnu7eyJFBJX68eEL4+WLckoU0z0sJUp8p5FE2LQIFDMYzd0nO3Q S+QZd7htTXb/zQLDWhK7GGBmlC1UOABOVCKN80UQCoXTX30+Yq32PQRTW/OKgk1J5QqF ecEkpXW1fFiwygEpUPXGhcR3QOJEju1LPWEO/0RjcU0TQ9LnNe1RYpppubNdVaOzgFQI qd4XHcVhotmdQ50aOz4m1WWCGav3PkPJkcNv0vGPM6ZvlbQx6/M/0vav5IvSMduBHwWe nxSg== X-Gm-Message-State: AOJu0Yz2uFKEDMt/TW92BLOnBZlb/f0n8ohAWjEZIJ4W47tPgfKu6esm vyBqK39mW0vzf2lst80RPP7gSM2Wgix1ippHHSls7UtJbrGjJNN0pRLSLPpno93DMPYBgTrSY2S B0j71KhrLSlETnl74H+/CmHU6AvBPi/tJGQGn3nesX6YIHyeJ7wfWkRvNRv8U69YBfA== X-Gm-Gg: AeBDietXRWt5zbhtQtV3CiR0Q6tZIMggoCIR5YHG/XrGKXRGXr080iNd2HL2ZiGylKP ZqY2tHc2wutN6EjUk8MeCQl1UWetYEUIQGV5phRAR/3GbEF9oECUjl2ynwr4tvVrBEvx0XDJhZ5 ab6ugVBbNrJJafY1zdqi7kVhMX/9+T/Hx8Miuu2LKmmzAXiKKXibgF09NMh1dNrGj4EmRKJINsk JvEINk68FTFV3RNay2JMX/Vos3eTt7O3SMGiiUdMYx9Qri97AjIyD6/ZLhzsNGkX4+9GvsYMpcA 45FKpmU/slk7rAlBQQT65KDHzZnZAUCylT1SNBfLYGO67RITf7f0UZROd77QUH2Wb0WfQVEQRlv LKycm8FMlpD5vSjXhy6KFDQRGXLWEM3aVInMiE8sZn7ITQgL5l5M7GH0t1oJs2t6cpbbeSA== X-Received: by 2002:a05:7022:4396:b0:128:bae9:c069 with SMTP id a92af1059eb24-12bfb76f731mr10510264c88.33.1775622117696; Tue, 07 Apr 2026 21:21:57 -0700 (PDT) X-Received: by 2002:a05:7022:4396:b0:128:bae9:c069 with SMTP id a92af1059eb24-12bfb76f731mr10510249c88.33.1775622117156; Tue, 07 Apr 2026 21:21:57 -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 v4 6/9] hw/hexagon: Modify "Standalone" symbols Date: Tue, 7 Apr 2026 21:21:45 -0700 Message-Id: <20260408042149.1902796-7-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-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: iTKq00IKo18zDVyExPrU1rHJ4Ws_9nVZ X-Proofpoint-GUID: iTKq00IKo18zDVyExPrU1rHJ4Ws_9nVZ X-Authority-Analysis: v=2.4 cv=TOt1jVla c=1 sm=1 tr=0 ts=69d5d7e6 cx=c_pps a=JYo30EpNSr/tUYqK9jHPoA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=COk6AnOGAAAA:8 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=QhYL57-57G4zB7GrFpIA:9 a=QEXdDO2ut3YA:10 a=Fk4IpSoW4aLDllm1B1p-:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfX+qCpxt38GfYW KTrQ7u3VGLV6+5zJafZjRU1dNRUF4+XAMx86SHY5+JEs8DeyrgbuceKbZhO3OOZXoE09qBKMbiK 47WsKunXzg/IP8dSiFCgE4qT01m24o/zWYpRsiPVOBO2lm+Kq4ljTVkygolBft3N6DGtqLFFe+f of0KOkj+ldrwY3QFt0iGjPDSx1HJDFhRYu3MxtZPpzq081dapHhFnNxF0ll9/smo3FLVs58jXKG wo7dbc6nrRqux4fGvCIXV9mpFdjYfgj4RuepAYYfrSOVoddHLz9+49LO5rBS44rEjPexXDvDZII 33ynwsGAMEk8QLAqSsjRwb6mPBOqNlV7XDYfJoxgSGbDZ/zBcMQMgJR8bzsmm3lapXITyYmom4m Apv2XwQMKu9BaEjq5DF3eDsSMBrrxpKTeyQTFqiacIpmhR3DFQaC/9AOrJR79f74Us5KSwiSjRC kZ0IDVmff6M309idXKA== 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 1775676082498158500 From: Brian Cain These symbols are used by Hexagon Standalone OS to indicate whether the program should halt and wait for interrupts at startup. For QEMU, we want these programs to just continue crt0 startup through to the user program's main(). Reviewed-by: Taylor Simpson Signed-off-by: Brian Cain --- hw/hexagon/hexagon_dsp.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index 649cafcf8ec..3c269feed28 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -28,9 +28,17 @@ =20 #include "machine_cfg_v66g_1024.h.inc" =20 +static hwaddr isdb_secure_flag; +static hwaddr isdb_trusted_flag; static void hex_symbol_callback(const char *st_name, int st_info, uint64_t st_value, uint64_t st_size) { + if (!g_strcmp0("isdb_secure_flag", st_name)) { + isdb_secure_flag =3D st_value; + } + if (!g_strcmp0("isdb_trusted_flag", st_name)) { + isdb_trusted_flag =3D st_value; + } } =20 /* Board init. */ @@ -58,7 +66,15 @@ static void hexagon_load_kernel(HexagonCPU *cpu) static void hexagon_init_bootstrap(MachineState *machine, HexagonCPU *cpu) { if (machine->kernel_filename) { + uint32_t mem =3D 1; + hexagon_load_kernel(cpu); + if (isdb_secure_flag) { + cpu_physical_memory_write(isdb_secure_flag, &mem, sizeof(mem)); + } + if (isdb_trusted_flag) { + cpu_physical_memory_write(isdb_trusted_flag, &mem, sizeof(mem)= ); + } } } =20 --=20 2.34.1 From nobody Sat Apr 11 18:38:37 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=1775678208; cv=none; d=zohomail.com; s=zohoarc; b=MDkO8oZ32ZuEDstMJF1PrBu3sSqWTibatZ6Fj2A6F+0Zg7t6kaiKJUXDUAyu9aNgGf54y99prPjOqr5+YgVSHbo1Ao0JjG3aRB5meHYrkQJoWc5jzK2Nv2MhLf7FlVSZQoXtFDfSymvtVAt544Y3I+Gciv+E22vvn0IAwMmoY8A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775678208; 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=dalz+aimR/zYCYAnc4cJTc09a9iXBszukXk0/4hGSTk=; b=LBHOpZZJK0WxP0TdzGI+oFWyA1zwPBBWygrIiu5+OlsuDLZJEo3+rn3tbCbi6o9CpbOzcrjTXnmLLZkrgZiaGD44muk7os7xLKXsSFS4d6OJ0qVAj+rNNkzSXbPSxiHZLptTu3b67g8Sf2OFdGAHrrl78zeK2j8I5/WYlnMxAfE= 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 (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177567820856734.47649900933527; Wed, 8 Apr 2026 12:56:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAYas-0000ak-5V; Wed, 08 Apr 2026 15:29:42 -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 1wAY8k-0008Vb-Hs for qemu-devel@nongnu.org; Wed, 08 Apr 2026 15:00:38 -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 1wAKQd-0005jB-0w for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:22:12 -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 637M4T9Z2861124 for ; Wed, 8 Apr 2026 04:22:00 GMT Received: from mail-dl1-f71.google.com (mail-dl1-f71.google.com [74.125.82.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddad8rx0k-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:22:00 +0000 (GMT) Received: by mail-dl1-f71.google.com with SMTP id a92af1059eb24-1279caef718so9083965c88.1 for ; Tue, 07 Apr 2026 21:21: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 a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21:57 -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= dalz+aimR/zYCYAnc4cJTc09a9iXBszukXk0/4hGSTk=; b=VxrxBHoAseTmI/b0 IDv5Xfa1NnQk7k2YA+/J5QtQhe/AcjLtrYXbYUEqOy9rr9jyW5WdMDCEJ8X0N74d ydXH1zuNG9hgNnnQbO0GY1IUMln4Q7r01MgbkVg/tyYA/601PydOhnoIKy6NHsyo iO78Wec+QDOLcrvYNDu5D/4tCLsqSekna3faU+0EKrwxlFjg4jAlDU1DMMZgZKO6 OEV3SVa37NRiOHPyCSmg8YS+ykhA6GNESIjZ1lrZmkH2w7iunDUQu96ZJwtAQRmn /DEkB633DkMDOtQ72y7a7day5BKQX6B9bxy/PcIZh1+LiwnrUj3HPcfkYx5mg0XK n6Jwtg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622119; x=1776226919; 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=dalz+aimR/zYCYAnc4cJTc09a9iXBszukXk0/4hGSTk=; b=Rnfn7ljpFgncBx4HgxWjgpoXlkyphauZGi5wf22w8feOIdPPTES991T9LnE/TbwMK/ r6Hr/Jrp49Xm1ZHWaIGaLg+cb47/dQQiNlxNZB/sWvPUPoFZvOiDJzjHmjUf/DXS9LWy Vuj/UJQsKIg5I3GK22V1ZTJwNG2kAas1Is1Xep1+O/sU9PwlS+dO9HjQDIw5emftqekZ RSNwpYkE4Xf8rW2Vm5ZcY3Cx5lj5IoO++loNI9cNqOodobvojKAGMkLhHHejlrzWFZug JWmmYvjqE1jjSLA+aK/n5tjhdbuDocQYwEy2JB3G+aDwKXeVI4XGuxYaCqoPYuV/MWcM FNHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622119; x=1776226919; 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=dalz+aimR/zYCYAnc4cJTc09a9iXBszukXk0/4hGSTk=; b=SMgpOIKS4R0375VDrHyr+iKLaZG4KTULeHEpZjOgo6HAiwwVrcTl1nbMCA26pxDsLi KRBFpWxR2QkHjPJsHgh6JYfapaNNDo+A7WKzJar0nJ7Cf9iMqZbDs6+KChV8waDqCVII D9+RHs2h3EkqJ9V+HIZELtAAdaljqb8aKhhHHBWpJOr2q+aU85lukaaLL63oCVpOHiH+ zSKmThE0ZXOtKP279DVww7g+zkGBPaY7R+XRu3MjHsjwiOdKcBso8ghgvwvUDP6KfngF DZCk9PH70GWrwB2357GNGKlJQ+dgzJyYg4paWUz6KedrN8CyEeJAwDGdkiSnEyLvYzSg 6gdA== X-Gm-Message-State: AOJu0YzI7H8Cx/OYpvWKQKEpjSqNEWU39FGrBmcYihXAkXIjp2lssXLH 3F+WOZJUE8R9SomRYq+1amah87VUzusQNjY9JZ9P/UKJK3r9k5cuhuBCK9ILbkgOyx//LriFvgf 9XvoiGVvXB8eQqHd8r1QVZYSLt6o83avTwCAvF5FXY/JBrqfp3G8YxDCWFlHUCzp+Dw== X-Gm-Gg: AeBDietj70Kbb9Hk04AycNA7bKKyVKaaWyXU57EuH4y8l7XE6yXKA8mYSjUY6i8BoqE SkDYLtRPo0k2Acj4OrI7T5VhyjH+figFuteIeEwuLi0yowEotqzk3SiPql2zfsHPe3tatqRhc21 WSgjFRA5u54OpUtErJCh9O0iA8LGHEMxlk92T84iTuGbSOdiQcXQJGMFCwO9SkEmwF2osXW4jsD qcclLjmLRuM48J4EvHSPgm2skDuQUPmsQyfbN1wPYn8qzn3pX6hHhqwoP9s16hQ/y4Y7zpNiGXD Osa0yvs3dpkXfp6m9HR1sDMRJ6u6ndHpDwCyBzhAR5jfhX5QlK5DJraPeeHZ3ksRpoAPss4wYUn 1sulbhZnTQYodF0bdHmqvgtO/g/7HzLG9TMAbf76ps5rg7tO4S5syAkhTPchBwgUPpNeUcw== X-Received: by 2002:a05:7022:6881:b0:11b:b622:cad9 with SMTP id a92af1059eb24-12bfb73e381mr8371137c88.21.1775622118750; Tue, 07 Apr 2026 21:21:58 -0700 (PDT) X-Received: by 2002:a05:7022:6881:b0:11b:b622:cad9 with SMTP id a92af1059eb24-12bfb73e381mr8371117c88.21.1775622118143; Tue, 07 Apr 2026 21:21:58 -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, Paolo Bonzini Subject: [PATCH v4 7/9] target/hexagon: add build config for softmmu Date: Tue, 7 Apr 2026 21:21:46 -0700 Message-Id: <20260408042149.1902796-8-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-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: uVA5BWkvoLNIzgreflxZKmSHF_1H1xxa X-Proofpoint-GUID: uVA5BWkvoLNIzgreflxZKmSHF_1H1xxa X-Authority-Analysis: v=2.4 cv=EoDiaycA c=1 sm=1 tr=0 ts=69d5d7e8 cx=c_pps a=JYo30EpNSr/tUYqK9jHPoA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=Jl0Sl96qzwJOXFZnYegA:9 a=QEXdDO2ut3YA:10 a=Fk4IpSoW4aLDllm1B1p-:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfX2GKod3+Csv/F M6rLhX4ke7eFGbp/6961sPAy/7cMKZ3abeRASbgo9Oj5xJhXh0VDdcu+aCVqZ4juJWkRPoaGNZQ 6w+iPGZPlrh2XRfV445SGR5SWmG/xI6cucHk5I0IsytJ23erBkMF+mjhnwUGtCIwxb74nkfGfjt jJ4d6TDgUu3ctcbbMQXmihor2jKnLTXh9uNvq/8/amfsorCNCKf/o64CZylvRMyQ/fXp9/l1sdm LNnlfFJbooWPm1NHz/IXk3m+68tjw+TbDMYBn5d7MlVgqDrVFSaA/DY61xGzjoZ7oc25Hisqx5q jEvboGYOLj+VN0/6J04jdOAwh6rq901ghhin2QThfSLZ08PsYRC3scMCVw3f/7reQYNZ9mEnAR4 7y33It9rUXGGGCEez540ovnjaaqUrRnnvrSySOdR8ze6KSQxnqdAg8im1vcVPP3LMAMTp4gm8kY aTf/ac4XNtAreAVkJTA== 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 spamscore=0 clxscore=1015 bulkscore=0 malwarescore=0 impostorscore=0 suspectscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 1775678210133158500 Reviewed-by: Taylor Simpson Signed-off-by: Brian Cain --- MAINTAINERS | 1 + configs/devices/hexagon-softmmu/default.mak | 7 +++++++ configs/targets/hexagon-softmmu.mak | 7 +++++++ target/hexagon/cpu.h | 7 +------ target/hexagon/cpu.c | 3 +-- target/Kconfig | 1 + target/hexagon/Kconfig | 2 ++ target/hexagon/meson.build | 13 ++++++++++++- 8 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 configs/devices/hexagon-softmmu/default.mak create mode 100644 configs/targets/hexagon-softmmu.mak create mode 100644 target/hexagon/Kconfig diff --git a/MAINTAINERS b/MAINTAINERS index b9a7c553dfa..ed661c9f12e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -254,6 +254,7 @@ F: linux-user/hexagon/ F: tests/tcg/hexagon/ F: disas/hexagon.c F: configs/targets/hexagon-linux-user/default.mak +F: configs/devices/hexagon-softmmu/default.mak F: docker/dockerfiles/debian-hexagon-cross.docker F: gdbstub/gdb-xml/hexagon*.xml F: docs/system/target-hexagon.rst diff --git a/configs/devices/hexagon-softmmu/default.mak b/configs/devices/= hexagon-softmmu/default.mak new file mode 100644 index 00000000000..08e709aea72 --- /dev/null +++ b/configs/devices/hexagon-softmmu/default.mak @@ -0,0 +1,7 @@ +# Default configuration for hexagon-softmmu + +# Uncomment the following lines to disable these optional devices: + +# Boards are selected by default, uncomment to keep out of the build. +# CONFIG_HEX_DSP=3Dy +# CONFIG_L2VIC=3Dy diff --git a/configs/targets/hexagon-softmmu.mak b/configs/targets/hexagon-= softmmu.mak new file mode 100644 index 00000000000..fdfa29b4f39 --- /dev/null +++ b/configs/targets/hexagon-softmmu.mak @@ -0,0 +1,7 @@ +# Default configuration for hexagon-softmmu + +TARGET_ARCH=3Dhexagon +TARGET_XML_FILES=3Dhexagon-core.xml hexagon-hvx.xml +TARGET_LONG_BITS=3D32 +TARGET_NOT_USING_LEGACY_LDST_PHYS_API=3Dy +TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=3Dy diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 09d5cac4fe5..18dcfdb0b0a 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -37,12 +37,7 @@ typedef struct HexagonGlobalRegState HexagonGlobalRegSta= te; #include "mmvec/mmvec.h" #include "hw/core/registerfields.h" =20 -#ifndef CONFIG_USER_ONLY -#error "Hexagon does not support system emulation" -#endif - -#ifndef CONFIG_USER_ONLY -#endif +#include "reg_fields.h" =20 #define NUM_PREGS 4 #define TOTAL_PER_THREAD_REGS 64 diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 9883c4d1681..355abb4fd24 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -713,9 +713,8 @@ static vaddr hexagon_pointer_wrap(CPUState *cs, int mmu= _idx, #endif =20 static const TCGCPUOps hexagon_tcg_ops =3D { - /* MTTCG not yet supported: require strict ordering */ .guest_default_memory_order =3D TCG_MO_ALL, - .mttcg_supported =3D false, + .mttcg_supported =3D true, .initialize =3D hexagon_translate_init, .translate_code =3D hexagon_translate_code, .get_tb_cpu_state =3D hexagon_get_tb_cpu_state, diff --git a/target/Kconfig b/target/Kconfig index 3c73e3bae01..0288a3f4164 100644 --- a/target/Kconfig +++ b/target/Kconfig @@ -16,6 +16,7 @@ source sh4/Kconfig source sparc/Kconfig source tricore/Kconfig source xtensa/Kconfig +source hexagon/Kconfig =20 config TARGET_BIG_ENDIAN bool diff --git a/target/hexagon/Kconfig b/target/hexagon/Kconfig new file mode 100644 index 00000000000..7e556f35063 --- /dev/null +++ b/target/hexagon/Kconfig @@ -0,0 +1,2 @@ +config HEXAGON + bool diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build index 528beca3cd0..bc7a292e47b 100644 --- a/target/hexagon/meson.build +++ b/target/hexagon/meson.build @@ -235,6 +235,7 @@ decodetree_trans_funcs_generated =3D custom_target( command: [python, files('gen_trans_funcs.py'), semantics_generated, '@= OUTPUT@'], ) hexagon_ss.add(decodetree_trans_funcs_generated) +hexagon_softmmu_ss =3D ss.source_set() =20 hexagon_ss.add(files( 'cpu.c', @@ -253,6 +254,14 @@ hexagon_ss.add(files( 'mmvec/system_ext_mmvec.c', )) =20 +hexagon_softmmu_ss.add(files( + 'cpu_helper.c', + 'hex_mmu.c', + 'hex_interrupts.c', + 'hexswi.c', + 'machine.c', +)) + # # Step 4.5 # We use flex/bison based idef-parser to generate TCG code for a lot @@ -262,7 +271,8 @@ hexagon_ss.add(files( # idef-generated-enabled-instructions # idef_parser_enabled =3D get_option('hexagon_idef_parser') -if idef_parser_enabled and 'hexagon-linux-user' in target_dirs +if idef_parser_enabled and ('hexagon-linux-user' in target_dirs or + 'hexagon-softmmu' in target_dirs) idef_parser_input_generated =3D custom_target( 'idef_parser_input.h.inc', output: 'idef_parser_input.h.inc', @@ -390,3 +400,4 @@ analyze_funcs_generated =3D custom_target( hexagon_ss.add(analyze_funcs_generated) =20 target_arch +=3D {'hexagon': hexagon_ss} +target_system_arch +=3D {'hexagon': hexagon_softmmu_ss} --=20 2.34.1 From nobody Sat Apr 11 18:38:37 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=1775673588; cv=none; d=zohomail.com; s=zohoarc; b=Z1mcMeNwdcYYd39/LqEwOFrCpOlpi2zaoMX0ojRIT4g5eKd0koqAI7t8wjNR9y0OBoYJLIbWvFuSeEAw/NNGWNmkRGE0WHQeH+oY6Xvly+JD/Nfu98Xgbsl6Sh9n/NfwW/Fvr/ObVKBNJTBfM43nmA1Xuc0b0PFjQSFWHrhRjo0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775673588; 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=Z3/J1BwyXrlk5FAojCmce8KYkpwJi520mHJIgo87T6M=; b=XIFLSQl7Ra21NkIsOeOBYglJtAC6wR7n2fM+qX9E80/6l3Jqp77CyeLJ9QZTNh26hFtrMizYEtNAQvbshriRn8eUtfEfniEWM0gJas7NFlaFQ/TXmepC08sAhBPywHSvgnzHkD4k2lo3yaiEhiArxw5xL6l2rtF4kzavw/Y+8qM= 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 (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 177567358801744.475466466161606; Wed, 8 Apr 2026 11:39:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAXoU-000693-7U; Wed, 08 Apr 2026 14:39:42 -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 1wAXno-0005ea-Ei for qemu-devel@nongnu.org; Wed, 08 Apr 2026 14:39:06 -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 1wAKQe-0005jR-Jm for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:22:14 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 637M3ILZ1619592 for ; Wed, 8 Apr 2026 04:22:01 GMT Received: from mail-dl1-f70.google.com (mail-dl1-f70.google.com [74.125.82.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddacrgxpe-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:22:01 +0000 (GMT) Received: by mail-dl1-f70.google.com with SMTP id a92af1059eb24-12737f276a2so9128498c88.1 for ; Tue, 07 Apr 2026 21:22: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 a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21: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= Z3/J1BwyXrlk5FAojCmce8KYkpwJi520mHJIgo87T6M=; b=mfSpapuUCY5t7Yfg jiglEYzekT9yDRk6FuIm+u96ucciFDFVNbc+JXfLgoDOvq2QF5IsGpP5vjQrtiUA cnhk7oEVWi2fzbrjXXG7qgEXk+vyw6rZc/d8Uh29dtw7oS/qr4P1UYL9bU3o9gO1 06yT/RcdgfIWBoeE1xWNpjO5KXoRHFV4n7nf9RyhB7EBGo4K7L681rOP25PmbGP2 Jl8CuaaidsWF52q4RwvQhsx8GN72xImH33vgSSeFOfuKKsxWwYSP6RxMOLkq1DqN W4gAQrnUNB9j1PGfyXJHGnRS30r++W5CLj14eI1r8kJruPoPchJWl/Ldk1B8rLcF vg2xFA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622120; x=1776226920; 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=Z3/J1BwyXrlk5FAojCmce8KYkpwJi520mHJIgo87T6M=; b=UJWNSSCkEdTf5MpMkZQxSTmZrwPVgXDplQVzr0n2DQYGnhyUejjEJN3cYR3wrUl9BM 7zoZFz0izPr5mHQ8VSML9uzsQ2Fz7xlQrOoEtOgkRzt37zBuOPXNh3lTtL0oUJ2naYX4 1Hgnqbc2nglEaRYrT/EkRtQheGqUAr4Hd4kB30JZ3ofhu2ZlfejUPguUstxgSKCApseS chWQZJ4tvSn/h4W+wNB1hdJ5V9tYbPLhpAG1h7+34l7K8xVhvv6nWTCbz7GOaXxL5EoG 4TZYaI9fa9IHUPDVTJBwG3vf7EzTDt5B0ebMDGCOQkC/56EON1Ix8dWkJD2R5N7g0Gub xZRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622120; x=1776226920; 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=Z3/J1BwyXrlk5FAojCmce8KYkpwJi520mHJIgo87T6M=; b=Ljg/UkvOtam+/B4vI5UebsdbubxUwUCJ4cnzMDsK73w8QyFAesupQ/fXVSYKjUEG8w DrOQjbv/YtA5av3VTrgnHqPvYmuCRJ1xb4afXS9eNBHzHZstn1BjGlc70LnDH75O7ufX INE3Rj5+ewR/mOz97G6s14069qaVmeqfjUktE0RZBQjCEhYP44XzbkSvN1wb7yv9Hzjf y9YtrcVa/sCdxgMGsZLYOpjwO4/PaK49NfFI1TkXZd+nk5RO2jqd1nmMV9PcdkNlWtp2 OpCa8O+MOcOcUUIrUr+ABC4dHRy5xgY/bvR0U1fhnFAsIZcRMjTU1PuE7PVwkUttUBDK ufAg== X-Gm-Message-State: AOJu0YwYom5RVGrj33S4xduqtZRyQ9/PbrjlOq19g5qWKTQu6C/nMNko faZ2jm2UUT5KzpH4khLMKprCMpPTyE7lrMOMOUKmDXu/ZafoEU//qFP+2OaXnp1Hzv/8WesaeE7 0rlr37MDxSoXuUcaKdsLMkm4dNPJkg3hTkReC6cy+TGF5icX1xxvRTtpvfj61jg9JwQ== X-Gm-Gg: AeBDiet8nPwpv4wdlLMAJeO0RueSBz3EflPeQ6k/B6xWsTW5ofaWiz3rytTblmVO9r8 IFPxV2pKRvBTesTR0qakvRXd1aplx2tg9qyqolUtJQJAEMK4/T155On2nP6K8aGnYYbQW/MofHz p7bPzPn01hCw9mfze6wQ1yucJosi2FdFBphvc1gqK7nO7xk6Uk6YnJxIUhTvf4Bs8sWRc5fR7zT vxw3kRSPNtrAlYQpTLxYP2vLdnNsm9gS3PmHo706HDSMMK4cu47txJjgHJV7h3f++Y6uTSayD3y kygVWdrFNn4fEGQs8RYvPYFX8rGuAUNy8jr+RPGcD0QhPoZMtHL81vseZM5dXe5j6rYzDuE5hlS UR0rtf48Ljenyn8DfumUadZUGA87KamXgubqkTzsKux19S8Lmbv2VMpQx13i22ojvHuB3cA== X-Received: by 2002:a05:7022:52b:b0:127:15cd:9f52 with SMTP id a92af1059eb24-12bfb6ee075mr9617922c88.5.1775622120008; Tue, 07 Apr 2026 21:22:00 -0700 (PDT) X-Received: by 2002:a05:7022:52b:b0:127:15cd:9f52 with SMTP id a92af1059eb24-12bfb6ee075mr9617907c88.5.1775622119287; Tue, 07 Apr 2026 21:21:59 -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 , Paolo Bonzini , Kevin Wolf , Hanna Reitz , qemu-block@nongnu.org (open list:Block layer core) Subject: [PATCH v4 8/9] hw/hexagon: Define hexagon "virt" machine Date: Tue, 7 Apr 2026 21:21:47 -0700 Message-Id: <20260408042149.1902796-9-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-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: E3QoKzUkJRDF0tcP3D6xN5MLUVnf2Shs X-Proofpoint-GUID: E3QoKzUkJRDF0tcP3D6xN5MLUVnf2Shs X-Authority-Analysis: v=2.4 cv=WZs8rUhX c=1 sm=1 tr=0 ts=69d5d7e9 cx=c_pps a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=NKwyhsPI2JXA-XLkMRkA:9 a=QEXdDO2ut3YA:10 a=Kq8ClHjjuc5pcCNDwlU0:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfX4CUkT1ds3CD5 xwQ8RRRpM84baSiiYoNuZOpTLURm7jVlsemvNVp6FlcY9l+Z4aSwtrdihbISxGMbuus2Rvb/Lk4 GLKkuJ8Dql+lTI8kKb+9sXQ7UtxRRx7DB/grJ1FI0FgWa7k/wqzVEDoYu2u3Wd1olRgUyXBOAum NSSAiEC3O69ZwC9xme9h7KbHGpWz9xR0/uZ22WcXP7rgnvUPqk7JkRy/Q/VEIQQ/e7QhDqC+ujw fzdTaYDPvBfjLGPMrH4CJHT49B/URy89v4r9U3N0CYZdI25iMRrK1zD/+YMYcY3AiKL7jizySZh mO2x2y1WKKxq5YgVM3uzdLyu12F8fXrPEzHdqpkZ4K05vvADP7+it3lXios/GRKQXXEMb8Q3mmJ Hc98U54XOTHyhTDtffqR2evXgVUgPfDw95KHBGnJanXzgIF2Q4F16ORlK1ahT4jc0zkwy9oG9hz EqbbLcNNv9pG3Et19iw== 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 adultscore=0 phishscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 spamscore=0 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1775673589117154100 From: Brian Cain Signed-off-by: Brian Cain --- configs/devices/hexagon-softmmu/default.mak | 1 + configs/targets/hexagon-softmmu.mak | 1 + include/hw/hexagon/virt.h | 43 ++ hw/hexagon/virt.c | 456 ++++++++++++++++++++ target/hexagon/cpu.c | 2 + hw/hexagon/Kconfig | 10 + hw/hexagon/meson.build | 2 + tests/qemu-iotests/testenv.py | 1 + 8 files changed, 516 insertions(+) create mode 100644 include/hw/hexagon/virt.h create mode 100644 hw/hexagon/virt.c diff --git a/configs/devices/hexagon-softmmu/default.mak b/configs/devices/= hexagon-softmmu/default.mak index 08e709aea72..37b4f9f3237 100644 --- a/configs/devices/hexagon-softmmu/default.mak +++ b/configs/devices/hexagon-softmmu/default.mak @@ -3,5 +3,6 @@ # Uncomment the following lines to disable these optional devices: =20 # Boards are selected by default, uncomment to keep out of the build. +# CONFIG_HEX_VIRT=3Dy # CONFIG_HEX_DSP=3Dy # CONFIG_L2VIC=3Dy diff --git a/configs/targets/hexagon-softmmu.mak b/configs/targets/hexagon-= softmmu.mak index fdfa29b4f39..a77c100f0c5 100644 --- a/configs/targets/hexagon-softmmu.mak +++ b/configs/targets/hexagon-softmmu.mak @@ -5,3 +5,4 @@ TARGET_XML_FILES=3Dhexagon-core.xml hexagon-hvx.xml TARGET_LONG_BITS=3D32 TARGET_NOT_USING_LEGACY_LDST_PHYS_API=3Dy TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=3Dy +TARGET_NEED_FDT=3Dy diff --git a/include/hw/hexagon/virt.h b/include/hw/hexagon/virt.h new file mode 100644 index 00000000000..a54eac5cf00 --- /dev/null +++ b/include/hw/hexagon/virt.h @@ -0,0 +1,43 @@ +/* + * Definitions for hexagon virt board. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_HEXAGONVIRT_H +#define HW_HEXAGONVIRT_H + +#include "hw/core/boards.h" +#include "target/hexagon/cpu.h" + +struct HexagonVirtMachineState { + /*< private >*/ + MachineState parent_obj; + + int fdt_size; + MemoryRegion *sys; + MemoryRegion cfgtable; + MemoryRegion ram; + MemoryRegion tcm; + MemoryRegion vtcm; + MemoryRegion bios; + DeviceState *l2vic; + Clock *apb_clk; +}; + +void hexagon_load_fdt(const struct HexagonVirtMachineState *vms); + +enum { + VIRT_UART0, + VIRT_QTMR0, + VIRT_QTMR1, + VIRT_GPT, + VIRT_MMIO, + VIRT_FDT, +}; + +#define TYPE_HEXAGON_VIRT_MACHINE MACHINE_TYPE_NAME("virt") +OBJECT_DECLARE_SIMPLE_TYPE(HexagonVirtMachineState, HEXAGON_VIRT_MACHINE) + +#endif /* HW_HEXAGONVIRT_H */ diff --git a/hw/hexagon/virt.c b/hw/hexagon/virt.c new file mode 100644 index 00000000000..49ee1aad2fe --- /dev/null +++ b/hw/hexagon/virt.c @@ -0,0 +1,456 @@ +/* + * Hexagon virt emulation + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "hw/hexagon/virt.h" +#include "elf.h" +#include "hw/char/pl011.h" +#include "hw/core/clock.h" +#include "hw/core/sysbus-fdt.h" +#include "hw/hexagon/hexagon.h" +#include "hw/hexagon/hexagon_globalreg.h" +#include "hw/hexagon/hexagon_tlb.h" +#include "hw/core/loader.h" +#include "hw/core/qdev-properties.h" +#include "hw/core/qdev-clock.h" +#include "hw/core/register.h" +#include "qemu/error-report.h" +#include "qemu/guest-random.h" +#include "qemu/units.h" +#include "elf.h" +#include "machine_cfg_v68n_1024.h.inc" +#include "system/address-spaces.h" +#include "system/device_tree.h" +#include "system/reset.h" +#include "system/system.h" +#include + +static const int VIRTIO_DEV_COUNT =3D 8; + +static const MemMapEntry base_memmap[] =3D { + [VIRT_UART0] =3D { 0x10000000, 0x00000200 }, + [VIRT_MMIO] =3D { 0x11000000, 0x1000000, }, + [VIRT_GPT] =3D { 0xab000000, 0x00001000 }, + [VIRT_FDT] =3D { 0x99800000, 0x00400000 }, +}; + +static const int irqmap[] =3D { + [VIRT_MMIO] =3D 18, /* ...to 18 + VIRTIO_DEV_COUNT - 1 */ + [VIRT_GPT] =3D 12, + [VIRT_UART0] =3D 15, + [VIRT_QTMR0] =3D 2, + [VIRT_QTMR1] =3D 4, +}; + + +static void create_fdt(HexagonVirtMachineState *vms) +{ + MachineState *ms =3D MACHINE(vms); + void *fdt =3D create_device_tree(&vms->fdt_size); + uint8_t rng_seed[32]; + + if (!fdt) { + error_report("create_device_tree() failed"); + exit(1); + } + + ms->fdt =3D fdt; + + qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 0x2); + qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 0x1); + qemu_fdt_setprop_string(fdt, "/", "model", "hexagon-virt,qemu"); + qemu_fdt_setprop_string(fdt, "/", "compatible", "qcom,sm8150"); + + qemu_fdt_add_subnode(fdt, "/soc"); + qemu_fdt_setprop_cell(fdt, "/soc", "#address-cells", 0x2); + qemu_fdt_setprop_cell(fdt, "/soc", "#size-cells", 0x1); + qemu_fdt_setprop(fdt, "/soc", "ranges", NULL, 0); + + qemu_fdt_add_subnode(fdt, "/chosen"); + qemu_guest_getrandom_nofail(rng_seed, sizeof(rng_seed)); + qemu_fdt_setprop(fdt, "/chosen", "rng-seed", rng_seed, sizeof(rng_seed= )); +} + +static void fdt_add_hvx(HexagonVirtMachineState *vms, + const struct hexagon_machine_config *m_cfg, + Error **errp) +{ + const MachineState *ms =3D MACHINE(vms); + uint32_t vtcm_size_bytes =3D m_cfg->cfgtable.vtcm_size_kb * 1024; + if (vtcm_size_bytes > 0) { + memory_region_init_ram(&vms->vtcm, NULL, "vtcm.ram", vtcm_size_byt= es, + errp); + memory_region_add_subregion(vms->sys, m_cfg->cfgtable.vtcm_base <<= 16, + &vms->vtcm); + + qemu_fdt_add_subnode(ms->fdt, "/soc/vtcm"); + qemu_fdt_setprop_string(ms->fdt, "/soc/vtcm", "compatible", + "qcom,hexagon_vtcm"); + + assert(sizeof(m_cfg->cfgtable.vtcm_base) =3D=3D sizeof(uint32_t)); + qemu_fdt_setprop_cells(ms->fdt, "/soc/vtcm", "reg", 0, + m_cfg->cfgtable.vtcm_base << 16, + vtcm_size_bytes); + } + + if (m_cfg->cfgtable.ext_contexts > 0) { + qemu_fdt_add_subnode(ms->fdt, "/soc/hvx"); + qemu_fdt_setprop_string(ms->fdt, "/soc/hvx", "compatible", + "qcom,hexagon-hvx"); + qemu_fdt_setprop_cells(ms->fdt, "/soc/hvx", "qcom,hvx-max-ctxts", + m_cfg->cfgtable.ext_contexts); + qemu_fdt_setprop_cells(ms->fdt, "/soc/hvx", "qcom,hvx-vlength", + m_cfg->cfgtable.hvx_vec_log_length); + } +} + +static int32_t irq_hvm_ic_phandle =3D -1; +static void fdt_add_hvm_pic_node(HexagonVirtMachineState *vms, + const struct hexagon_machine_config *m_cf= g) +{ + MachineState *ms =3D MACHINE(vms); + irq_hvm_ic_phandle =3D qemu_fdt_alloc_phandle(ms->fdt); + + qemu_fdt_setprop_cell(ms->fdt, "/soc", "interrupt-parent", + irq_hvm_ic_phandle); + + qemu_fdt_add_subnode(ms->fdt, "/soc/interrupt-controller"); + qemu_fdt_setprop_cell(ms->fdt, "/soc/interrupt-controller", + "#address-cells", 2); + qemu_fdt_setprop_cell(ms->fdt, "/soc/interrupt-controller", + "#interrupt-cells", 2); + qemu_fdt_setprop_string(ms->fdt, "/soc/interrupt-controller", "compati= ble", + "qcom,h2-pic,hvm-pic"); + qemu_fdt_setprop(ms->fdt, "/soc/interrupt-controller", + "interrupt-controller", NULL, 0); + qemu_fdt_setprop_cell(ms->fdt, "/soc/interrupt-controller", "phandle", + irq_hvm_ic_phandle); + + sysbus_mmio_map(SYS_BUS_DEVICE(vms->l2vic), 1, + m_cfg->cfgtable.fastl2vic_base << 16); +} + + +static void fdt_add_gpt_node(HexagonVirtMachineState *vms) +{ + g_autofree char *name =3D NULL; + MachineState *ms =3D MACHINE(vms); + + name =3D g_strdup_printf("/soc/gpt@%" PRIx64, + (int64_t)base_memmap[VIRT_GPT].base); + qemu_fdt_add_subnode(ms->fdt, name); + qemu_fdt_setprop_string(ms->fdt, name, "compatible", + "qcom,h2-timer,hvm-timer"); + qemu_fdt_setprop_cells(ms->fdt, name, "interrupts", irqmap[VIRT_GPT], = 0); + qemu_fdt_setprop_cells(ms->fdt, name, "reg", 0x0, + base_memmap[VIRT_GPT].base, + base_memmap[VIRT_GPT].size); +} + +static int32_t clock_phandle =3D -1; +static void fdt_add_clocks(const HexagonVirtMachineState *vms) +{ + MachineState *ms =3D MACHINE(vms); + clock_phandle =3D qemu_fdt_alloc_phandle(ms->fdt); + qemu_fdt_add_subnode(ms->fdt, "/apb-pclk"); + qemu_fdt_setprop_string(ms->fdt, "/apb-pclk", "compatible", "fixed-clo= ck"); + qemu_fdt_setprop_cell(ms->fdt, "/apb-pclk", "#clock-cells", 0x0); + qemu_fdt_setprop_cell(ms->fdt, "/apb-pclk", "clock-frequency", 2400000= 0); + qemu_fdt_setprop_string(ms->fdt, "/apb-pclk", "clock-output-names", + "clk24mhz"); + qemu_fdt_setprop_cell(ms->fdt, "/apb-pclk", "phandle", clock_phandle); +} + +static void fdt_add_uart(const HexagonVirtMachineState *vms, int uart) +{ + char *nodename; + hwaddr base =3D base_memmap[uart].base; + hwaddr size =3D base_memmap[uart].size; + assert(uart =3D=3D 0); + int irq =3D irqmap[VIRT_UART0 + uart]; + const char compat[] =3D "arm,pl011\0arm,primecell"; + const char clocknames[] =3D "uartclk\0apb_pclk"; + MachineState *ms =3D MACHINE(vms); + DeviceState *dev; + SysBusDevice *s; + + dev =3D qdev_new(TYPE_PL011); + s =3D SYS_BUS_DEVICE(dev); + qdev_prop_set_chr(dev, "chardev", serial_hd(0)); + qdev_connect_clock_in(dev, "clk", vms->apb_clk); + sysbus_realize_and_unref(s, &error_fatal); + sysbus_mmio_map(s, 0, base); + if (vms->l2vic) { + sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->l2vic, irq)); + } + + nodename =3D g_strdup_printf("/pl011@%" PRIx64, base); + qemu_fdt_add_subnode(ms->fdt, nodename); + + /* Note that we can't use setprop_string because of the embedded NUL */ + qemu_fdt_setprop(ms->fdt, nodename, "compatible", compat, sizeof(compa= t)); + qemu_fdt_setprop_cells(ms->fdt, nodename, "reg", 0, base, size); + if (vms->l2vic) { + qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", + 32 + irq, 0); + qemu_fdt_setprop_cell(ms->fdt, nodename, "interrupt-parent", + irq_hvm_ic_phandle); + } + qemu_fdt_setprop_cells(ms->fdt, nodename, "clocks", clock_phandle, + clock_phandle); + qemu_fdt_setprop(ms->fdt, nodename, "clock-names", clocknames, + sizeof(clocknames)); + + qemu_fdt_setprop_string(ms->fdt, "/chosen", "stdout-path", nodename); + qemu_fdt_add_subnode(ms->fdt, "/aliases"); + qemu_fdt_setprop_string(ms->fdt, "/aliases", "serial0", nodename); + + g_free(nodename); +} + +static void fdt_add_cpu_nodes(const HexagonVirtMachineState *vms) +{ + MachineState *ms =3D MACHINE(vms); + qemu_fdt_add_subnode(ms->fdt, "/cpus"); + qemu_fdt_setprop_cell(ms->fdt, "/cpus", "#address-cells", 0x1); + qemu_fdt_setprop_cell(ms->fdt, "/cpus", "#size-cells", 0x0); + + /* cpu nodes */ + for (int num =3D ms->smp.cpus - 1; num >=3D 0; num--) { + char *nodename =3D g_strdup_printf("/cpus/cpu@%d", num); + qemu_fdt_add_subnode(ms->fdt, nodename); + qemu_fdt_setprop_string(ms->fdt, nodename, "device_type", "cpu"); + qemu_fdt_setprop_cell(ms->fdt, nodename, "reg", num); + qemu_fdt_setprop_cell(ms->fdt, nodename, "phandle", + qemu_fdt_alloc_phandle(ms->fdt)); + g_free(nodename); + } +} + + +static void fdt_add_virtio_devices(const HexagonVirtMachineState *vms) +{ + MachineState *ms =3D MACHINE(vms); + /* VirtIO MMIO devices */ + for (int i =3D 0; i < VIRTIO_DEV_COUNT; i++) { + char *nodename; + int irq =3D irqmap[VIRT_MMIO] + i; + size_t size =3D base_memmap[VIRT_MMIO].size; + hwaddr base =3D base_memmap[VIRT_MMIO].base + i * size; + + nodename =3D g_strdup_printf("/virtio_mmio@%" PRIx64, base); + qemu_fdt_add_subnode(ms->fdt, nodename); + qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "virtio,m= mio"); + qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", 2, base, 1, + size); + qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", irq, 0); + qemu_fdt_setprop_cell(ms->fdt, nodename, "interrupt-parent", + irq_hvm_ic_phandle); + + sysbus_create_simple( + "virtio-mmio", base, + qdev_get_gpio_in(vms->l2vic, irqmap[VIRT_MMIO] + i)); + + g_free(nodename); + } +} + +static void virt_instance_init(Object *obj) +{ + HexagonVirtMachineState *vms =3D HEXAGON_VIRT_MACHINE(obj); + + create_fdt(vms); +} + +void hexagon_load_fdt(const HexagonVirtMachineState *vms) +{ + MachineState *ms =3D MACHINE(vms); + hwaddr fdt_addr =3D base_memmap[VIRT_FDT].base; + uint32_t fdtsize =3D vms->fdt_size; + + g_assert(fdtsize <=3D base_memmap[VIRT_FDT].size); + /* copy in the device tree */ + rom_add_blob_fixed_as("fdt", ms->fdt, fdtsize, fdt_addr, + &address_space_memory); + qemu_register_reset_nosnapshotload( + qemu_fdt_randomize_seeds, + rom_ptr_for_as(&address_space_memory, fdt_addr, fdtsize)); +} + +static uint64_t load_kernel(const HexagonVirtMachineState *vms) +{ + MachineState *ms =3D MACHINE(vms); + uint64_t entry =3D 0; + if (load_elf_ram_sym(ms->kernel_filename, NULL, NULL, NULL, &entry, NU= LL, + NULL, NULL, 0, EM_HEXAGON, 0, 0, &address_space_m= emory, + false, NULL) > 0) { + return entry; + } + error_report("error loading '%s'", ms->kernel_filename); + exit(1); +} + +static uint64_t load_bios(HexagonVirtMachineState *vms) +{ + MachineState *ms =3D MACHINE(vms); + uint64_t bios_addr =3D 0x0; /* Load BIOS at reset vector address 0x0 = */ + int bios_size; + + bios_size =3D load_image_targphys(ms->firmware ?: "", + bios_addr, 64 * 1024, NULL); + if (bios_size < 0) { + error_report("Could not load BIOS '%s'", ms->firmware ?: ""); + exit(1); + } + + return bios_addr; /* Return entry point at address 0x0 */ +} + +static void do_cpu_reset(void *opaque) +{ + HexagonCPU *cpu =3D opaque; + CPUState *cs =3D CPU(cpu); + cpu_reset(cs); +} + +static void virt_init(MachineState *ms) +{ + HexagonVirtMachineState *vms =3D HEXAGON_VIRT_MACHINE(ms); + const struct hexagon_machine_config *m_cfg =3D &v68n_1024; + const char *cpu_model; + DeviceState *gsregs_dev; + DeviceState *tlb_dev; + HexagonCPU *cpu_0; + + qemu_fdt_setprop_string(ms->fdt, "/chosen", "bootargs", ms->kernel_cmd= line); + + vms->sys =3D get_system_memory(); + + /* Create APB clock for peripherals */ + vms->apb_clk =3D clock_new(OBJECT(ms), "apb-pclk"); + clock_set_hz(vms->apb_clk, 24000000); + + memory_region_init_ram(&vms->ram, NULL, "ddr.ram", ms->ram_size, + &error_fatal); + memory_region_add_subregion(vms->sys, 0x0, &vms->ram); + + if (m_cfg->l2tcm_size) { + memory_region_init_ram(&vms->tcm, NULL, "tcm.ram", m_cfg->l2tcm_si= ze, + &error_fatal); + memory_region_add_subregion(vms->sys, m_cfg->cfgtable.l2tcm_base <= < 16, + &vms->tcm); + } + + memory_region_init_rom(&vms->cfgtable, NULL, "config_table.rom", + sizeof(m_cfg->cfgtable), &error_fatal); + memory_region_add_subregion(vms->sys, m_cfg->cfgbase, &vms->cfgtable); + fdt_add_hvx(vms, m_cfg, &error_fatal); + cpu_model =3D ms->cpu_type; + + if (!cpu_model) { + cpu_model =3D HEXAGON_CPU_TYPE_NAME("v73"); + } + + gsregs_dev =3D qdev_new(TYPE_HEXAGON_GLOBALREG); + object_property_add_child(OBJECT(ms), "global-regs", OBJECT(gsregs_dev= )); + qdev_prop_set_uint64(gsregs_dev, "config-table-addr", m_cfg->cfgbase); + qdev_prop_set_uint32(gsregs_dev, "dsp-rev", v68_rev); + sysbus_realize_and_unref(SYS_BUS_DEVICE(gsregs_dev), &error_fatal); + + tlb_dev =3D qdev_new(TYPE_HEXAGON_TLB); + object_property_add_child(OBJECT(ms), "tlb", OBJECT(tlb_dev)); + qdev_prop_set_uint32(tlb_dev, "num-entries", + m_cfg->cfgtable.jtlb_size_entries); + sysbus_realize_and_unref(SYS_BUS_DEVICE(tlb_dev), &error_fatal); + + cpu_0 =3D NULL; + for (int i =3D 0; i < ms->smp.cpus; i++) { + HexagonCPU *cpu =3D HEXAGON_CPU(object_new(ms->cpu_type)); + qemu_register_reset(do_cpu_reset, cpu); + + if (i =3D=3D 0) { + cpu_0 =3D cpu; + if (ms->kernel_filename) { + uint64_t entry =3D load_kernel(vms); + qdev_prop_set_uint32(DEVICE(cpu_0), "exec-start-addr", ent= ry); + } else if (ms->firmware) { + uint64_t entry =3D load_bios(vms); + qdev_prop_set_uint32(DEVICE(cpu_0), "exec-start-addr", ent= ry); + } + } + qdev_prop_set_uint32(DEVICE(cpu), "htid", i); + qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", (i !=3D 0)); + object_property_set_link(OBJECT(cpu), "global-regs", + OBJECT(gsregs_dev), &error_fatal); + object_property_set_link(OBJECT(cpu), "tlb", + OBJECT(tlb_dev), &error_fatal); + + if (!qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal)) { + return; + } + } + /* TODO: enable l2vic when l2vic device arrives */ + if (object_class_by_name("l2vic")) { + vms->l2vic =3D sysbus_create_varargs( + "l2vic", m_cfg->l2vic_base, + qdev_get_gpio_in(DEVICE(cpu_0), 0), + qdev_get_gpio_in(DEVICE(cpu_0), 1), + qdev_get_gpio_in(DEVICE(cpu_0), 2), + qdev_get_gpio_in(DEVICE(cpu_0), 3), + qdev_get_gpio_in(DEVICE(cpu_0), 4), + qdev_get_gpio_in(DEVICE(cpu_0), 5), + qdev_get_gpio_in(DEVICE(cpu_0), 6), + qdev_get_gpio_in(DEVICE(cpu_0), 7), NULL); + + fdt_add_hvm_pic_node(vms, m_cfg); + fdt_add_virtio_devices(vms); + fdt_add_gpt_node(vms); + } + + fdt_add_cpu_nodes(vms); + fdt_add_clocks(vms); + fdt_add_uart(vms, VIRT_UART0); + + rom_add_blob_fixed_as("config_table.rom", &m_cfg->cfgtable, + sizeof(m_cfg->cfgtable), m_cfg->cfgbase, + &address_space_memory); + + + hexagon_load_fdt(vms); +} + + +static void virt_class_init(ObjectClass *oc, const void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->desc =3D "Hexagon Virtual Machine"; + mc->init =3D virt_init; + mc->default_cpu_type =3D HEXAGON_CPU_TYPE_NAME("v73"); + mc->default_ram_size =3D 4 * GiB; + mc->max_cpus =3D 8; + mc->default_cpus =3D 8; + mc->is_default =3D false; + mc->default_kernel_irqchip_split =3D false; + mc->block_default_type =3D IF_VIRTIO; + mc->default_boot_order =3D NULL; + mc->no_cdrom =3D 1; + mc->numa_mem_supported =3D false; + mc->default_nic =3D "virtio-mmio-bus"; +} + + +static const TypeInfo virt_machine_types[] =3D { { + .name =3D TYPE_HEXAGON_VIRT_MACHINE, + .parent =3D TYPE_MACHINE, + .instance_size =3D sizeof(HexagonVirtMachineState), + .class_init =3D virt_class_init, + .instance_init =3D virt_instance_init, +} }; + +DEFINE_TYPES(virt_machine_types) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 355abb4fd24..01781a76caf 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -68,6 +68,8 @@ static ObjectClass *hexagon_cpu_class_by_name(const char = *cpu_model) =20 static const Property hexagon_cpu_properties[] =3D { #if !defined(CONFIG_USER_ONLY) + DEFINE_PROP_LINK("tlb", HexagonCPU, tlb, TYPE_HEXAGON_TLB, + HexagonTLBState *), DEFINE_PROP_UINT32("exec-start-addr", HexagonCPU, boot_addr, 0xfffffff= f), DEFINE_PROP_LINK("global-regs", HexagonCPU, globalregs, TYPE_HEXAGON_GLOBALREG, HexagonGlobalRegState *), diff --git a/hw/hexagon/Kconfig b/hw/hexagon/Kconfig index 7b9577f68f7..dc74751d21e 100644 --- a/hw/hexagon/Kconfig +++ b/hw/hexagon/Kconfig @@ -3,3 +3,13 @@ config HEX_DSP default y depends on HEXAGON && TCG imply PTIMER + +config HEX_VIRT + bool + default y + depends on HEX_DSP && FDT + select DEVICE_TREE + select VIRTIO_MMIO + select PL011 + select VIRTIO_BLK + select VIRTIO_SCSI diff --git a/hw/hexagon/meson.build b/hw/hexagon/meson.build index f528d2bc4ab..5b6a5e11a17 100644 --- a/hw/hexagon/meson.build +++ b/hw/hexagon/meson.build @@ -4,3 +4,5 @@ hexagon_ss.add(files('hexagon_globalreg.c')) hexagon_ss.add(when: 'CONFIG_HEX_DSP', if_true: files('hexagon_dsp.c')) =20 hw_arch +=3D {'hexagon': hexagon_ss} + +hexagon_ss.add(when: 'CONFIG_HEX_VIRT', if_true: files('virt.c')) diff --git a/tests/qemu-iotests/testenv.py b/tests/qemu-iotests/testenv.py index c357e6ebf50..86bcdf7cfad 100644 --- a/tests/qemu-iotests/testenv.py +++ b/tests/qemu-iotests/testenv.py @@ -259,6 +259,7 @@ def __init__(self, source_dir: str, build_dir: str, ('arm', 'virt'), ('aarch64', 'virt'), ('avr', 'mega2560'), + ('hexagon', 'virt'), ('m68k', 'virt'), ('or1k', 'virt'), ('riscv32', 'virt'), --=20 2.34.1 From nobody Sat Apr 11 18:38:37 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=1775677791; cv=none; d=zohomail.com; s=zohoarc; b=EnM7PO5rtfbI12PoKJIrOREVtQRUWdEOH1nJ/UP/FyYDdZLRosw6y8bQaapC6oTb/JspeCrss+j9mGJCWKEZk6Fm1MsT8FWhRV50IZif2ZDHgKMq+c6wIe3dGI2dA4ZdiZbr3+KnkpqUIhqBdQyheEAl1cu95Tt3T1Oe/NtM4r0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775677791; 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=DeH2wubJHVYpkGei61VcjbWJb/j95FBb/C0QOgjdibs=; b=Up4wuxO/NpJoWdUIk/wpoydYl61p6ueel4pPP6PsUMwqIA1X1kkH9i9aaARvlfr4Q1hSRWzR1P0WZSB9RbReQTSxGcYq9YgB7JuONjSGrziInKsAgvjrPwyZKoAreflxE6YvD7AklkJG8s1OqdnOGZgVpWcrIXS36SUGU2x1NRo= 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 (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775677791736269.55420130256584; Wed, 8 Apr 2026 12:49:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAYZT-0004vZ-1D; Wed, 08 Apr 2026 15:28:15 -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 1wAY8B-000811-Og for qemu-devel@nongnu.org; Wed, 08 Apr 2026 15:00:03 -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 1wAKQf-0005jW-0P for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:22:15 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 637M3ILZ1619595 for ; Wed, 8 Apr 2026 04:22:02 GMT Received: from mail-dl1-f70.google.com (mail-dl1-f70.google.com [74.125.82.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddacrgxph-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:22:02 +0000 (GMT) Received: by mail-dl1-f70.google.com with SMTP id a92af1059eb24-12c20a91932so4018324c88.1 for ; Tue, 07 Apr 2026 21:22: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 a92af1059eb24-12bed93f861sm23474816c88.0.2026.04.07.21.21.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:21:59 -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= DeH2wubJHVYpkGei61VcjbWJb/j95FBb/C0QOgjdibs=; b=PitJHdqtQcXUW8h7 /XZKwl3PKrM3Gf+ukImYIOHmiolNL7r560nU/uWbIb2pUtE8p4PZ4W8nNy1ZQzyB 2j349H6FgiAPL+P1rNUv9ZmxCYnGgxocWJTZp2AWLsFbYTKrC4baPoK2Uz3489N9 d8//CxVdnG/cKEgmKu9/OFNfioX+nEkc3Cehbulhfo+OMw6lJzP5FLa6YvVirse7 4RYkH3pChpJmJ2bNn4vSa0PdOIJjDum6IWsm7dYw2tWsF4aY43e8KAtd4lfrsspH 3PazgHErejqssFSVkhIbA+KtebSuOSWmpLUq9WM6js2Yc5QgMjsaTjzJzZe30Ye3 PMUfkg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622121; x=1776226921; 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=DeH2wubJHVYpkGei61VcjbWJb/j95FBb/C0QOgjdibs=; b=auFnWxlfuQpLBw+BgdVmePmj/sTKYSHZ1psG9WuLlRRsbYkvBBgBYbBA5Avjb58eOn LuM9/GnmcLe9aJ4ptBjw1W8VKlDG+i/HcQ06SOFftjf2acITRq28yLEI5hk4h9XbjEFr oUDOO8qRr4Y0kp2mzOL4R3fUs7cgDN3k3LliAmQqUAigSJyRp+N9wiCWzC9SjrvN8Oul bwYFkRdsjd7RparoifujEMufKh+i+eCR3uQdHYxUUfwh2molwHXuxlUVnlTI9htSDgne 7zq7Ba//Mc/mUIbBxUEl7QkapIoVuQp+KY8636YxSXo9mcNgy93EAgNzssTmM3qDVG9J 6wEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622121; x=1776226921; 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=DeH2wubJHVYpkGei61VcjbWJb/j95FBb/C0QOgjdibs=; b=U/9dnlH1wCyTGS2UT4AWhTCVWZ4vbFLYpWOes5fsMyht6Q5mCE94nYqObyuJFHZNXP ZP5pVVb4T+BmGW0yoDAZ5sY+iWy1+1dZ70SFenb8AZ2i5hNYzdm6s8R+tkLhjvpSdVRF T7dLeoD9JsFNpWdK/veUBtI11bDiLFCZjDYYwVRHh4AnocUSSF0Xh8a/5s1dpR2/YA+e 469eaokc0HZefwVw1yCHYcJ0iGlNDbXtZoLbjT0hL8tK/5QAUWmoExMqTnWBrxnT+tme tI1lZ9ku6Ilew+9p0vi6mC1VxTHfp2lYUcN59aHnWzjcc4Jwoe/4RnTTyxusF29eq3fJ fCGA== X-Gm-Message-State: AOJu0Ywgzd5W2P8ME1Oh3u+66bL87w4MUFrUf+s/5/rwhOzVw2S+3rFk OA71lRLau5W467c/x7oQBcCoyut3oG+rQwUI17vyQcSdt9DyflbLABrMOVOowCracWiU/iHEp8M tYk2snavlO7PyKK85IM3hmUcTTmASlucJ4q+wY/5KCG+nRV7VRHKQY7q4/KFvbAGtwg== X-Gm-Gg: AeBDievet0lR5bAnntoV3jBko1Uv55JuAhS5X1752+If9A9OYj5Z+eCeLbyhebo37Lc IjEAUSHyGR13Hmows4YuIUXkk1lGUgcuJGKGZGzsxZOU7CGHEx9F3RthbqUF9cGba3VfaXccLww /zqaHvH9kogHrhvfcUkBMgVAfQpAgfTSzrhwXaGsj3pfgq1HD5C3SkPMDTJHmgRp24PITepvFIS yyTpqIf7LG0ipc3R7Ev+HBu0KsGG+j5L3xXr4lwC/OjVwSZRxsR4jIg5c0wpzrdmpOfmSpksfAf o9+gwUm19eC2mCgykYdNeltnwkuvpaaqIHH6z2o928V4ml3VMjylcHX1Az4+NWRPGxu5L1gCgRO SG9W8B7LG0g6UctdZ2E1e8xvkcXwJ+wvDMusFZAjMSymEYAMu97SFBizHlbpjp3rhv7Rhlw== X-Received: by 2002:a05:7022:41a3:b0:128:d714:3ca1 with SMTP id a92af1059eb24-12bfb6ecd04mr10265205c88.5.1775622120770; Tue, 07 Apr 2026 21:22:00 -0700 (PDT) X-Received: by 2002:a05:7022:41a3:b0:128:d714:3ca1 with SMTP id a92af1059eb24-12bfb6ecd04mr10265193c88.5.1775622120212; Tue, 07 Apr 2026 21:22:00 -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, Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PATCH v4 9/9] tests/qtest: Add hexagon boot-serial-test Date: Tue, 7 Apr 2026 21:21:48 -0700 Message-Id: <20260408042149.1902796-10-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408042149.1902796-1-brian.cain@oss.qualcomm.com> References: <20260408042149.1902796-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: pvRrIFJ5uJt5KIv4i6NdyJJjq9RYIJo9 X-Proofpoint-GUID: pvRrIFJ5uJt5KIv4i6NdyJJjq9RYIJo9 X-Authority-Analysis: v=2.4 cv=WZs8rUhX c=1 sm=1 tr=0 ts=69d5d7ea cx=c_pps a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=mx_w8yxdHMTqIFmIFlQA:9 a=QEXdDO2ut3YA:10 a=Kq8ClHjjuc5pcCNDwlU0:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzNiBTYWx0ZWRfXwBBJWaJnPAb/ HvV3itf9cWxdJHkCxFVn7MY4RJstyvuAOWWgdpu/wubXdu+r5a/bhqweX1XdRlGhSQpvS8Bb5pm EqZNbs2wGDANsRt5SkcsBkuhGJlR4OkyBYqORLPxqUkzdWipN2wPloeRbEA/HaIFqcmpQX8QDiH /o9hSPdm/L2BAJCeBYl5p4M3t6lDPze9xeqztr1grLzFw2uecY6nmWISEBnsO8mDOyyZd1ZbiIc cfHvjUeVN3ZW37YSnQmrX63lEG5D+faUeBQK08l2+NyDlnbh1EdC+2qeGFX4B34yEz17LZQwSw3 U8DZw/IV4FuuhFvw9wvFCBjhEYPOpu04OjL6f/PHhTRaszhMlgZmRi24KqR5CvDBAMqFXBJiaiV 8j/coWiYIQzvkhCrrybKUNvNBrHLNTNgnFtm2bpWP7K28Vruxw39mTYJr79P47A9DSc76mkUnCP yyIvaay/pspWcEqfLEA== 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-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 adultscore=0 phishscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 spamscore=0 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080036 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.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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 1775677792922154100 Add boot-serial-test support for Hexagon architecture using the virt machine. Reviewed-by: Fabiano Rosas Signed-off-by: Brian Cain --- tests/qtest/boot-serial-test.c | 8 ++++++++ tests/qtest/meson.build | 2 ++ 2 files changed, 10 insertions(+) diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c index bcd0a9c50e7..37fee7a91c4 100644 --- a/tests/qtest/boot-serial-test.c +++ b/tests/qtest/boot-serial-test.c @@ -142,6 +142,13 @@ static const uint8_t kernel_stm32vldiscovery[] =3D { 0x04, 0x38, 0x01, 0x40 /* 0x40013804 =3D USART1 TXD */ }; =20 +static const uint8_t bios_hexagon[] =3D { + 0x00, 0x40, 0x00, 0x01, /* immext(#0x10000000) */ + 0x00, 0xc0, 0x00, 0x78, /* r0 =3D ##0x10000000 */ + 0x54, 0xc0, 0x00, 0x3c, /* memb(r0+#0) =3D #0x54 Write= 'T' */ + 0xf8, 0xff, 0xff, 0x59 /* jump 0x0 ; Loop back to sta= rt */ +}; + typedef struct testdef { const char *arch; /* Target architecture */ const char *machine; /* Name of the machine */ @@ -194,6 +201,7 @@ static const testdef_t tests[] =3D { { "arm", "microbit", "", "T", sizeof(kernel_nrf51), kernel_nrf51 }, { "arm", "stm32vldiscovery", "", "T", sizeof(kernel_stm32vldiscovery), kernel_stm32vldiscovery }, + { "hexagon", "virt", "", "TT", sizeof(bios_hexagon), NULL, bios_hexago= n }, =20 { NULL } }; diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index be4fa627b5f..baa1195371b 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -290,6 +290,8 @@ qtests_riscv64 =3D ['riscv-csr-test'] + \ config_all_devices.has_key('CONFIG_RISCV_IOMMU') ? ['iommu-riscv-test'] : []) =20 +qtests_hexagon =3D ['boot-serial-test'] + qos_test_ss =3D ss.source_set() qos_test_ss.add( 'ac97-test.c', --=20 2.34.1