From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537052; cv=none; d=zohomail.com; s=zohoarc; b=FT0CsX3ezGkknVN5aXp3/qrZNGxu2yPoe+s3PP4gcrETIh1Wd9LDsf3n8bkD8jCLWUcM74+5YQpyFEsTVqvoS1sehSgW+WBn5N9JfPm6xTbRnBWKJBnVhbDQLQlUmLlOdsGjOpVAnCSA0L6lJIYFIcs5GTc2+FStdSGvn1r53Bo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537052; h=Content-Transfer-Encoding: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:Cc; bh=sgfkyaVUO6Rfswiynf5JvltQAap/fbV3GAIfhtK8Iew=; b=SlZ4YHbg2b/j15NLkf5CGRmXHailECSiMb6rOzL4nEoc2sV6PB/oQMusvSh3RKbUtt69MMW0sRBcdrROPZo74PP2usdn5lifw6l1nYC2iJ9FxR9pIIfmShklH8yAOTurAgU4ThVKD0pQgks9s+GL7+nxkp2aNJyn9mB1hb2zFNE= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537052726855.3300885520083; Wed, 12 Aug 2026 05:17:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7sn-0003zR-4u; Wed, 12 Aug 2026 08:16:33 -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 1wu7sl-0003xC-DK for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:31 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7sj-0008Sz-JV for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:31 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-495635a85d2so6513885e9.0 for ; Wed, 12 Aug 2026 05:16:29 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786536988; x=1787141788; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=sgfkyaVUO6Rfswiynf5JvltQAap/fbV3GAIfhtK8Iew=; b=N2a0YUi7GeMWEwhd8R4289/5YCTlVHmT5ofQJ+zBLmSbG3DlO+0+5foGUIxJLkXJxx Bx0X3keBCqOe/pC5BnrwYhvcOAbVOzJ90y7OGY+bbr4GThXHtwht9fHJ7XDpoDnzfAgR Mwl3mwKFdRGk3olx2DlVKdi6J2QMu08ksH93qx8PssCbPgqyYYB66/8R120cZBrzwrY/ CEBwyT+VbwYFMQQdyBKvCCnc7/F/iQ1X7QovcpeDkoNqLf4RdKGam8bvlP9hBZSEbypN rxvXAdomzEL6eaSte3IdUNXIXFxgxNMRU8yPCTAFDlSWaNVp6g1FxJDspJBAcwcEsF9H GYWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786536988; x=1787141788; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=sgfkyaVUO6Rfswiynf5JvltQAap/fbV3GAIfhtK8Iew=; b=PdRrTvqW2rclzsodJgLJ0ofmMEX0D+k4LoGiCULm7rYd+Yb/rSO1MntpVRhQmcWmyh ukGyBvyNlzRBPVEqI+R/3qWwzTu9lWKr/Gf6vS2bAjGGVNjGU4idRmHaQsingfgkWf/L upc87UQbgtHk87EQcqvqPJQ0A/gRK44h679yvscCbbC/Z3hbFDSBSXTakSspGneXoqnk uZqYgAPq2yDb+pEuo+sndBRPVIvdhzr4vtRPnfMavlhm2muiAT7KHtct4ARGBd9A1s4g rZ91UJB8cfKCptAq5CToMw6GU+hbA0CUr+pZ9wauqEBT/iga2xUW35jNC5pGgSvaz7LQ HrSQ== X-Gm-Message-State: AOJu0Ywm1Dbv69Xmc92JrhVeI/exbcz0te6QLVEUfawoLzr0gMpnA9OB AsG4Gzujk40Y50W1ZpNURzIDtkfJVSl43GVCtoRM6o7Ahlq2zCjMCLzYbWyhTfp/CSndqoJEdwO 6c87c X-Gm-Gg: AR+sD11MuUQ+3tz9Q11ZlJMm9QCMBfIvm1A8gIEreUc4Y6A1rBvLyrBVQ3uRDC5GfW/ fJV4HrAkQnIsM4R4MK7PDIFls13JnODmRFWJW/QIQceYTk99LN4akGTF18O4w1ArBNsJFJYaVIR 6elb4JXFseTsFg/OOMGOJPzn2d+wZrXDIyiyh0D89Jr5fQy+CyVFWnNgF9FRxOei54+koBgRNwR FDtgE2YH6thUtGC5C+n9JL6sWSzaNARFboZq+R5+tojDeGECVWvDY4q70M9uqPhF/1edNQKMVOn R7+uIxsshhpuebj5D/uznK2e4VtsrF4hUTWn6PtavdFBZ+VQwucQWih2eXPkbhgwnrjHps2hv6t uQdLmwZvLr/BPK83b/3M6QS+doufDBc9R2LBqNtD3WnjRRBna7+/aU5hcpmR6/NiB7p+FWoxnNV lJuM6JoSzTVRU57lWDUDGoX5U645A5Xy0rsKU68Z06vuU/NeK32YSfT+7ODkiq6tE0zusK/jBXR DAWsmQ/C1k1sF5SHF09NsywIQW3N8kEk15bt8T1cD6PO41CJGicFgqdraMmuar+bxjdlP+//piL 4Ck9 X-Received: by 2002:a05:600c:8209:b0:496:bbce:fc with SMTP id 5b1f17b1804b1-4997c126dbemr68617865e9.12.1786536987906; Wed, 12 Aug 2026 05:16:27 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 01/26] target/arm: Implement FTMOPA (non-widening, FP32) Date: Wed, 12 Aug 2026 13:15:57 +0100 Message-ID: <20260812121622.649730-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537053831158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-sme-defs.h | 2 ++ target/arm/tcg/sme.decode | 10 +++++++ target/arm/tcg/sme_helper.c | 49 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 26 +++++++++++++++++ 5 files changed, 92 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index fb5ed25ad0..6370c03e2a 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1590,6 +1590,11 @@ static inline bool isar_feature_aa64_sme_mop4(const = ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMOP4); } =20 +static inline bool isar_feature_aa64_sme_tmop(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, STMOP); +} + static inline bool isar_feature_aa64_ssve_aes(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, AES); diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 7fc7129e54..8107eb40af 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -404,3 +404,5 @@ DEF_HELPER_FLAGS_4(sme_usmop4a_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_usmop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_usmop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) + +DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 53e7e67feb..0250177d0d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1131,3 +1131,13 @@ UMOP4_dh 1010 0001 111. ...0 0000 00.. ..0. 1= ... @mop4_o3 =20 USMOP4_sb 1000 0001 000. ...0 1000 00.. ..0. 00.. @mop4_o2 USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1... @mop4_o3 + +# SME TMOP Sparse outer products + +&tmop zad zn zm zk idx +%tmop_zk 10:3 !function=3Dexpand_tmop_zk + +@tmop_o2 .... .... ... zm:5 ... ... .... idx:2 .. zad:2 \ + &tmop zn=3D%zn_ax2 zk=3D%tmop_zk + +FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 23bb816b6a..571b0add34 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2636,6 +2636,49 @@ void sme_mop4(void *vza, void *vzn, void *vzm, void = *fn_opaque, } } =20 +/* + * Sparse outer product, non-widening. ESZ in {16, 32}. + */ +static void sme_tmop(void *vza, void *vzn, void *vzm, uint64_t *zk, + void *fn_opaque, uint32_t desc, MemOp esz, + void (*fn)(void *, void *, void *, void *)) +{ + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t index =3D simd_data(desc); + intptr_t esize =3D 1 << esz; + intptr_t host_adj =3D HOST_BIG_ENDIAN ? 8 - esize : 0; + /* Base in bits for op3[index*:csize], csize =3D (VL * 2) / esize. */ + intptr_t ctrl_base =3D index * oprsz * 2; + /* Create a zero for use with the largest esz. */ + uint32_t zero =3D 0; + + for (intptr_t row =3D 0; row < oprsz; row +=3D esize) { + void *vza_row =3D vza + tile_vslice_offset(row); + + for (intptr_t col =3D 0; col < oprsz; col +=3D esize) { + void *e2 =3D vzm + (col ^ host_adj); + void *e3 =3D vza_row + (col ^ host_adj); + + /* + * Two control bits select one element: + * Zn[row], if [0] is set, + * Zn+1[row], if [1] is set, + * 0, otherwise. + * Compute the address of that element. + */ + void *e1 =3D &zero; + uint64_t this_ctrl =3D extractn(zk, (ctrl_base + 2 * col) >> e= sz, 2); + if (this_ctrl) { + e1 =3D vzn + (row ^ host_adj); + if (!(this_ctrl & 1)) { + e1 +=3D sizeof(ARMVectorReg); + } + } + fn(e3, e1, e2, fn_opaque); + } + } +} + static void inner_fmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) { float16 *d =3D vd, *n =3D vn, *m =3D vm; @@ -2692,6 +2735,12 @@ void HELPER(sme_fmop4a_ss)(void *vza, void *vzn, voi= d *vzm, sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_fmop4a_ss); } =20 +void HELPER(sme_ftmopa_ss)(void *vza, void *vzn, void *vzm, void *vzk, + float_status *fpst, uint32_t desc) +{ + sme_tmop(vza, vzn, vzm, vzk, fpst, desc, MO_32, inner_fmop4a_ss); +} + static void inner_fmop4s_ss(void *vd, void *vn, void *vm, void *vinfo) { float32 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 0794794e3d..3cfd52dca4 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -31,6 +31,12 @@ * Include the generated decoder. */ =20 +static int expand_tmop_zk(DisasContext *s, int x) +{ + /* Pseudocode for 1:K:1:zk. */ + return 0b10100 | ((x & 4) << 1) | (x & 3); +} + #include "decode-sme.c.inc" =20 static bool sme2_zt0_enabled_check(DisasContext *s) @@ -2132,3 +2138,23 @@ TRANS_FEAT(USMOP4_sb, aa64_sme_mop4, do_mop4_int, a,= MO_32, a->s ? gen_helper_sme_usmop4s_sb : gen_helper_sme_usmop4a_sb) TRANS_FEAT(USMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, a->s ? gen_helper_sme_usmop4s_dh : gen_helper_sme_usmop4a_dh) + +static bool do_tmop_fp(DisasContext *s, arg_tmop *a, MemOp esz, + int e_fpst, gen_helper_gvec_4_ptr *fn) +{ + if (sme_smza_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, a->idx); + TCGv_ptr za =3D get_tile(s, esz, a->zad); + TCGv_ptr zn =3D vec_full_reg_ptr(s, a->zn); + TCGv_ptr zm =3D vec_full_reg_ptr(s, a->zm); + TCGv_ptr zk =3D vec_full_reg_ptr(s, a->zm); + TCGv_ptr fpst =3D (e_fpst >=3D 0 ? fpstatus_ptr(e_fpst) : tcg_env); + + fn(za, zn, zm, zk, fpst, tcg_constant_i32(desc)); + } + return true; +} + +TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, + a, MO_32, FPST_ZA, gen_helper_sme_ftmopa_ss) --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537019; cv=none; d=zohomail.com; s=zohoarc; b=mYmA5NUsuzuf24VCCbGeNdiEHX/m3Nsvt9A98+kDm5Td33o77yJpgjMuRyRocU0XLHRhrPSuGVbo6eKLXARJhePhXK9ZD0aBOFR8ojJ+NmzlNJCNALZhUUtz3jyFTtlhnOFAk3TMjYTeW4W1iI9qfKMRgTrPu4f7WHNQOYn84hU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537019; h=Content-Transfer-Encoding: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:Cc; bh=z5zj04oLCqK4rU9GyIrSuq0uJ3klWGkxX80UdVC+ysU=; b=fdVsVHNR7IXKi7VIJL5+HGDlJWZf+MnPmT1D705fnOOVMXqw/fDJo8yGesc+4bUXQrPSC8QbFzec+pxUoJ/skCHnVTObX1dtZnGIKvzlCdSVXR3Lgf9JtQMmsyMGZAnYD+SKqWy2n1xdk7x+9+/7agOxqGlkxGKOfVg+a03xLcw= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537019388213.51958915995965; Wed, 12 Aug 2026 05:16:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7sr-00041c-Ao; Wed, 12 Aug 2026 08:16:37 -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 1wu7sq-00041K-9z for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:36 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7sl-0008TJ-Fh for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:33 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-49802c418b5so7803915e9.1 for ; Wed, 12 Aug 2026 05:16:31 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786536990; x=1787141790; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=z5zj04oLCqK4rU9GyIrSuq0uJ3klWGkxX80UdVC+ysU=; b=d1wYI4Y1bk1+pipW2tcvHGL9EeULxjnGRXaJSd68+sB4/c+4rTDUmUQwt9zqAw6Jzf b53MpyCEDZgRDSZVZbD8W9+0b5/+erVOLC5jFFbERJ18OBDX4FbmByEjD+jhwNUfHU69 YyUJlZYefopGq90UB5noTyb1H47w1dzBRAH1S8NaFlIvUtbuePoSIP3KrFlLt2bdWOKC GeEPp8qWlDd5lJogmSKqOfl5LAsejr0O9Mmm+5Rh9FPEuBWm9viV9OQEVRF/zDPk2SZl Y3bdefdM63+erRPlGMBJBL3hd/CaokxvQGL9Zq94gsyg4YbDbAHH15tB5vaunU2TGmcm AZnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786536990; x=1787141790; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=z5zj04oLCqK4rU9GyIrSuq0uJ3klWGkxX80UdVC+ysU=; b=OyKLhm3wn6I++qRRpzc46Jm3vQoNJ0LJJ86a/eYZAzj1etdfew3rM/aFnT8gARUyva eHEsXp1bOH3FsMole8c2UeOeSE8npJvWqzszmot+GB5xfttmThwp4uW510ZEtZ4m0PNv eJUwqNk+8usvDZCLf1oUuFY8jROHbhDtdy7HvxaLhKaHYRjZ2IDU9sswpMp9Bt4nuztL Yo3QYZpwgE5PqspNApcouVaUmpdYxfLhrUV7AWMWwkCLbvdRG8I56arZeP5CyDvOMsMN EqXYN3vU0KSY3yy9/aoqd9HXpXafxncW0Zj+8f/wCNeLso0Vg7R5XWIC0sj+mT75e1us TCpA== X-Gm-Message-State: AOJu0YzEKVKQvAfpFX4uUbY4dQ12Sttfy6RSbkL3hDUB1/LwlgAEnu2q IekrjuP1E/012b0mDM/K5uJOFdK7irZ84rFa94mL+b4jGPZj/gIwVjIi7TCtXCYImzmJ4Htouuo f1TOE X-Gm-Gg: AR+sD12kmHJKY60O2LWBn2Fe16mhDx3LMEQ8HuJ4Qid1ncf0M5zzw9Z1POxZOM92tr1 mjFjmXH7LMzGlE7VgyVzQQ0Mexqq4BgW5RO8UmVb/4cLPaPf+RhJIS1lnzQ7plNOlvAlsogSPrJ OwKfcUC1lo4R/7VK9+vK5nFBXFXlb3NBhZoNHAlL9fDT43Wqqfy2HY3yXsnwNNPjW2HH5mPFl1/ Xc2lodrbWZQ42WLbj1BCNUaxWVE2GD4hD+Sn2MPCgxXfgg0rZ7YuTtp3C3WWE/JEoO6hdD0LhYK epo7/YAJrGEWwsPo1DyNspBWKzl3mlIwUAgUjV5n4Ituyox9aOtvFTtmEOLveHOXqc4aRV+HeNe +pDaKM5TgwVaUZYhNtk7eeS5rt5PmpZ3ZnvDcXsJy02ELsydkhoHS2eushJIgK1kKbJBdOLaJLR 3yr7uNFEebMu8QPWn0DqW25khpGUYLw9N2oSAmBHNscWBHZuyp9o2RFEUuUxGzGCYGIq1Q5r2Jm m0pX4snNfPJgxKBphv6kkSuFLwcIxdgCGuenyLYUql0zFCj9JJ+tLX1WkzG+jJwuFzGFe5xVRB+ ykjl X-Received: by 2002:a05:600c:8b52:b0:495:4491:b8c2 with SMTP id 5b1f17b1804b1-4997c0e6f2emr73873955e9.3.1786536989656; Wed, 12 Aug 2026 05:16:29 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 02/26] target/arm: Implement FTMOPA (non-widening, FP16) Date: Wed, 12 Aug 2026 13:15:58 +0100 Message-ID: <20260812121622.649730-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537021548158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-3-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-sme-defs.h | 1 + target/arm/tcg/sme.decode | 3 +++ target/arm/tcg/sme_helper.c | 6 ++++++ target/arm/tcg/translate-sme.c | 2 ++ 5 files changed, 17 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 6370c03e2a..4190398a1d 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1842,6 +1842,11 @@ static inline bool isar_feature_aa64_sme_mop4_i16i64= (const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_i16i64(= id); } =20 +static inline bool isar_feature_aa64_sme_tmop_f16f16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f16f16(= id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 8107eb40af..84707e6c71 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -405,4 +405,5 @@ DEF_HELPER_FLAGS_4(sme_usmop4s_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_usmop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) =20 +DEF_HELPER_FLAGS_6(sme_ftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 0250177d0d..16ed3ca391 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1137,7 +1137,10 @@ USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1= ... @mop4_o3 &tmop zad zn zm zk idx %tmop_zk 10:3 !function=3Dexpand_tmop_zk =20 +@tmop_o1 .... .... ... zm:5 ... ... .... idx:2 ... zad:1 \ + &tmop zn=3D%zn_ax2 zk=3D%tmop_zk @tmop_o2 .... .... ... zm:5 ... ... .... idx:2 .. zad:2 \ &tmop zn=3D%zn_ax2 zk=3D%tmop_zk =20 +FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 571b0add34..49fd3d07e4 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2693,6 +2693,12 @@ void HELPER(sme_fmop4a_hh)(void *vza, void *vzn, voi= d *vzm, sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float16), inner_fmop4a_hh); } =20 +void HELPER(sme_ftmopa_hh)(void *vza, void *vzn, void *vzm, void *vzk, + float_status *fpst, uint32_t desc) +{ + sme_tmop(vza, vzn, vzm, vzk, fpst, desc, MO_16, inner_fmop4a_hh); +} + static void inner_fmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) { float16 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 3cfd52dca4..5ad59ab99b 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2156,5 +2156,7 @@ static bool do_tmop_fp(DisasContext *s, arg_tmop *a, = MemOp esz, return true; } =20 +TRANS_FEAT(FTMOPA_hh, aa64_sme_tmop_f16f16, do_tmop_fp, + a, MO_16, FPST_ZA_F16, gen_helper_sme_ftmopa_hh) TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ZA, gen_helper_sme_ftmopa_ss) --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537022; cv=none; d=zohomail.com; s=zohoarc; b=HSp71Ny1tGj4+0i08PG5CB0NALTHUjD3zi3HXl3le6RurlAFvUZXtPA8UpmT8Rp/5nn0/kd0AScFKQ0GKE6TW920ea8+z6ZJxAz29nVeGDeKmXu0ZV3M+RxlRXuJ+eKsUd/I3QfaOga4nGY60RJFANIydlf+i2sYtkJKydYzDow= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537022; h=Content-Transfer-Encoding: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:Cc; bh=7sEEgIbRAUTMgSc3I3kXrmftvB4wI6OE/YhjUnE5Qek=; b=BavK+6Vhho0wskdg1w5IDNCp2TCaYvyWpXOmF4B/JsN/bRw+7mY+vpIsYDPF7gWoZnV1Sr9wORe9ZQZyb/f2h51bW4wKd5Sw18U3l2OTtWA0Q3R7E9wHeMNLWCV1lD74QGGVYzLqQh2Mg29rzueX8X8M2m1xR4HXluxXv4LkZZ8= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537022342359.459753830547; Wed, 12 Aug 2026 05:17:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7su-00042k-IX; Wed, 12 Aug 2026 08:16:40 -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 1wu7sq-00041J-9X for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:36 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7sm-0008TX-So for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:34 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-49954b88fffso9460875e9.0 for ; Wed, 12 Aug 2026 05:16:32 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786536991; x=1787141791; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=7sEEgIbRAUTMgSc3I3kXrmftvB4wI6OE/YhjUnE5Qek=; b=syD4eHp5w6GaAVtckYoMIDvv2cCfWbmdrDOj3m3mFrll8Z2YG/QKH/tGUip6LSX4hl wNY+EId9l2h+uf/1lnKcv03BYVDqa3Wu3m2mg+oDmxjyQOv5yC9/njJAdhzit4bKKILq lGvrNlJbqiRU5RkqFk+gxfLSaAjl1X8bYarBY4T8aOjnzrQyEzADVZCUuqr3FzOFrauY 77nmK4NIDiY3ip0eS/6XjpiipL7YPsPoDG9uUZPoGK25g8Zy06J9qjbbtIHg68DvIIhS uLsG6FH8KZFLiaVBkdNJ0AoKY2zs0FZ3rBzQmV+ZVZimf5MVxwuvrvGmEZcPL3w9nEfg D3Og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786536991; x=1787141791; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=7sEEgIbRAUTMgSc3I3kXrmftvB4wI6OE/YhjUnE5Qek=; b=seAA0O7mwBRnHGmmLNGqapOc3IPsDbZ2Ad1K6vaYU1Vw77kYGI07eGyjq19r3/P/C+ O5meY4o7f51g5l/naLKPthrrJgSHoSbl2SK9mu8r/VyrCqDetITq9MSMds0hSCxTNnsG Xv+9XHUwhFOoQqBDDmVdOspmdkUjrPMreeGmjYsQjZbHZORuVB7YbZJykmf+HxJVUtC8 vXv85o9jwkV0rNsUg1S/A/vhiFFlTS7++/EKTtYSE8dJP+4OQYrMlGIrst9FO2XzF1er qhCjoFW0ihQXEWZFPI0lkgaRheCldJjrtDSAbIw//44QLlr2JdVTaqprD6/JE3X7gRck 3hlg== X-Gm-Message-State: AOJu0YzLHzEU6xTwr6ShYHFBS/+vJ68QZ6gg4oRj+4OAF2FPVQ8pl5X+ +XkYJRGek4Ko9nOOPUUuBbYyRM79G6AV0CKZXPoDD0kRQkU+NlKu2m1Wx6Hr0o8KHQmX8Mpc/vC 4ihbD X-Gm-Gg: AR+sD12dF/4qqHrmtu12s3shxsbbROqOFxNjze+LoYHMyrQ8oS090AKL5umd4g792jO YKPku8cQCXQdSGXICgMgyb454cItITi/NmAJmiUxFvYpf5mIzHiRdt29mLi7XYkadfEyJWB1HJy O5W9jwhvz6yerm0FHv9af1JQO6Rjy25dedwU2TcQKqT9G0h4fH0WpQQ+jM432VQka9hy++iQ80g 2qXVDjbWtGuJ7JOo3dxDnWAbJ7BthEBTkB/QxKraa0hJjVU6bFcRva2bNyE8z3JLWyZVc7Mv8mi XJtgBwc95ZHb1cg5z8xU+KtBUVPFLYNr3JUVKddIY25AkbbW+LnC8Xbyfm2qzh6uvGayhpFbeui T24ZcYJniHo834+QU1hMCYpuhp7nVZVjrqT2psKCnlDrBjjlqlyOby5G5A7/nnMTsJ6tcFCoDhB dmL+MProb2NBgZF0V/IIyZ7VgM2PgWP1jYTZe7Lc3mthcKXxdsEPuLqCsLIY8nNeAPBLfx/6/g9 N7CfQFTwVFXpcBuma9BYvErqvXYxM5M523QkWS3sPbkBlZDzYXrcaRNbWByZKea53g/Dw== X-Received: by 2002:a05:600c:4690:b0:499:728c:4704 with SMTP id 5b1f17b1804b1-4997c0fe705mr50145075e9.12.1786536991071; Wed, 12 Aug 2026 05:16:31 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 03/26] target/arm: Implement BFTMOPA (non-widening) Date: Wed, 12 Aug 2026 13:15:59 +0100 Message-ID: <20260812121622.649730-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537023616158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-4-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-sme-defs.h | 1 + target/arm/tcg/sme.decode | 1 + target/arm/tcg/sme_helper.c | 6 ++++++ target/arm/tcg/translate-sme.c | 2 ++ 5 files changed, 15 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4190398a1d..d3bf0746cb 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1842,6 +1842,11 @@ static inline bool isar_feature_aa64_sme_mop4_i16i64= (const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_i16i64(= id); } =20 +static inline bool isar_feature_aa64_sme_tmop_b16b16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_b16b16(= id); +} + static inline bool isar_feature_aa64_sme_tmop_f16f16(const ARMISARegisters= *id) { return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f16f16(= id); diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 84707e6c71..224de45294 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -405,5 +405,6 @@ DEF_HELPER_FLAGS_4(sme_usmop4s_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_usmop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) =20 +DEF_HELPER_FLAGS_6(sme_bftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 16ed3ca391..f0f9b3f61d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1142,5 +1142,6 @@ USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1.= .. @mop4_o3 @tmop_o2 .... .... ... zm:5 ... ... .... idx:2 .. zad:2 \ &tmop zn=3D%zn_ax2 zk=3D%tmop_zk =20 +BFTMOPA_hh 1000 0001 011 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 49fd3d07e4..e57c56d5f2 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2831,6 +2831,12 @@ void HELPER(sme_bfmop4a_hh)(void *vza, void *vzn, vo= id *vzm, sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_bfmop4a_hh= ); } =20 +void HELPER(sme_bftmopa_hh)(void *vza, void *vzn, void *vzm, void *vzk, + float_status *fpst, uint32_t desc) +{ + sme_tmop(vza, vzn, vzm, vzk, fpst, desc, MO_16, inner_bfmop4a_hh); +} + static void inner_bfmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) { bfloat16 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 5ad59ab99b..04e1550c05 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2156,6 +2156,8 @@ static bool do_tmop_fp(DisasContext *s, arg_tmop *a, = MemOp esz, return true; } =20 +TRANS_FEAT(BFTMOPA_hh, aa64_sme_tmop_b16b16, do_tmop_fp, + a, MO_16, FPST_ZA, gen_helper_sme_bftmopa_hh) TRANS_FEAT(FTMOPA_hh, aa64_sme_tmop_f16f16, do_tmop_fp, a, MO_16, FPST_ZA_F16, gen_helper_sme_ftmopa_hh) TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537184; cv=none; d=zohomail.com; s=zohoarc; b=RONHmsWP8K3spWpjJRxPvWADjdH9VEar/7yF3oY6tuniKrIVaMH+7GyBiYmbj3cgiqrDnAChgjCdc4WyiNyNp317Kl39snIpPbLtmZHKLv3uOJA+Eu6J2IHpAtFUr70v9Z3w8vlgD4HAA7gcrBnkgaF62dVYjZinIBOygytyS20= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537184; h=Content-Transfer-Encoding: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:Cc; bh=vzS6y8XpaW+frb4VvL7Cx5yE0FqW3fkEmCswuTl3ppo=; b=DN6A2Fw4cEs3OJKf8ra+61iuoGnSA2oB6QVP8iS8wuGn/5eHzk9wjqZdwKJoX0xNz2luXulA2r376mnyQxn9b8fRUu8a37Cei2aj2QIz5gTo1GbO3a35dWneNTIKzFGARrdQiVzFdCKOnUSCONO4o28tWDpmK66aykoXq/OQM6g= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537184085146.28334838135038; Wed, 12 Aug 2026 05:19:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t2-0004LP-JL; Wed, 12 Aug 2026 08:16:48 -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 1wu7sx-0004Aw-2e for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:45 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7su-0008UT-Gk for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:42 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-49802c418b5so7805135e9.1 for ; Wed, 12 Aug 2026 05:16:39 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786536998; x=1787141798; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=vzS6y8XpaW+frb4VvL7Cx5yE0FqW3fkEmCswuTl3ppo=; b=JGN4yUhuxoPkLvNS6toQiftmTbR2n1BPUl5whSHPiVtl7JPDMRDOnxSjq4ITnS0IEz 4IWamydmsFMNwaY07nr2i5gquzrBQtV9V3m441Zn6XQAWJXLYxJ3Oax4JS61j2ANUOLv bwSaeflk/z7a0blhzkeCVqNY/dltgeNOwloPgOHYsPZUUfzKAp7QGTZDRlEA5PRuNsuV hTOUxg559/EjHJ8a/OxRFytJmYooP4v2/BLZ5nf4sOmsLuLk2dbU5moDfXvpoTwxH7qW z8YsTR53Ihwq+R0rarcqdPhKfpNHYMKgymfeA5eAUuB/Jpkgwr+Kkx8fuEDVtz9G0FmG IfcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786536998; x=1787141798; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=vzS6y8XpaW+frb4VvL7Cx5yE0FqW3fkEmCswuTl3ppo=; b=ghtsQPbms1v5Y6RSh47MM7AY7o/1h4GUsycY5Z5pC4bcDTdclxVREwik/+S+SxSj0i BUQdM5t2FOexr8hM+jOIQUvmZFLJO02EBIqUtSD4gykPb+zFih5k/nCQm5unuHqUPIOE rZ17fCEJrYmQ5Ux4rUXNReEJXN/OM5hMMhHYxjH+b5/eBimIzMOGW0JURHqB2ZXBiLTa d1E2zDnJ87hCTpWOcvqw1f6SikcKLvVtxVxJ+d23cbrMj6guM0+kwx30tP4HLIXtiLB8 YvUYkpOD0iKeryKiHgPstsUizzmLEcbguNcoBEWM2y1/PpndJjEORYh3EINi3yn3x/Xx 0G2w== X-Gm-Message-State: AOJu0Yya5RNyblcag3MXuDUA8mE+aj6JvCygJ3vjUlOKbBunLQUFUMsn aU73htOY1sHBhAwqbKP3y8+n7sCJF60fnJZ8EWBOhNNfb8AFsu+7oMg0HSGKKf0CG0mqCHDQ3ld +YrkK X-Gm-Gg: AR+sD11rZV1I1RXjMwK1THKntOq/AuoIrwZZJW6B1S10Upireq/UPRk3SLFkYJCBrQL HylpjBPx05+fXgOzwivuIcwrUuJtzgDLiTusffkHxlpw/xVVlzsYBTyxvQpBJ4+Kvgmor2hY2qh qlFkTlAHXR0Mc7aRP8wt/xwr0dK1exMWtzI4H2up2MymeLAi53jybiBaXYYppIoefJr/YE+Ag4K AXSuzzRDN1pCJMiq3Nz7CY6u5rNSdQLPAaUcrNdQc6OKV84LVfByTTz408NSg9VbfKbaTovcr/+ 9PmnPeXmC8fxm0W1xLgQ4NLvw0pxut8WxVSAZH7oPGiBVUpvxgskYNOsJuLBoSfPhgOdUbjh6Vv wNesVOSYsBIsaHkNxuz52/IN/WiAgDsgO1awMmVxWNIQgLGPwr7AVGQ4k8bldKkZIDNTA8VI7OO sTONej9xHm11xNzNI/jgwXVM/ypEiKfNW99Rcq2K3S6FiIU5U22eU5tG5qrmku2Ct24M/EzUz4Z R4iSFGlWHJy0OeyNcuT7rlDapvfGfbAn3l5+ndQn08lN9/LR0oz9EjScjlwOzy0Wa3g/w== X-Received: by 2002:a05:600c:a41:b0:496:c378:6420 with SMTP id 5b1f17b1804b1-4997c105cbbmr60208765e9.8.1786536992230; Wed, 12 Aug 2026 05:16:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 04/26] target/arm: Implement BFTMOPA (widening) Date: Wed, 12 Aug 2026 13:16:00 +0100 Message-ID: <20260812121622.649730-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537184803158501 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-5-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 2 ++ target/arm/tcg/sme.decode | 2 ++ target/arm/tcg/sme_helper.c | 54 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 3 ++ 4 files changed, 61 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 224de45294..f05b53f412 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -408,3 +408,5 @@ DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_6(sme_bftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) + +DEF_HELPER_FLAGS_6(sme_bftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, env, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index f0f9b3f61d..49af8fd19e 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1145,3 +1145,5 @@ USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1.= .. @mop4_o3 BFTMOPA_hh 1000 0001 011 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 + +BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 00 .. @tmop_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index e57c56d5f2..91447d9c0e 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2679,6 +2679,50 @@ static void sme_tmop(void *vza, void *vzn, void *vzm= , uint64_t *zk, } } =20 +/* + * Sparse outer product, widening 2-way, 16 to 32-bit. + */ +static void sme_tmop_2way_sh(uint32_t *za, uint16_t *zn0, uint32_t *zm, + uint64_t *zk, void *fn_opaque, uint32_t desc, + void (*fn)(void *, void *, void *, void *)) +{ + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t dim =3D oprsz >> MO_32; + intptr_t index =3D simd_data(desc); + intptr_t ctrl_base =3D (index * oprsz) >> 1; + uint16_t *zn1 =3D zn0 + sizeof(ARMVectorReg) / 2; + + for (intptr_t row =3D 0; row < dim; row++) { + uint32_t *za_row =3D za + tile_vslice_offset(row); + + for (intptr_t col =3D 0; col < dim; col++) { + uint32_t *e2 =3D zm + H4(col); + uint32_t *e3 =3D za_row + H4(col); + uint32_t e1 =3D 0; + + /* + * Four control bits select two elements. The two elements + * may be non-contiguous, so assemble them locally into e1. + * Pseudo-code has a double loop running forward, with a + * test for (i < 2) to limit construction to 2 elements. + * Easier to run a single loop backward, shifting extra + * elements off the top of our uint32_t. + */ + uint64_t this_ctrl =3D extractn(zk, ctrl_base + col * 4, 4); + for (int i =3D 3; i >=3D 0; i--) { + if (this_ctrl & (1 << i)) { + bool e =3D i & 1; + bool r =3D i & 2; + uint16_t *p =3D (r ? zn1 : zn0) + H2(2 * row + e); + e1 =3D (e1 << 16) | *p; + } + } + + fn(e3, &e1, e2, fn_opaque); + } + } +} + static void inner_fmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) { float16 *d =3D vd, *n =3D vn, *m =3D vm; @@ -2893,6 +2937,16 @@ void HELPER(sme_bfmop4a_sh)(void *vza, void *vzn, vo= id *vzm, : inner_bfmop4a_sh); } =20 +void HELPER(sme_bftmopa_sh)(void *vza, void *vzn, void *vzm, void *vzk, + CPUArchState *env, uint32_t desc) +{ + float_status fpst; + + sme_tmop_2way_sh(vza, vzn, vzm, vzk, &fpst, desc, + is_ebf(env, &fpst) ? inner_ebf_bfmop4a_sh + : inner_bfmop4a_sh); +} + static void inner_bfmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) { float32 *d =3D vd; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 04e1550c05..66bba48d99 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2162,3 +2162,6 @@ TRANS_FEAT(FTMOPA_hh, aa64_sme_tmop_f16f16, do_tmop_f= p, a, MO_16, FPST_ZA_F16, gen_helper_sme_ftmopa_hh) TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ZA, gen_helper_sme_ftmopa_ss) + +TRANS_FEAT(BFTMOPA_sh, aa64_sme_tmop, do_tmop_fp, + a, MO_32, FPST_ENV, gen_helper_sme_bftmopa_sh) --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537014; cv=none; d=zohomail.com; s=zohoarc; b=DWi3pec9cFJcHwGbbBs+FxRNkjdyx9t53eC4fuO+uNOU0vmUMiy7QF79NsrPYG2Wo702gkf7oC84dmA0R1Z9VUT6OOEimgtjYRxPwir7uHVtIt2p0oSCZ4F9yZSZcTdw99OlmPDInEpMlcu5q3JjpceG/x7jT6917mrxhHO0JHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537014; h=Content-Transfer-Encoding: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:Cc; bh=XX9Q/w9ZfxideWA+DTVIJKg2uIM7w0m1Tf/rmMndDAE=; b=UNxAsIiWf7BM+UF52vPeCMtQCT7djealsH//UYyzGFNpIKCXRgYfGnBxc6rAvNB1y9VAVtEfwUBEoDCkoIZwAZvah0fYWzqW2gQJyaNL6NVIEfDrTekT4CWD47h1Mbzxy75clg0pdbh2XEq7+PRFzlD8reD2V6OsairyOR1AhLo= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178653701412655.09451236640416; Wed, 12 Aug 2026 05:16:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7su-00044C-PI; Wed, 12 Aug 2026 08:16:43 -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 1wu7ss-00042A-2W for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:38 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7sq-0008Tq-1g for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:37 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-49802c418b5so7804585e9.1 for ; Wed, 12 Aug 2026 05:16:35 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786536994; x=1787141794; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=XX9Q/w9ZfxideWA+DTVIJKg2uIM7w0m1Tf/rmMndDAE=; b=NhoVKHjJ633Gkv1pya2Gx5wc/uJabzn5sXNrEn5ALujKZR0+ua/5BAUT1ObEMAsDju Vipc/BD0M4uB5N6gDHzWpxpyjz6antZOnmGDN6fkTo5Mjnm4F42zFCqn53DmYf9kHwy1 T5J7MccCc3qkOvrf/z6eLwR67AJLWUHNzbEMVzuDsREJpuiel4oWar7/d5cajJ6r846p zwM07XZRCMdP3YgY0h6T5scV83kH+FHczRxt/gupImqZA/WPz/Or0eWjZ8UGdk4gTjeO OVhQIFBgKdJ5a4jrBPyTyLKoIMEHt4kzqXd4DCHArMrP40Edgp63Kk3SqfwDVXqMEWAr eKuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786536994; x=1787141794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=XX9Q/w9ZfxideWA+DTVIJKg2uIM7w0m1Tf/rmMndDAE=; b=niFaVGVg4r68ubjZMuS9WpkecorRR9MC3kN8DFoT7TbMTRQOaryzr/stUK6Ndd3crY VP6PcaySDtmTuOrAy2/qp/IlYlQpZbUxDx2PEdlYTfL+3DvC2+Wx+zc51KQUOA+W2G73 rH70vBvntN/UsEkUuteyaYyC8kI10p9KTRnUcAndaakdCRCBfvAWHeLBj4CNSnUpW/7W 3dRrycvjdWEdaIiPoO6osDHWQmRaHbPm8vTSIbCXaroU8Pc2dDZY3FwDQI3NIvDEViJE VC/HDKM+7R61S9XjtrZwC0wrVZ7Iff/kzvuyVorkgsJnK5KWIH6vCDNp9OA6GAnAvz8N YzAA== X-Gm-Message-State: AOJu0Yzh4Y4NMhsLumuv3Gaj/ZBl6VJwsFfMkS/IM+4IxeMAcWwmczja ZenBJaIepXbf281cS2esnb6aWkqRZB/9+F55WrcsJtoXJzx3GsuQIpdtl4FFmkF/mdIOhIh9LRB OUG1j X-Gm-Gg: AR+sD10OWCjXn1vd9HalZKFEzJrthcn2yzvPjjj1eL12QpTV5r5hS9z8UrSmE6TmI6s YemTr0zkKpq0t8FJhujVrFrKltHaEVT7hS6kMvjC+s+Ob2EY4GUXb9Hro6uWtFvhtfNs/prr3Ga c63m2vGjrEJ7+iFf2DnsZUbtW60ZTTJ0q42Saj3SUxh4Wd9joSz+FtMqQAbJHYQA0NO/GyA6dbO BQDBC8zJhxyygCw4TZkDMkPp5l8BrsFpkudt9DWOdTDW4PevJgz9OIuISQ11Lngjo/6lIk32VNG UvxEpShx1uNsUxgzlTd4r5v5aTqXgfHa5NhMdKdrPHIiRDguupZCXo7pOIYFuGqwL7WghPvdngt Kg6JrtskZ4NO0f4y/mIO5YU2lyVQDMU8EHdkxGJUK4XC4MDCZLjo8ZlMVDu0N+BBSzANk7gkHRG 2jBcqMGj5sT7WxpXHdO8zfn9wimL/WOpZrz6ZXDGn4hwpaSzsN7tFWG+mwqQBQj7a9YtcgaEje2 ge4XBjLH39zaM8P7uQYuP6rq/VjxoFz++L/JiyHM3OYYD47pEnnW4sbBIp6aH7Xremn0w== X-Received: by 2002:a05:600c:8489:b0:499:78b3:7b36 with SMTP id 5b1f17b1804b1-4997c12bc20mr67240745e9.11.1786536994277; Wed, 12 Aug 2026 05:16:34 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 05/26] target/arm: Implement FTMOPA (widening, 2-way, FP16 to FP32) Date: Wed, 12 Aug 2026 13:16:01 +0100 Message-ID: <20260812121622.649730-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537015755158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-6-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 1 + target/arm/tcg/sme.decode | 1 + target/arm/tcg/sme_helper.c | 6 ++++++ target/arm/tcg/translate-sme.c | 2 ++ 4 files changed, 10 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index f05b53f412..8a959447b2 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -410,3 +410,4 @@ DEF_HELPER_FLAGS_6(sme_ftmopa_hh, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, ptr, fps DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) =20 DEF_HELPER_FLAGS_6(sme_bftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, env, i32) +DEF_HELPER_FLAGS_6(sme_ftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 49af8fd19e..5c453ea729 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1147,3 +1147,4 @@ FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 1= 00 . @tmop_o1 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 =20 BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 00 .. @tmop_o2 +FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 00 .. @tmop_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 91447d9c0e..c2b7c23d6c 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -3020,6 +3020,12 @@ void HELPER(sme_fmop4a_sh)(void *vza, void *vzn, voi= d *vzm, sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_fmop4a_sh); } =20 +void HELPER(sme_ftmopa_sh)(void *vza, void *vzn, void *vzm, void *vzk, + CPUArchState *env, uint32_t desc) +{ + sme_tmop_2way_sh(vza, vzn, vzm, vzk, env, desc, inner_fmop4a_sh); +} + static void inner_fmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) { float32 *d =3D vd; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 66bba48d99..8a55b79727 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2165,3 +2165,5 @@ TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, =20 TRANS_FEAT(BFTMOPA_sh, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ENV, gen_helper_sme_bftmopa_sh) +TRANS_FEAT(FTMOPA_sh, aa64_sme_tmop, do_tmop_fp, + a, MO_32, FPST_ENV, gen_helper_sme_ftmopa_sh) --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537072; cv=none; d=zohomail.com; s=zohoarc; b=FYEvXdkJv0NgTyJglZOPa+I7Q0uXr8AFNo/CsYefiksozW8RPnwXRvIVDgqQtLvboCI6ohBorTQgE5Op8K/tX1MnDHVOm3t4oXK7C2yEQY4nHorZY1Gyu+6K/vB/G61A/TclRCzP9iz8Pgt4c2FxnSi3wDXE1D7m5TVhL92eKBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537072; h=Content-Transfer-Encoding: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:Cc; bh=9djG1Ka3NLTx8Hzl6L0z6UqejgNgDrEWl9A/wGEIq2c=; b=eH0njPaYLYWXTCubIPNKD8BsUuTJlIcrkOsc8jWS4mPoymHbO5R2K50o/lvwLRjXvtcgSD7I+Wak8codg31EZfE58T8IMKWPmuurQtxeTl/jO5CYWUOvFUGR7KdkOgnqFhliODDhULqAURtAb7ywqkxPsfvtNajd1HNZ7AueTb8= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537072824755.6437381193157; Wed, 12 Aug 2026 05:17:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t1-0004JD-RS; Wed, 12 Aug 2026 08:16:47 -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 1wu7su-00046C-Kd for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:40 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7sr-0008U6-Oq for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:39 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-495590dde14so10839145e9.0 for ; Wed, 12 Aug 2026 05:16:36 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786536995; x=1787141795; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=9djG1Ka3NLTx8Hzl6L0z6UqejgNgDrEWl9A/wGEIq2c=; b=UlsCX/HbGevy0mcv3y9IwqHn6su6ZTZ7pqSG4xCdYC6GqJTZkso+AcohUDRD1E0s2q t3sJfVPBVsCjgi/U6aKEFHHzJijXuSuTn3bk1zC9nVcfknmn3rDsBHElPacXf0MZuLBI ZMxTZ0iZAjttW7RBNCXF2I9/+jsjzVDMFh2NGCIhhem5YNMR7uhW2vmOOzzpDSl+RYb3 ySDkc6bLWwlfba9vLALnAtGoF3HLdFCn9RAajkeN1Skud8vRxNrFy6PO8Y5dMOxIWLdB 3iP2jJgi+LLc2Og6Z9HwamG1FdEjqWpmWkQ4w2wcQOPMoS7ed4sGr3RlPmfOgber1XuX 32yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786536995; x=1787141795; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=9djG1Ka3NLTx8Hzl6L0z6UqejgNgDrEWl9A/wGEIq2c=; b=Qgi6mougo9002AQiS48Uz3YymWSxFQQTFoGv1QFCKHXY7vieBiTNOZb9eXAc/aAdrL bn/sQtUf14YBZJ8iFAXdgqa52iE3gmMB3XH0GnV+F1kaExYO4OuxFxx1zhxvVdPx8m9X pB7SuXH4hHpN9z8A1M9rA3zWMqGpiyADyD+0mIZ26BLgmY2xiVXZd3fOKVtCYmczFh9P kzvDW4Poa13Qp77YSUh9IxJ7sSU56maP3zj9xQbe48ukIImPWKDZ5Z4aAqo+Y+rtXuKL bKTnu1XsZEz7L3NaleJ7O9bgy9uwS7HEfqYySjia82WpE5muPb1UaktUeH5vJBfOrwd9 UmxQ== X-Gm-Message-State: AOJu0Yw0iq1Wx9wHvjhL/f90uE3h1EiTjAGuAPl7xGBOlkNE52TQmsYA 5QrE3UTLCpfB3GNZBNc4XqsT1qqqAD6v4Nv1hz7Xwe4N1iL5sJmbvNSFmJ227SbgzQ5Qii/mFpq BdLzb X-Gm-Gg: AR+sD10etDGaCEzZXLUwNnyOkA4BHkR9jfm+GM4N65x6q4n2RORFUawOR2jbOPA4X7l nv9HkyWMKTaGXLVOeszDygjaygFswurzGjQ2FShpKSHddMXSW+TPDTBR54XgVspRKDYz5im78ms bkGtdvY+pPtB4/HDL9pzTBQFImf0n27NpbYcgYppukK8SKDviVC9zLqdQ+p0uYJL6qgEHgW5zHw C0i08yminiOzZJTlKjUoCbjlfzW3WgnOlqnXtmx45mbUF9g3vT5dXFR/kzgYM0kJohQSyhIgv35 4FIBn0Z1e+1vpAwOvvs/QdpSO7aC7EDLMTg65+agbWSMzPLer5VBLsPH6W4XzSdmiu/D8Gx9w83 GlTQt6+XPgoEYYxaGhDnyckfolfrnhbkmHV3Wirj3vJ0++mLvnLuaTWI7R6a3krf3voNYT582tQ Q+E+D2RTv+Y5v5DTX0B265T3GBuuCE6BOxDzGFvXI/i18i/+89TqmyojPDY4zWIL4N9XtADqCIB vAYAuUpLcnFa5qTGJxQbyPKduokiPMfXQeLcFsZz4j1vZ0f3hL8l7RIiZ/U1t7VevGryw== X-Received: by 2002:a05:600c:3f0c:b0:495:4d5c:903e with SMTP id 5b1f17b1804b1-4997c10aebbmr70356695e9.7.1786536995573; Wed, 12 Aug 2026 05:16:35 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 06/26] target/arm: Implement FTMOPA (widening, 2-way, FP8 to FP16) Date: Wed, 12 Aug 2026 13:16:02 +0100 Message-ID: <20260812121622.649730-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537073897158501 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-7-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/fp8_helper.c | 43 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/sme.decode | 2 ++ target/arm/tcg/translate-sme.c | 12 +++++++++ 5 files changed, 64 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index d3bf0746cb..1ab6c90b8c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1852,6 +1852,11 @@ static inline bool isar_feature_aa64_sme_tmop_f16f16= (const ARMISARegisters *id) return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f16f16(= id); } =20 +static inline bool isar_feature_aa64_sme_tmop_f8f16(const ARMISARegisters = *id) +{ + return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f8f16(i= d); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 4b046f5f26..305cafdc9b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -1005,3 +1005,46 @@ void HELPER(sme_fmop4a_hb)(void *vza, void *vzn, voi= d *vzm, FP8MulContext ctx =3D fp8_mul_start(env, 0xf); sme_mop4(vza, vzn, vzm, &ctx, desc, sizeof(float16), inner_fmop4a_hb); } + +void HELPER(sme_ftmopa_hb)(void *vza, void *vzn, void *vzm, void *vzk, + CPUArchState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t dim =3D oprsz >> MO_16; + intptr_t index =3D simd_data(desc); + intptr_t ctrl_base =3D (index * oprsz) >> 1; + uint8_t *zn0 =3D vzn, *zn1 =3D vzn + sizeof(ARMVectorReg); + uint16_t *za =3D vza, *zm =3D vzm; + uint64_t *zk =3D vzk; + + for (intptr_t row =3D 0; row < dim; row++) { + uint16_t *za_row =3D za + tile_vslice_offset(row); + + for (intptr_t col =3D 0; col < dim; col++) { + uint16_t e2 =3D zm[H2(col)]; + uint16_t *e3 =3D za_row + H2(col); + uint16_t e1 =3D 0; + + /* + * Four control bits select two elements. The two elements + * may be non-contiguous, so assemble them locally into e1. + * Pseudo-code has a double loop running forward, with a + * test for (i < 2) to limit construction to 2 elements. + * Easier to run a single loop backward, shifting extra + * elements off the top of our uint16_t. + */ + uint64_t this_ctrl =3D extractn(zk, ctrl_base + col * 4, 4); + for (int i =3D 3; i >=3D 0; i--) { + if (this_ctrl & (1 << i)) { + bool e =3D i & 1; + bool r =3D i & 2; + uint8_t *p =3D (r ? zn1 : zn0) + H1(2 * row + e); + e1 =3D (e1 << 8) | *p; + } + } + + *e3 =3D f8dotadd_h(e1, e2, 2, *e3, &ctx); + } + } +} diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index dedbd8541c..13be62aa15 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -47,3 +47,5 @@ DEF_HELPER_FLAGS_5(sme_fvdot_idx_hb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(sme_fmop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) DEF_HELPER_FLAGS_5(sme_fmop4a_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) + +DEF_HELPER_FLAGS_6(sme_ftmopa_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 5c453ea729..da6f4686d3 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1148,3 +1148,5 @@ FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 0= 0 .. @tmop_o2 =20 BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 00 .. @tmop_o2 FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 00 .. @tmop_o2 + +FTMOPA_hb 1000 0000 011 ..... 000 ... .... .. 100 . @tmop_o1 diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 8a55b79727..206f078bfb 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2167,3 +2167,15 @@ TRANS_FEAT(BFTMOPA_sh, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ENV, gen_helper_sme_bftmopa_sh) TRANS_FEAT(FTMOPA_sh, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ENV, gen_helper_sme_ftmopa_sh) + +static bool do_tmop_fp8(DisasContext *s, arg_tmop *a, MemOp esz, + gen_helper_gvec_4_ptr *fn) +{ + if (!fpmr_access_check(s)) { + return true; + } + return do_tmop_fp(s, a, esz, FPST_ENV, fn); +} + +TRANS_FEAT(FTMOPA_hb, aa64_sme_tmop_f8f16, do_tmop_fp8, + a, MO_16, gen_helper_sme_ftmopa_hb) --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537049; cv=none; d=zohomail.com; s=zohoarc; b=OdnuJqnVhaHUpz5apCftRrgDwBDu+3scMYeNZRQ2xj5WVnVVw+lsKOJZ7ICowMyohMQHcccyhOjpmoFRkRCoIJjK2JOvfUVX8YRurODZOaiisfYD0I39HppgNdX8fC9Ijcz2RfQS3JVqm9cNOxH6xS9vT7FGQXMVutWuAeMGSjg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537049; h=Content-Transfer-Encoding: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:Cc; bh=WuaHOxeAnhceyL4m+VMh1cqQu77uUg/5cvN9Mt8k7Qo=; b=aEVcP03CDHMbxbijJLE62/jtZvxqJTvLZucaz+fN5YwSfWo4JDrIWmd7I2cmMLkbRVrmUo1sL8RgX6b60AByh1Yn6XCdAYBiyvhi+WTHQLDRql/UJb2GY6ZcBmzZrIkaC4tCMlzSu1to/PKa3vY0WZ3TDXMTmLkmeujaZ6il4u4= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178653704929841.6495604745254; Wed, 12 Aug 2026 05:17:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t1-0004JB-SO; Wed, 12 Aug 2026 08:16:47 -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 1wu7sw-0004Ak-B0 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:44 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7su-0008UO-Cf for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:42 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-47f7027ca11so551124f8f.3 for ; Wed, 12 Aug 2026 05:16:38 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786536997; x=1787141797; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=WuaHOxeAnhceyL4m+VMh1cqQu77uUg/5cvN9Mt8k7Qo=; b=TezHC/Iz6H0EL5Be3CKQME7M4tuC+EWQgUzJnnoyOuJZmz0ZaSwIIJ0A5eXqHYhWzh NkHUeDi3GQVN5Bhg1TQoo0s/fFz2LrUV4t6/cIov87sclo2bPLQgi2sLovlOJJV37g4F tI69OXSCjXhi4K/HoPrNaLS/PC/75R4wlYuPBK7x+vTn/GiA9JJp8p2vNrO8XdjMaqn0 M9LRnnzu3gK4DaqN8+ps+rmA6et1pp34NQ3UG506i8mntxf8sWaiVOlJDn8ZuW76H02M SXKGMRh2ErF92P8aim4ynRwDSsYCCbh/YB3OtWP0mHSok6wESaFD+wGxjtXQFowuet2j q/Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786536997; x=1787141797; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=WuaHOxeAnhceyL4m+VMh1cqQu77uUg/5cvN9Mt8k7Qo=; b=nyPQkrXbs1yTQtwOY5FTZiQyq60HBcnGr4YFZBq1zdOHjpLFjJX9YXzgSP3qnJ7n++ SvPE1GEDwGi29GfTwKFCPke2vanXTjV4zs+5X5d4AkAJ2XpuXVuQN9+8EMhO8/dzNOyl JouBwgq/ZdoqwI98B+30H8KlTDH9GfXxpJjjpcaJk8t7o/8+bWiaG724N+kPCwieBMOy CrvDLCSmvWcUPYN0BlMYFUvsgjte0DAS0ZmNQiAE3P6EuAsNlaCiIJvDeEX1dx+MgrbS q/Y9sVBcV9mfH3EoHqW8j9R/ZrG713KpDAoPIFP59tEBfz2ovyLOTyo8laAEF6wNqdNP GXaQ== X-Gm-Message-State: AOJu0YxstwEZmZnEgCdLDrQ9ZyztdpzCUx3iv8v4g6dhx+peu5WPULVp LDtTKFo0LDyn4Ppj4buHYk6N4BGrWJPvuiJ0m8XO3hRyRfKpOKGay8LYTw8wA+u4zcw5rI3Htnp dVC3W X-Gm-Gg: AR+sD12YUCORwMyG1GMoOHRY2E2xI0QsPaHIsht0pEexWHBHocsxoi8CP2Gqpv+AEI+ 9PDQmVoNljgE2SdNuj/uBgNKaJSNCQr2//UuDoDcV0pvR4b6WJ6tN/cNh4+V5fZzjN5I/hEt6ln VKEca8lKlIl+FPesNmXvb8w6AeMXJ0QZB4tk3SOF/zNwCZeEPLd8mCkd0NH/zKy3SnuNwcTAl5b 7WJhT+9RgTAXpBhw43MnG/HAdL2MTfCqFQpQ6l3bmcHH61B/Bn3dwGX9lmb5Xj4zDNRU/EMBNgL PkKE86/e1nxtsTE9BFryszSZifXo5o5m/FteIdZFD+nOXrW/7Mrc9/trjr+fSREGEsMLDDgCdBt WG7kU6So87LEm8ZqXqKMgiwDejwKmaVU5fkyQB6fZxjcduX1PQeztpJOBxlrlMsu1SplyUUDmM6 5VoUbpjLd880+E4aAZAk+4SWBrSvEBw67mhtqVHj1cmCnLE+4p5/It5heNnm1QCbMZ0p1ClCCYz WOsdFdklxeFV/rOWNQ1j49yC9DF2koCotfdrHVxd3LcclTWV/yh9Em7zTtQgrQPvI1ADSNtVY7C rnte X-Received: by 2002:a05:600c:19c6:b0:499:7a5e:4c3f with SMTP id 5b1f17b1804b1-4997c0fcab7mr66816895e9.1.1786536997390; Wed, 12 Aug 2026 05:16:37 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 07/26] target/arm: Implement FTMOPA (widening, 4-way, FP8 to FP32) Date: Wed, 12 Aug 2026 13:16:03 +0100 Message-ID: <20260812121622.649730-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537049775158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-8-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/fp8_helper.c | 7 +++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/sme.decode | 1 + target/arm/tcg/sme_helper.c | 44 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 2 ++ target/arm/tcg/vec_internal.h | 7 +++++ 7 files changed, 67 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 1ab6c90b8c..280ead6f9c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1857,6 +1857,11 @@ static inline bool isar_feature_aa64_sme_tmop_f8f16(= const ARMISARegisters *id) return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f8f16(i= d); } =20 +static inline bool isar_feature_aa64_sme_tmop_f8f32(const ARMISARegisters = *id) +{ + return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f8f32(i= d); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 305cafdc9b..0be811e71b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -1048,3 +1048,10 @@ void HELPER(sme_ftmopa_hb)(void *vza, void *vzn, voi= d *vzm, void *vzk, } } } + +void HELPER(sme_ftmopa_sb)(void *vza, void *vzn, void *vzm, void *vzk, + CPUArchState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + sme_tmop_4way_sb(vza, vzn, vzm, vzk, &ctx, desc, inner_fmop4a_sb); +} diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 13be62aa15..e2cf2ba8c7 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -49,3 +49,4 @@ DEF_HELPER_FLAGS_5(sme_fmop4a_sb, TCG_CALL_NO_RWG, void, = ptr, ptr, ptr, env, i32 DEF_HELPER_FLAGS_5(sme_fmop4a_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) =20 DEF_HELPER_FLAGS_6(sme_ftmopa_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) +DEF_HELPER_FLAGS_6(sme_ftmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index da6f4686d3..eab1f7e8fb 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1150,3 +1150,4 @@ BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 0= 0 .. @tmop_o2 FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 00 .. @tmop_o2 =20 FTMOPA_hb 1000 0000 011 ..... 000 ... .... .. 100 . @tmop_o1 +FTMOPA_sb 1000 0000 011 ..... 000 ... .... .. 00 .. @tmop_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index c2b7c23d6c..3d7aefac5b 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2723,6 +2723,50 @@ static void sme_tmop_2way_sh(uint32_t *za, uint16_t = *zn0, uint32_t *zm, } } =20 +void sme_tmop_4way_sb(uint32_t *za, uint8_t *zn0, uint32_t *zm, + uint64_t *zk, void *fn_opaque, uint32_t desc, + void (*fn)(void *, void *, void *, void *)) +{ + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t dim =3D oprsz >> MO_32; + intptr_t index =3D simd_data(desc); + intptr_t ctrl_base =3D (index * oprsz) >> 1; + uint8_t *zn1 =3D zn0 + sizeof(ARMVectorReg); + + for (intptr_t row =3D 0; row < dim; row++) { + uint32_t *za_row =3D za + tile_vslice_offset(row); + + for (intptr_t col =3D 0; col < dim; col++) { + uint32_t *e2 =3D zm + H4(col); + uint32_t *e3 =3D za_row + H4(col); + uint16_t e1l =3D 0, e1h =3D 0; + uint32_t e1; + + /* + * Eight control bits select two elements from each row. + * The elements may be non-contiguous, so assemble them + * locally into e1. + * Pseudo-code has a triple loop running forward, with a + * test for (i < 2) to limit construction to 2 elements. + * Easier to run a single loop backward, shifting extra + * elements off the top. + */ + uint64_t this_ctrl =3D extractn(zk, ctrl_base + col * 8, 8); + for (int e =3D 3; e >=3D 0; e--) { + if (this_ctrl & (0x01 << e)) { + e1l =3D (e1l << 8) | zn0[H1(4 * row + e)]; + } + if (this_ctrl & (0x10 << e)) { + e1h =3D (e1h << 8) | zn1[H1(4 * row + e)]; + } + } + e1 =3D (e1h << 16) | e1l; + + fn(e3, &e1, e2, fn_opaque); + } + } +} + static void inner_fmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) { float16 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 206f078bfb..ceed864da8 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2179,3 +2179,5 @@ static bool do_tmop_fp8(DisasContext *s, arg_tmop *a,= MemOp esz, =20 TRANS_FEAT(FTMOPA_hb, aa64_sme_tmop_f8f16, do_tmop_fp8, a, MO_16, gen_helper_sme_ftmopa_hb) +TRANS_FEAT(FTMOPA_sb, aa64_sme_tmop_f8f32, do_tmop_fp8, + a, MO_32, gen_helper_sme_ftmopa_sb) diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 038a2a3439..8f6d8a984b 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -555,4 +555,11 @@ void sme_mop4(void *vza, void *vzn, void *vzm, void *f= n_opaque, uint32_t desc, size_t esize, void (*fn)(void *, void *, void *, void *)); =20 +/* + * Perform SME sparse outer product, 4-way, 8 to 32-bit. + */ +void sme_tmop_4way_sb(uint32_t *za, uint8_t *zn0, uint32_t *zm, + uint64_t *zk, void *fn_opaque, uint32_t desc, + void (*fn)(void *, void *, void *, void *)); + #endif /* TARGET_ARM_VEC_INTERNAL_H */ --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537189; cv=none; d=zohomail.com; s=zohoarc; b=ZzAoXpQKDBZ/B6OnMpO16tIKRfdfIT8g/RIjBMCu5K0OiSPrsj8VC4sMUx2I4ZxYk0aovQ+9qtEPyk/5EmN2H911i4B7Cu1SUy9JpaK69sNKea/55DQcuLHlqSkm8t+OUZwNfngAYpzscGUhIGQ8Nmfy2Is+tqU0qCo81KBlFhU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537189; h=Content-Transfer-Encoding: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:Cc; bh=HH1Tjck6mfsSFkv7E1jUghmyvA+pXIFCdFnWrXtnkGc=; b=O2ixJB7u+ACY6tK/+pEqg7GWgX/yJ5X+GQaQyEPm9RsOYERNqdt6Hrxqt8ZdTheeVpBUZGFL3flk8l9zVwbuJD0nOCDSbhgWye+PvBWI7AJ+7eZXO9iFxIn7+XDThc7cycavwVMl1Mbyq5IpVNYBuo2b2pL+ytSOvrDZAkS5b4c= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537189045584.2979391696871; Wed, 12 Aug 2026 05:19:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t3-0004PZ-Cv; Wed, 12 Aug 2026 08:16: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 1wu7sw-0004Au-K0 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:45 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7su-0008Ub-Da for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:42 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-496bb7cdf51so10115565e9.2 for ; Wed, 12 Aug 2026 05:16:39 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786536998; x=1787141798; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=HH1Tjck6mfsSFkv7E1jUghmyvA+pXIFCdFnWrXtnkGc=; b=nncm0BOOTfUlrcC+NADhGnUSmsaF2f2BVDB1HvXNlcaEJ5+FOOfSitN/sbphS/lgl2 d2Dqhl+iljLDnU10dQWcvcOunxrKxyrthau+IDMAVAoMZemI/0cOGwqe9HLDpXyDxc0A B/IzJBxKegdGHWSvC2MoP37Bdq0pTk+GdVzAlmo2JwSiRBodNufgrYzH0pXbA6qvYVm4 15O89SAXUDcJ5H6JIqC5eX9pM02z5CnMGjigAayQi+6GvO+vCDONkCmh+74K2AQgm3pg dFmyM458w0oySB9J9smTVLV1N1V1NKw8WpFWg+ySJ3s0aRNwOVPVEWMAcN/KViLEMRk+ RWWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786536998; x=1787141798; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=HH1Tjck6mfsSFkv7E1jUghmyvA+pXIFCdFnWrXtnkGc=; b=BdhYptjhEmPfHs/k2IjnJsDp0kj9RJYQ/HuSATAtzmFrhQ0+jJ5aHKi50+QHw0ICeE gqtejInRHZFSSgkS29RwESTrXDFfIZK/jh+cULJhqS3YTBpzab0ZwtCOZN0v2c2NM6HV 4kewg48JO2tmSi/PFv2oV8OaOCWq4svsQuwNXn7DfBRR1z6FJxVpZWzc4i7+1cE9eIZt 3Rt/sYs5XdHP52LzhX/dIY/gNJjvQeQm7tUcKz9+lUETnIFCVkUdo7iditjeMeU/Xk3I SB5UCPMOi1L6f6OSl8Oi698zr4hD3yxSyOfvxHjOortgnZVAfUBo91aPfASJV9JwFuYK Alig== X-Gm-Message-State: AOJu0Yx6eORaVO8S7pSspcOyKHftuh8cCcCu1LrpkLUGOw+FlNVPoqCO +nAxYUqjASyox3hQmQzQbv3NL8B7hsPHpWJK2e329HKZM9LcOm7ZD3y8Bndjz4WWIg/MIyw+gij ZTdW3 X-Gm-Gg: AR+sD10E95ymZQ7ctlmJu+pqlulQpEV5zXBGkx1QRc7GNzFg0GYovTgs+/Y+0b5yO+n ZJTqFS1H8tn2sB4b0nQOvh7r91TLDwWA8ySGNuu6XrKndlvhSyzEDhg7KYOKUh2wu9n4kYaULHR Ve495AfVWkpy/oFfDskaIcYLo489b2W9D2AUmUW5U27+jcgw9a6wLhRsJjdS3rVhl4dKCjTL9xf iFcJoI27rFe+GIgwOAJ8wLC0D9ov/WVSHHOVOWULfxbLgijb6J+ltu4UoFb35lw0+uocqfJoF6l 1ApgxnTo2Mdnf+k7EiT9HX6aFTHjr9RUX4I1CUAP+tpgpnR+SQtqKk0v3YuHaG4RE+E5HUD/RYS ouUifKv9pAWGr0IVO1lMfqU7a8e0HU343aI3aRIYPD1T5YCzf35rMS+nkZ6sN92o60jzf98TMDZ sQbapw9YFPsJ2neFWvF5156ClnOwD5iPjs4fVCfwzx2J/Ko2a7WjyhvFGuEGr0ymvwF0AP67diS ahaUit3kM8/3UES1MDr252waTapPhW0WxFJ7mWHzGNavA2xCCdExCguV8D/vExootsogw== X-Received: by 2002:a05:600c:1991:b0:498:162a:dbda with SMTP id 5b1f17b1804b1-4997c0df1f7mr45531085e9.5.1786536998381; Wed, 12 Aug 2026 05:16:38 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 08/26] target/arm: Implement [SU]TMOPA (2-way) Date: Wed, 12 Aug 2026 13:16:04 +0100 Message-ID: <20260812121622.649730-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537190973158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-9-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 3 +++ target/arm/tcg/sme.decode | 3 +++ target/arm/tcg/sme_helper.c | 12 ++++++++++++ target/arm/tcg/translate-sme.c | 21 +++++++++++++++++++++ 4 files changed, 39 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 8a959447b2..1de72b7472 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -411,3 +411,6 @@ DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, ptr, fps =20 DEF_HELPER_FLAGS_6(sme_bftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, env, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) + +DEF_HELPER_FLAGS_5(sme_stmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) +DEF_HELPER_FLAGS_5(sme_utmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index eab1f7e8fb..08036c60c0 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1151,3 +1151,6 @@ FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 0= 0 .. @tmop_o2 =20 FTMOPA_hb 1000 0000 011 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_sb 1000 0000 011 ..... 000 ... .... .. 00 .. @tmop_o2 + +STMOPA_sh 1000 0000 010 ..... 100 ... .... .. 10 .. @tmop_o2 +UTMOPA_sh 1000 0001 010 ..... 100 ... .... .. 10 .. @tmop_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 3d7aefac5b..951cbbf58e 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -3123,6 +3123,18 @@ IMOP4_2WAY(umop4s_sh, -, int32_t, uint16_t, uint16_t) =20 #undef IMOP4_2WAY =20 +#define ITMOP_2WAY(TNAME, MNAME) \ +void HELPER(sme_##TNAME)(void *vza, void *vzn, void *vzm, \ + void *vzk, uint32_t desc) \ +{ \ + sme_tmop_2way_sh(vza, vzn, vzm, vzk, NULL, desc, inner_##MNAME); \ +} + +ITMOP_2WAY(stmopa_sh, smop4a_sh) +ITMOP_2WAY(utmopa_sh, umop4a_sh) + +#undef ITMOP_2WAY + #define IMOP4_4WAY(NAME, OP, TYPED, TYPEN, TYPEM) \ static void inner_##NAME(void *vd, void *vn, void *vm, void *vinfo) \ { \ diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index ceed864da8..abdf98a40c 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2181,3 +2181,24 @@ TRANS_FEAT(FTMOPA_hb, aa64_sme_tmop_f8f16, do_tmop_f= p8, a, MO_16, gen_helper_sme_ftmopa_hb) TRANS_FEAT(FTMOPA_sb, aa64_sme_tmop_f8f32, do_tmop_fp8, a, MO_32, gen_helper_sme_ftmopa_sb) + +static bool do_tmop_int(DisasContext *s, arg_tmop *a, MemOp esz, + gen_helper_gvec_4 *fn) +{ + if (sme_smza_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, a->idx); + TCGv_ptr za =3D get_tile(s, esz, a->zad); + TCGv_ptr zn =3D vec_full_reg_ptr(s, a->zn); + TCGv_ptr zm =3D vec_full_reg_ptr(s, a->zm); + TCGv_ptr zk =3D vec_full_reg_ptr(s, a->zm); + + fn(za, zn, zm, zk, tcg_constant_i32(desc)); + } + return true; +} + +TRANS_FEAT(STMOPA_sh, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_stmopa_sh) +TRANS_FEAT(UTMOPA_sh, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_utmopa_sh) --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537137; cv=none; d=zohomail.com; s=zohoarc; b=K6g9KqOAzII4pZq89JW0Udjy0VmcPnHVTA1Duw4zflneXX0z+Eauo6Dsax+BhugajAmiy6h5cE7EkpyQ/3e7sQDx6X+5YQ5r0flGkgrnWjBaVLlHLWjXmpoemHRhMpdQr08KWMDtw8aHLomwc1j22d3B9tsLzaDfQjcwpOaGNXM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537137; h=Content-Transfer-Encoding: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:Cc; bh=FnEhw5l35Ojo4FkzasV2AQd6Y48VBPRwnwdLMQCdWGQ=; b=Pl/r8QnJmOIOwmUQQoIcrTh0JHBskVSciOaGDDxBaxRVsl7atjJWelG3j+Bykzfia6r4NgRZUyUldqnpxCZvIySb712CpFFhSTGRl7eMhSzkUSgSVbQS+2FSW7nONmDKVN6plNtSUDAkZtG6smxnB3rtOiMTYLSMkp2/ggjA0pY= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537137451675.3649891927247; Wed, 12 Aug 2026 05:18:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t2-0004Lc-M7; Wed, 12 Aug 2026 08:16:48 -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 1wu7sy-0004B3-La for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:46 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7sv-0008V4-O5 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:44 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-480001972b8so325299f8f.2 for ; Wed, 12 Aug 2026 05:16:41 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537000; x=1787141800; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=FnEhw5l35Ojo4FkzasV2AQd6Y48VBPRwnwdLMQCdWGQ=; b=t5Z2L0splvjjiRBnAx+uo5SEOwTWxA6US9L2VogY3ihcwtGYt+KnBG6lgGNh52/7DA Ubhawn21a3z+VSPXOWoIENndhVFPr3HMtAYHSs8YDsEXBhDVvmPLx+lcjdLK6yKxZnmd zcR1kUF7KRguMTIujjLRissgFuigEpIW+OPV2W+yyFcc+2zB4Snv2F4ORyOM5LmQ5pX2 rrObmhzL+DYt8jb578HLSW4+peQGgvoq9U/lIpQRBxiALmo+yhR66q4ILGpWZq6GX2S8 qOquto4Mzh81tLZrcSoNIusC7OY1yOfpisp7cFYJBS8JGnrDslKaRmZVLahyJu64SKGh spug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537000; x=1787141800; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=FnEhw5l35Ojo4FkzasV2AQd6Y48VBPRwnwdLMQCdWGQ=; b=NPPpNl3AUW2gKO4Jer/n1LiH0pGHZUAfqY8XVlLXx54BbDK4Wk5XwFx1x4+/BmXSE8 OAVNJEClWo6ysoX9imluLs2v2Q2ySViG+Uix2RzDR+LYVUUNKDC942/5xXIs9sJGwHbR rd+bhcbH7tyre9qQmWPOUMwwGN7x5Pn0jMU4Uqe6hW4DWEzMrwCeXXiXcpq9GJwT25Fk EV+vKFkE2wJvKWbxdlDyW5ders+N/tKqGjFXuNqYnKZTjTfMHYHnTfsPndkMFhCYJFVv AFQkDdb1SNcnMcFUTQvDyfZZKkWeR7h5f62kn9T+OToQzHIBzg7q2tPEVP/RZJWLOf/I YUbQ== X-Gm-Message-State: AOJu0YzC6GVDV0if2XijZPHZTpF2P1SFFKPMm00V6RfBMYpvXCOxJEBo KdJsdY5Wax89pTggKj/aWufwPidCwaPLRCkwwzZHIQyINc0aTmZThNC9H2/cbQ/Lc8sjQtdleWd ZBfDU X-Gm-Gg: AR+sD12H0fFhur/0DCd+VwNmixMMCeu7aSidoDWVKdQ3MlmRxkeFEAU1OQpf/pQsFRU TcbZv4YxoJQxo42oF9xWTVSfQm08a6mIb7IkD7tOWf48SdVT73+fc/m07N39Gq3lhY5eX7FD1sT a/xCf/ZZgN3XkeHxnUlXlPI2IlyQuC5isTvxZEphNVuB31nzHoKWCtxtMi4XuWV8CwLrdzIKGDr z5HPRhCKtv3Z96nBZ811oufmW+iKH/NkB5K3vpjou4W3XWJgTdgXwLHxIpVfVJa0SLfJL8hlJx3 Rk9C2vbALPHB0S1UfGcmwCI3N5vYPxBO04NcVWKMYuRzx10VQrpLqQvTw7IONyeSkRIhp/Xp5ol rcJpxyrhytwN0cyZeHOYB/Xv6vVbld2z6gd1Auf6Xefb/2vWA8VpzLVsi06G1hLgmowHi+U1fx6 HP61f3hDyKK6d+erqOiJJYU6/3106+Nym2H1723TJ8w7W4sK+klZgtYCmBXCtzjpu+4JO/rkJdd IhdjR3wHd426rwa5jm0tgO9fWGiltTE+OeMA7KBjcX6Qw4iZtusVHLJ0qXTvAoik05ubQ== X-Received: by 2002:a05:600c:3ba6:b0:493:e451:a9e1 with SMTP id 5b1f17b1804b1-4997c0e3812mr57261625e9.2.1786537000109; Wed, 12 Aug 2026 05:16:40 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 09/26] target/arm: Implement {S,SU,US,U}TMOPA (4-way) Date: Wed, 12 Aug 2026 13:16:05 +0100 Message-ID: <20260812121622.649730-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537138275158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-10-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 5 +++++ target/arm/tcg/sme.decode | 5 +++++ target/arm/tcg/sme_helper.c | 14 ++++++++++++++ target/arm/tcg/translate-sme.c | 9 +++++++++ 4 files changed, 33 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 1de72b7472..b8cb643367 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -414,3 +414,8 @@ DEF_HELPER_FLAGS_6(sme_ftmopa_sh, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, ptr, env =20 DEF_HELPER_FLAGS_5(sme_stmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) DEF_HELPER_FLAGS_5(sme_utmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) + +DEF_HELPER_FLAGS_5(sme_stmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) +DEF_HELPER_FLAGS_5(sme_sutmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, i32) +DEF_HELPER_FLAGS_5(sme_utmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) +DEF_HELPER_FLAGS_5(sme_ustmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, i32) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 08036c60c0..e8176fffdb 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1154,3 +1154,8 @@ FTMOPA_sb 1000 0000 011 ..... 000 ... .... .. 0= 0 .. @tmop_o2 =20 STMOPA_sh 1000 0000 010 ..... 100 ... .... .. 10 .. @tmop_o2 UTMOPA_sh 1000 0001 010 ..... 100 ... .... .. 10 .. @tmop_o2 + +STMOPA_sb 1000 0000 010 ..... 100 ... .... .. 00 .. @tmop_o2 +SUTMOPA_sb 1000 0000 011 ..... 100 ... .... .. 00 .. @tmop_o2 +USTMOPA_sb 1000 0001 010 ..... 100 ... .... .. 00 .. @tmop_o2 +UTMOPA_sb 1000 0001 011 ..... 100 ... .... .. 00 .. @tmop_o2 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 951cbbf58e..9de95428d2 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -3168,3 +3168,17 @@ IMOP4_4WAY(usmop4a_dh, +, int64_t, uint16_t, int16_t) IMOP4_4WAY(usmop4s_dh, -, int64_t, uint16_t, int16_t) =20 #undef IMOP4_4WAY + +#define ITMOP_4WAY(TNAME, MNAME) \ +void HELPER(sme_##TNAME)(void *vza, void *vzn, void *vzm, \ + void *vzk, uint32_t desc) \ +{ \ + sme_tmop_4way_sb(vza, vzn, vzm, vzk, NULL, desc, inner_##MNAME); \ +} + +ITMOP_4WAY(stmopa_sb, smop4a_sb) +ITMOP_4WAY(utmopa_sb, umop4a_sb) +ITMOP_4WAY(sutmopa_sb, sumop4a_sb) +ITMOP_4WAY(ustmopa_sb, usmop4a_sb) + +#undef ITMOP_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index abdf98a40c..768b76f01e 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2202,3 +2202,12 @@ TRANS_FEAT(STMOPA_sh, aa64_sme_tmop, do_tmop_int, a, MO_32, gen_helper_sme_stmopa_sh) TRANS_FEAT(UTMOPA_sh, aa64_sme_tmop, do_tmop_int, a, MO_32, gen_helper_sme_utmopa_sh) + +TRANS_FEAT(STMOPA_sb, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_stmopa_sb) +TRANS_FEAT(SUTMOPA_sb, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_sutmopa_sb) +TRANS_FEAT(USTMOPA_sb, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_ustmopa_sb) +TRANS_FEAT(UTMOPA_sb, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_utmopa_sb) --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537197; cv=none; d=zohomail.com; s=zohoarc; b=m8tbo7bPyJw8yNSvTw4J30SchQ/MFfk1Awt2CI+befkgCnankwVNWHFGWpmnCJ6pqQroe1JjP+aK5UcMHfwZzRertm5ASn1NrvgY/FN1EXqN7aA3CEy2V/dXBevYeS9oRfgGWTV0imEGdvMDo2OW+HV/HvrjCOAOyNr1f3WUbWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537197; h=Content-Transfer-Encoding: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:Cc; bh=LsoLDHnYghJUoEKHkwC8XnaFsRjiPcziLwYSVW0Jgvk=; b=KVK2g4O8tK3sTCz3RZBtpg60yOdMnEaQsNKVW/tjT3KQPyfl+ul8z55/S2jRFRq7y2toE0F6tgLuICPSLiU/Zttc4MQybp5hG1TBtFNYyWacFvAtpJgN4ELK117xoZh/d4vczU1DXmvJsWZJt4ldutbDuPce6LRTAIX7R8MNNts= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537197795250.09938140976703; Wed, 12 Aug 2026 05:19:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t3-0004Pj-Eo; Wed, 12 Aug 2026 08:16: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 1wu7sy-0004B4-TP for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:46 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7sx-0008VK-8B for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:44 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-47f6609c657so395544f8f.2 for ; Wed, 12 Aug 2026 05:16:42 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537001; x=1787141801; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=LsoLDHnYghJUoEKHkwC8XnaFsRjiPcziLwYSVW0Jgvk=; b=Ly5ZJEAHsQOUMfsnGzZf6uYJrVMEszT6prdwQnylF3SIr2pBSTE3Ju6Gw/7ehUZQwV 6rK2eIBUjHuoVxAnPhjWYqxk01qZHPP4mfR8TSEGxmBjFs6kVJLlVial2lG1E6t1onP8 mE5gTgx4Oja497O67y5Dyv0jqiQZ2K+zYbwRmn1EJcFRFj3ezi1F4T2BUHcg1rDJd/0k iuFp13dGwzCxMC4Jd/R5XLDu/vcuXfCQPbp0QA8fSsSRKD5iu7Y1DedIFpGGNQxoGoK9 psDpU3R1H35HV7QMcRKhXkBUDly6a02c/50tqD70Xtex7Bx12fc2DR5bj/yP5Y65VC8v tPgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537001; x=1787141801; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=LsoLDHnYghJUoEKHkwC8XnaFsRjiPcziLwYSVW0Jgvk=; b=KooBTo0VlI6ShjJ3A/9BRxUKDNTAFisyUph8vdNy9CqMhDthk1TY0Nnfgwqpnp/MQu y/39d0MSCo2rPLlWpEPGF0497Pg33LZvpyskNzehPYxz8dm0eUhZYSLq7GWHalWGDT4N ODa5Q/ZUd+B7DyXM5eLlEW0UgnFrxojediDuz7ksVFzbsJDdFqL+fwZGXNrbhbiFDOAq Yqv1+xc16PZcaGmWfvajtazXP3WoINcnIYQnwL6iYCIZzODYQfkI5abR7q8mIUAGAdaZ VyCWCXqLIYmIX891z6yxnYxWOHV6EI5iAh6UUcyyQyfip8/qDOOwsr+OOvhRAZgwRChL /b7g== X-Gm-Message-State: AOJu0YxyXYuAayDjR0wrRHtYyZmsU1MvCyXoLP4ooTCTrtHMQpc2/2vm /iaw3wIMkZg0+dIJ4yBHk4TfONsRbKB9usIW4uPVqAHh5Rw+zqdkg9V9iGq2cYULpnA+8VjTMhC 69gq9 X-Gm-Gg: AR+sD13J+qGtO1NCScG30M1NT7V7tKCgX2qlWlGg8NH5QZnZaCh/OFY/hNl4nV870Dk dgI4T2/ApPzbL5kksQE/UFBxe5xfOhk0ZeMrd6/JZipE/uxTBiI7GFrXh025iKIPnOdzT2xT742 1gCmzKeIrFxQEGeTP59U4cUPjQpVQ5lmN1LUowG7LGIzkiAsGberlWTHzW4ddtoUFUlHnNQmxhG ZrZLQZI+srqL139aztVurFeOMEyTWkQJmksdNYSamEXGHK+Iawpn2wWTpn6eNfD6BlOQi25wXPP sklZzS8r08U4U0brF2hzBJ8TuWIqx+KlW+h4Je8CozADkpzgooNofAxgVrDPx7+qrDSvnG28dJ3 s6KVqqoH8UPRovrrP35aAQw8zDJy9qMgG7wfPhH+xA8t3zfYeAiF3BVosiwDuSw9AyqUkQM2aeE uTC6cElZMbsgBBDXvmrYgMYKFXxj7+PDdB6zrZzEp131xgXIpZlH7Iqpgc3CJUyvu7y+6NlyFrU XZNoOTPg/5PF6EhXuFOXpNuCIDIEvDXTxw5YwLk77GFW6qseTR9YM7XZTkA4XOYSuoeJw== X-Received: by 2002:a05:600c:628d:b0:498:261:dd93 with SMTP id 5b1f17b1804b1-4997c18d823mr65316715e9.18.1786537001579; Wed, 12 Aug 2026 05:16:41 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 10/26] target/arm: Enable FEAT_SME_TMOP for -cpu max Date: Wed, 12 Aug 2026 13:16:06 +0100 Message-ID: <20260812121622.649730-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537198718158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20260713230244.70174-11-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 9930974a50..cc42db9e0b 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -188,6 +188,7 @@ the following architecture extensions: - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) - FEAT_SME_MOP4 (Quarter-tile outer product instructions) +- FEAT_SME_TMOP (Structured sparsity outer product instructions) - FEAT_SSVE_AES (Streaming SVE Mode Advanced Encryption Standard and 128-b= it polynomial multiply long instructions) - FEAT_SSVE_FEXPA (Streaming FEXPA instruction) - FEAT_SSVE_FP8DOT2 (SVE2 FP8 2-way dot product to half-precision instruct= ions in Streaming SVE mode) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 64e25a04e3..48be49580a 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -177,6 +177,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_ssve_fexpa, ARM_HWCAP_A64_SME_SFEXPA); GET_FEATURE_ID(aa64_fprcvt, ARM_HWCAP_A64_FPRCVT); GET_FEATURE_ID(aa64_sme_mop4, ARM_HWCAP_A64_SME_SMOP4); + GET_FEATURE_ID(aa64_sme_tmop, ARM_HWCAP_A64_SME_STMOP); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 8a3ebf6321..24f34947ec 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1384,8 +1384,9 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); - t =3D FIELD_DP64(t, ID_AA64SMFR0, SFEXPA, 1); /* FEAT_SSVE_FEXPA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SMOP4, 1); /* FEAT_SME_MOP4 */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, STMOP, 1); /* FEAT_SME_TMOP */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, SFEXPA, 1); /* FEAT_SSVE_FEXPA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, AES, 1); /* FEAT_SSVE_AES */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP2, 1); /* FEAT_SSVE_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537091; cv=none; d=zohomail.com; s=zohoarc; b=FHN1b8I0t082YCrMHhA2etmb84r3uuLYzonCZV8a9vFesFCMEo6dTpywUOlmZjrWfyw01dairnHdElp4XRGi/VmTfuUpXcyRenFA+8K/UTy0Xy0+/Fn56fKTHbf4aO5R/PBHJMmD23TWc9Lknt+59Y/iAc9R3tWIFl1JCx7YNUg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537091; h=Content-Transfer-Encoding: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:Cc; bh=nCz1KUICojyw1swWpGy2FXgpXvTeFdwZsUVFSci4gcA=; b=GNK/dD0z3CCN4u7PSxmxRGZxbI+qgjgHpEaiyLG6e+uejCrdNdmFL1CxIYKldVEtqyT6Yhp6C4+Pmi2aGU47Bp7w45E+TtG3MWDToVNRdvbcJ5Pt9bfw4U75Xv4n2DQHQGvtQkgMrhYFYItJanbuCdS5CtkonHZWGomQn0veOb8= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537091259873.3574979540095; Wed, 12 Aug 2026 05:18:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t5-0004UR-4O; Wed, 12 Aug 2026 08:16:51 -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 1wu7t0-0004Dj-N6 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:46 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7sy-0008Vd-3V for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:46 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-496bb7cdf51so10116455e9.2 for ; Wed, 12 Aug 2026 05:16:43 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537002; x=1787141802; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=nCz1KUICojyw1swWpGy2FXgpXvTeFdwZsUVFSci4gcA=; b=P4MMRdAj109rZ57+PR6isXndrwlR/ESbvrHLzhU7i9D3hnTKdPxSWbBeJBQvQNPR4G N3MS2CbEksxzGS1e6FFtdkX4Z3hm9Q/qhyO0HrNaXwmcoXPZLOSQPNwBfD1puGDeuwjo r0mAagrND4GiuFk8rF2FXTlLvngXiA4mMc6pyftzaTC48iteBCbMIfm19BDwSQRpIzhC PjATEaECIXdfi/ULML6rFsZmNbSgqZXqZPwfofVzFGC2Kkn6l/fMD4ZIUCB95c02/tqc czvRMqEmoJv/oO0Fls2UWjIcggXnA8LsSJ8USR4a1m6dYSrFtbJ67JYiJTYRnaJX0Yo+ fGfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537002; x=1787141802; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=nCz1KUICojyw1swWpGy2FXgpXvTeFdwZsUVFSci4gcA=; b=AV+fuv5yN9tjWgCFHVAs/nLR4zs0tKXm5whHy8Jeu9aAuSNtUeNJzgpPj7OzvVzyUD qii48N6j0jaPCAe9AOPn8q73Kp5Pt3OOqsbBrypj8ylF/9JCDQgQo003mlbvHeb57EZZ Cqb+XW7WewOKXMZvd/jQ0c62kGcsmqvQCQgifPvl1iikKnWCX92wwHPbTwiXa/U2bkBA 0ycwNExZE3fImrcTGvhvjOVxOfD2HhQgWRWFElHqYh/pu6DzwZhvXVEaViXDq9OKGgWL F8JfrCHzgoBrdp2gO4ROzyDXZU6PiqrUelW7TNmbiqAS4ebqMdNUgwQdJF0vWz4bW1Kc sffA== X-Gm-Message-State: AOJu0YzPE20Rxiq4iUc8RhMsBI0yW0wKYPnUXTlMMj9GaFfjCsZmBJXJ 5BFIV52zUmr+h53Ioyz3VckKwQVLHGA2DjDY0zfD+u+RKplcFqB8QyCnbBsoZfoo3172SmFTfod Jkv4T X-Gm-Gg: AR+sD13y2vCEhnXwpdxVw6Wg2udBb47qod0VejaTU6ua8rfvZ/VPtJ7IEKerirRMsIJ Qdb0m0AwFCzmQRhq892WebpLIgPjSkG4Cttn063S85kctZQFmrgLb0Ro5zdXm8nYrosoqFGUWtF wmnSfbVaEYsibkMkRnnnCQO2bzRH4rNtDnF/elaIYnwhSTQyydnnbyXhvoDxO0Zo0Jv/0BTZY++ lgj8Jkw2DTpN3O8j1eRbEtueSxZtDUzDyFqGLCqmwwY9+WwynImPgAM8TP6kDMHoD/IOlYEsiHn 9s/EpZZ0dpyG14qNxcVSdlWEs0vdku+lvI4MqB4P+4XO5C8OArz+WirP6dcl8tDY8SKLLyBSEWu 6wVHbtlujpEDrWK4RK1Hiq1esj7W1gNMV7frgg6UyLJ2wmXdOka3JXj4u/UQaxY1ImcXojqkt3p BZD+MNozvyXAVrS0tGZ/RN5oHPN+gm+XdVOm4Lu69LBEmLBQU9tdZN2FYHUyYeKPUyutYAlcFEc qHr8q7cXUZSfc0bZ1s8SevMzgczX/LyAZ//vSPpIB8Z2SiY7mmMQ2X/rTi4jYplkCpZkCAY1618 9C9w X-Received: by 2002:a05:600c:4f87:b0:499:48be:3189 with SMTP id 5b1f17b1804b1-4997bf81217mr49838035e9.0.1786537002515; Wed, 12 Aug 2026 05:16:42 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 11/26] hw/arm: Add Axiado SoC AX3000 Date: Wed, 12 Aug 2026 13:16:07 +0100 Message-ID: <20260812121622.649730-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537092344158500 Content-Type: text/plain; charset="utf-8" From: Kuan-Jui Chiu This patch adds new model for Axiado SoC AX3000 which supports 4 Cortex-A53 ARM64 CPUs Arm Generic Interrupt Controller v3 4 Cadence UARTs Signed-off-by: Kuan-Jui Chiu Message-id: 20260713073033.3883619-2-kchiu@axiado.com Reviewed-by: Peter Maydell [PMM: Kconfig for the SoC shouldn't depend on ARM] Signed-off-by: Peter Maydell --- MAINTAINERS | 7 ++ hw/arm/Kconfig | 6 ++ hw/arm/ax3000-soc.c | 182 ++++++++++++++++++++++++++++++++++++ hw/arm/meson.build | 3 + include/hw/arm/ax3000-soc.h | 68 ++++++++++++++ 5 files changed, 266 insertions(+) create mode 100644 hw/arm/ax3000-soc.c create mode 100644 include/hw/arm/ax3000-soc.h diff --git a/MAINTAINERS b/MAINTAINERS index 4628793dde..fce65e370f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1300,6 +1300,13 @@ M: Manos Pitsidianakis S: Maintained F: rust/hw/char/pl011/ =20 +Axiado SoCs and EVKs +M: Kuan-Jui Chiu +L: qemu-arm@nongnu.org +S: Maintained +F: hw/arm/ax3000*.c +F: include/hw/arm/ax3000*.h + AVR Machines ------------- =20 diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 82e0bc2e70..2ed2c2c6e8 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -725,3 +725,9 @@ config ARMSSE select UNIMP select SSE_COUNTER select SSE_TIMER + +config AXIADO_SOC + bool + select ARM_GIC + select CADENCE # UART + select UNIMP diff --git a/hw/arm/ax3000-soc.c b/hw/arm/ax3000-soc.c new file mode 100644 index 0000000000..b528f8af53 --- /dev/null +++ b/hw/arm/ax3000-soc.c @@ -0,0 +1,182 @@ +/* + * Axiado SoC AX3000 + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "system/address-spaces.h" +#include "hw/arm/bsa.h" +#include "hw/arm/ax3000-soc.h" +#include "hw/misc/unimp.h" +#include "system/system.h" +#include "qobject/qlist.h" +#include "qom/object.h" +#include "hw/core/boards.h" + +static void ax3000_init(Object *obj) +{ + Ax3000SoCState *s =3D AX3000_SOC(obj); + Ax3000SoCClass *sc =3D AX3000_SOC_GET_CLASS(s); + + for (int i =3D 0; i < sc->num_cpus; i++) { + g_autofree char *name =3D g_strdup_printf("cpu%d", i); + object_initialize_child(obj, name, &s->cpu[i], + ARM_CPU_TYPE_NAME("cortex-a53")); + } + + object_initialize_child(obj, "gic", &s->gic, gicv3_class_name()); + + for (int i =3D 0; i < AX3000_NUM_UARTS; i++) { + g_autofree char *name =3D g_strdup_printf("uart%d", i); + object_initialize_child(obj, name, &s->uart[i], TYPE_CADENCE_UART); + } +} + +static void ax3000_realize(DeviceState *dev, Error **errp) +{ + Ax3000SoCState *s =3D AX3000_SOC(dev); + Ax3000SoCClass *sc =3D AX3000_SOC_GET_CLASS(s); + SysBusDevice *gic_sbd =3D SYS_BUS_DEVICE(&s->gic); + DeviceState *gic_dev =3D DEVICE(&s->gic); + QList *redist_region_count; + SysBusDevice *sdhci0_sbd; + DeviceState *card; + + /* CPUs */ + for (int i =3D 0; i < sc->num_cpus; i++) { + object_property_set_int(OBJECT(&s->cpu[i]), "cntfrq", 8000000, + &error_abort); + + if (object_property_find(OBJECT(&s->cpu[i]), "has_el3")) { + object_property_set_bool(OBJECT(&s->cpu[i]), "has_el3", + false, &error_abort); + } + + if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) { + return; + } + } + + /* GIC */ + qdev_prop_set_uint32(gic_dev, "num-cpu", sc->num_cpus); + qdev_prop_set_uint32(gic_dev, "num-irq", + AX3000_NUM_IRQS + GIC_INTERNAL); + + redist_region_count =3D qlist_new(); + qlist_append_int(redist_region_count, sc->num_cpus); + qdev_prop_set_array(gic_dev, "redist-region-count", redist_region_coun= t); + + if (!sysbus_realize(gic_sbd, errp)) { + return; + } + + sysbus_mmio_map(gic_sbd, 0, AX3000_GIC_DIST_BASE); + sysbus_mmio_map(gic_sbd, 1, AX3000_GIC_REDIST_BASE); + + /* + * Mapping from the output timer irq lines from the CPU to the + * GIC PPI inputs. + */ + const int timer_irqs[] =3D { + [GTIMER_PHYS] =3D ARCH_TIMER_NS_EL1_IRQ, + [GTIMER_VIRT] =3D ARCH_TIMER_VIRT_IRQ, + [GTIMER_HYP] =3D ARCH_TIMER_NS_EL2_IRQ, + [GTIMER_SEC] =3D ARCH_TIMER_S_EL1_IRQ + }; + + /* + * Wire the outputs from each CPU's generic timer and the GICv3 + * maintenance interrupt signal to the appropriate GIC PPI inputs, and + * the GIC's IRQ/FIQ interrupt outputs to the CPU's inputs. + */ + for (int i =3D 0; i < sc->num_cpus; i++) { + DeviceState *cpu_dev =3D DEVICE(&s->cpu[i]); + int intidbase =3D AX3000_NUM_IRQS + i * GIC_INTERNAL; + qemu_irq irq; + + for (int j =3D 0; j < ARRAY_SIZE(timer_irqs); j++) { + irq =3D qdev_get_gpio_in(gic_dev, intidbase + timer_irqs[j]); + qdev_connect_gpio_out(cpu_dev, j, irq); + } + + irq =3D qdev_get_gpio_in(gic_dev, intidbase + ARCH_GIC_MAINT_IRQ); + qdev_connect_gpio_out_named(cpu_dev, "gicv3-maintenance-interrupt", + 0, irq); + + sysbus_connect_irq(gic_sbd, i, + qdev_get_gpio_in(cpu_dev, ARM_CPU_IRQ)); + sysbus_connect_irq(gic_sbd, i + sc->num_cpus, + qdev_get_gpio_in(cpu_dev, ARM_CPU_FIQ)); + sysbus_connect_irq(gic_sbd, i + 2 * sc->num_cpus, + qdev_get_gpio_in(cpu_dev, ARM_CPU_VIRQ)); + sysbus_connect_irq(gic_sbd, i + 3 * sc->num_cpus, + qdev_get_gpio_in(cpu_dev, ARM_CPU_VFIQ)); + } + + /* DRAM */ + const struct { + hwaddr addr; + size_t size; + const char *name; + } dram_table[] =3D { + { AX3000_DRAM0_BASE, AX3000_DRAM0_SIZE, "dram0" }, + { AX3000_DRAM1_BASE, AX3000_DRAM1_SIZE, "dram1" } + }; + + for (int i =3D 0; i < AX3000_NUM_BANKS; i++) { + memory_region_init_ram(&s->dram[i], OBJECT(s), dram_table[i].name, + dram_table[i].size, &error_fatal); + memory_region_add_subregion(get_system_memory(), dram_table[i].add= r, + &s->dram[i]); + } + + /* UARTs */ + const struct { + hwaddr addr; + unsigned int irq; + } serial_table[] =3D { + { AX3000_UART0_BASE, AX3000_UART0_IRQ }, + { AX3000_UART1_BASE, AX3000_UART1_IRQ }, + { AX3000_UART2_BASE, AX3000_UART2_IRQ }, + { AX3000_UART3_BASE, AX3000_UART3_IRQ } + }; + + for (int i =3D 0; i < AX3000_NUM_UARTS; i++) { + qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i)); + if (!sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), errp)) { + return; + } + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, serial_table[i].ad= dr); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0, + qdev_get_gpio_in(gic_dev, serial_table[i].irq)); + } + + /* Timer control */ + create_unimplemented_device("ax3000.timerctrl", AX3000_TIMER_CTRL, 32); +} + +static void ax3000_class_init(ObjectClass *oc, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + Ax3000SoCClass *sc =3D AX3000_SOC_CLASS(oc); + + dc->desc =3D "Axiado SoC AX3000"; + dc->realize =3D ax3000_realize; + sc->num_cpus =3D AX3000_NUM_CPUS; +} + +static const TypeInfo axiado_soc_types[] =3D { + { + .name =3D TYPE_AX3000_SOC, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(Ax3000SoCState), + .instance_init =3D ax3000_init, + .class_init =3D ax3000_class_init, + } +}; + +DEFINE_TYPES(axiado_soc_types) diff --git a/hw/arm/meson.build b/hw/arm/meson.build index 4233a800be..0254b82df1 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -110,6 +110,9 @@ arm_common_ss.add(when: 'CONFIG_SX1', if_true: files('o= map_sx1.c')) arm_common_ss.add(when: 'CONFIG_VERSATILE', if_true: files('versatilepb.c'= )) arm_common_ss.add(when: 'CONFIG_VEXPRESS', if_true: files('vexpress.c')) =20 +arm_common_ss.add(when: ['CONFIG_AXIADO_SOC', 'TARGET_AARCH64'], if_true: = files( + 'ax3000-soc.c')) + arm_common_ss.add(files('boot.c')) =20 hw_common_arch +=3D {'arm': arm_common_ss} diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h new file mode 100644 index 0000000000..b984d7a8ec --- /dev/null +++ b/include/hw/arm/ax3000-soc.h @@ -0,0 +1,68 @@ +/* + * Axiado SoC AX3000 + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef AXIADO_AX3000_H +#define AXIADO_AX3000_H + +#include "cpu.h" +#include "hw/intc/arm_gicv3_common.h" +#include "hw/char/cadence_uart.h" +#include "hw/core/sysbus.h" +#include "qemu/units.h" + +#define TYPE_AX3000_SOC "ax3000" +OBJECT_DECLARE_TYPE(Ax3000SoCState, Ax3000SoCClass, AX3000_SOC) + +#define AX3000_DRAM0_BASE 0x3C000000 +#define AX3000_DRAM0_SIZE (1088 * MiB) +#define AX3000_DRAM1_BASE 0x400000000 +#define AX3000_DRAM1_SIZE (2 * GiB) + +#define AX3000_GIC_DIST_BASE 0x80300000 +#define AX3000_GIC_DIST_SIZE (64 * KiB) +#define AX3000_GIC_REDIST_BASE 0x80380000 +#define AX3000_GIC_REDIST_SIZE (512 * KiB) + +#define AX3000_UART0_BASE 0x80520000 +#define AX3000_UART1_BASE 0x805a0000 +#define AX3000_UART2_BASE 0x80620000 +#define AX3000_UART3_BASE 0x80520800 + +#define AX3000_TIMER_CTRL 0x8A020000 +#define AX3000_PLL_BASE 0x80000000 + +enum Ax3000Configuration { + AX3000_NUM_CPUS =3D 4, + AX3000_NUM_IRQS =3D 224, + AX3000_NUM_BANKS =3D 2, + AX3000_NUM_UARTS =3D 4, +}; + +typedef struct Ax3000SoCState { + SysBusDevice parent; + + ARMCPU cpu[AX3000_NUM_CPUS]; + GICv3State gic; + MemoryRegion dram[AX3000_NUM_BANKS]; + CadenceUARTState uart[AX3000_NUM_UARTS]; +} Ax3000SoCState; + +typedef struct Ax3000SoCClass { + SysBusDeviceClass parent; + + uint32_t num_cpus; +} Ax3000SoCClass; + +enum Ax3000Irqs { + AX3000_UART0_IRQ =3D 112, + AX3000_UART1_IRQ =3D 113, + AX3000_UART2_IRQ =3D 114, + AX3000_UART3_IRQ =3D 170, +}; + +#endif /* AXIADO_AX3000_H */ --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537143; cv=none; d=zohomail.com; s=zohoarc; b=Jw1FBZC05ir9OOyeNujVtL7KxYv8TLd6E21HdtUF4UzBwFlI64SsAmFh5T493nqz5GyRQ6DG8zk3g/9974W8rsCgyYz117loj5uujIKeMaU+0ul9FAZ/+c9TPehfjY0STg/ZllDnWv+fmDnyY3BqfNkY0K4b0Wbp2QrVsByo+ls= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537143; h=Content-Transfer-Encoding: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:Cc; bh=zprv574hMUc1osPTRItRwojX5aCpqSuO6N7TCEXrs0g=; b=htwtKAmIPd4xXv82+EbPDaX93myFTVYZsu9+1vd0B4/FTjzohaK1py98rCmMCdxcXg5Qxoo5wWbAsaMRX9wYAALF0uHQ+PW8aphJry6aDur3k27guIab/KzTnMYdrOVgbK/1r0CAVSeMEW2hNe1L0tE+/mpQXKDu749BXBY2i2A= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537142983922.3753247731464; Wed, 12 Aug 2026 05:19:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t9-0004hn-IT; Wed, 12 Aug 2026 08:16:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wu7t2-0004KT-3a for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:48 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7t0-0008Vk-32 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:47 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-49558ce01afso6937215e9.1 for ; Wed, 12 Aug 2026 05:16:44 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537004; x=1787141804; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=zprv574hMUc1osPTRItRwojX5aCpqSuO6N7TCEXrs0g=; b=gucxTZoWBLu8fb1ie/4XuPGq0ZjlyfKuZEak13G+vj6EdW4BW7shsJ8gwpingsNuCd bBI5LmpXzmek0mxraDToVW86XcVtgpHaIqYpP4T9zNT2/pOGEfi+DwZj2K2Nbp5gDnEb 55qdsH0fddZoqLsMfHQ1Rh8x+yR4aehVUJq2Sm3OcKB/plizgRrfKT2T+HCzjjRJxuta xhCmAxqrKy7ul9feoU9cnsaEQbD3dpq43vxR/DF1JdXnq1AygibvAbkwOoJ7UqFTN/fR ahL48kysvJfJ+S2E0PsK9J5pBthnQwlmqOrDG8463omLwMdvw0qkC55ieLo/4k7OjpWW oKww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537004; x=1787141804; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zprv574hMUc1osPTRItRwojX5aCpqSuO6N7TCEXrs0g=; b=jTDDSjuzKIHl2HVG5bZKxlCfwwDwp6nCTg/UGPTqkXkKI06IEx8mrw3AxQEiL7gbaT 9fEpIOPumcYHeOmYHfXyF6wD93eC0/oEkCBdOSL2hSDT3UxlsmcnZ68/2hORBkBNcng7 2K9CbZwL8R8AxRuFUYmOfQlTNpHV5KicsPTbh9PKqrJd/wCubmoLBr862kukApPoEyuJ w4TGkwiGgrdqhExqeh7rvrX+RSX732BC02CpsYBlD9bxN+7jRfQYfAYoFMTrEGN72oBY 4C0v1RaYL0jUvvO/aMbZHVpohc/W2rh6Hy/djmXlBDiAsoooql1kaSP4k7RdpJMyeHYf d6gA== X-Gm-Message-State: AOJu0Yx+0ICIoE0Qq76wHtIs7PEpPONRVTe9bP0bThxSpO/1A6A8m3JP q6RkGwManF+zT0Zg0poo5h6UTuiqFl+gsKmyVcbAUfmFoRNPxtuj9cx/kvWEYvYCeozvSmDFmf8 +T3XJ X-Gm-Gg: AR+sD12MO6c1kUDdROjS9bLKkV+oyWA8IGlyJ6ZyVe0kd5r/vTmBwV+BkmnbjU+EHPy cwHIMF/oqg2+K+D/JUEGOnPuLR2Aktz+JlWchEAEr+TR0gcmj1KPZinqr/lmwZtN3Dpq8XtkGhb kOdSooSmqGtXlxciXqS+iPWf4wRT6CRdD+KMcB2iIbPDCjvx1boO1Qv5HUA4gYpqAWca/AeQcii S+HP1O22E1l/ne3w4RrXUS4wI3dooCwpyKsQzdwoisX9slzZxKnfGjV86w/uVNa8ns8/GzagLGx jS4jwSS7YImi5YuS+sEA/lXPEbHsefCbEvxTj//hT0YTIDpITX0PLAjOp+Nlnq4xhQN0AYDgXus n8rG4FJt+2xjcQCIMK9oJrn9rrCk8dIl7M5/Lv4L7vCVI+PYjow5dl0IiOh4kl9oGcnVIv662gP 4h6m7d0iSX1qQ+Ur/W85BHbfuVG3W54Q+9LzSGPG3tFVdUpHMQUPW/E7+2zIwwawOvPFxDKD7Do N4rBJa0/I4yxhtTxTzA1l4ZrAwiUw6juMyPjnwFMAML4Fnc9JsOjw1MZe/1uBD80crBSA== X-Received: by 2002:a7b:cbc5:0:b0:499:7a86:4145 with SMTP id 5b1f17b1804b1-4997c1461f3mr40483935e9.13.1786537003608; Wed, 12 Aug 2026 05:16:43 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 12/26] hw/misc: Add AX3000 clock control Date: Wed, 12 Aug 2026 13:16:08 +0100 Message-ID: <20260812121622.649730-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537144482158500 Content-Type: text/plain; charset="utf-8" From: Kuan-Jui Chiu This patch adds a new model for Axiado AX3000 clock control which supports to read ID and status Signed-off-by: Kuan-Jui Chiu Message-id: 20260713073033.3883619-3-kchiu@axiado.com [PMM: use HWADDR_PRIx] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/misc/Kconfig | 3 ++ hw/misc/axiado_clk.c | 79 ++++++++++++++++++++++++++++++++++++ hw/misc/meson.build | 3 ++ include/hw/misc/axiado_clk.h | 26 ++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 hw/misc/axiado_clk.c create mode 100644 include/hw/misc/axiado_clk.h diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 1543ee6653..b8860dd3e7 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -257,4 +257,7 @@ config XLNX_VERSAL_TRNG config XLNX_ZYNQ_DDRC bool =20 +config AXIADO_CLK + bool + source macio/Kconfig diff --git a/hw/misc/axiado_clk.c b/hw/misc/axiado_clk.c new file mode 100644 index 0000000000..090beb38b5 --- /dev/null +++ b/hw/misc/axiado_clk.c @@ -0,0 +1,79 @@ +/* + * Axiado Clock Control + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/misc/axiado_clk.h" +#include "qemu/log.h" + +#define CLKRST_CPU_PLL_POSTDIV_OFFSET 0x0C +#define CLKRST_CPU_PLL_STS_OFFSET 0x14 + +static uint64_t pll_read(void *opaque, hwaddr offset, unsigned size) +{ + switch (offset) { + case CLKRST_CPU_PLL_POSTDIV_OFFSET: + return 0x20891b; + case CLKRST_CPU_PLL_STS_OFFSET: + return 0x01; + default: + qemu_log_mask(LOG_UNIMP, + "Register 0x%" HWADDR_PRIx " not implemented\n", off= set); + break; + } + return 0x00; +} + +static void pll_write(void *opaque, hwaddr offset, uint64_t val, unsigned = size) +{ + qemu_log_mask(LOG_UNIMP, + "Register 0x%" HWADDR_PRIx " not implemented\n", offset); +} + +static const MemoryRegionOps pll_ops =3D { + .read =3D pll_read, + .write =3D pll_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + } +}; + +static void ax3000_clk_init(Object *obj) +{ + Ax3000ClkState *s =3D AX3000_CLK(obj); + + memory_region_init_io(&s->pll_ctrl, obj, &pll_ops, s, + TYPE_AX3000_CLK, AX3000_CLK_PLL_CTRL_SIZE); + sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->pll_ctrl); +} + +static void ax3000_clk_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->desc =3D "Axiado AX3000 Clock Control"; +} + +static const TypeInfo ax3000_clk_info =3D { + .parent =3D TYPE_SYS_BUS_DEVICE, + .name =3D TYPE_AX3000_CLK, + .instance_size =3D sizeof(Ax3000ClkState), + .instance_init =3D ax3000_clk_init, + .class_init =3D ax3000_clk_class_init, +}; + +static void axiado_clk_register_type(void) +{ + type_register_static(&ax3000_clk_info); +} +type_init(axiado_clk_register_type); diff --git a/hw/misc/meson.build b/hw/misc/meson.build index 23265f6035..e86d9ad6b3 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -1,4 +1,5 @@ system_ss.add(when: 'CONFIG_APPLESMC', if_true: files('applesmc.c')) + system_ss.add(when: 'CONFIG_EDU', if_true: files('edu.c')) system_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('vmcoreinfo.c')) system_ss.add(when: 'CONFIG_ISA_DEBUG', if_true: files('debugexit.c')) @@ -168,3 +169,5 @@ system_ss.add(when: 'CONFIG_SBSA_REF', if_true: files('= sbsa_ec.c')) =20 # HPPA devices system_ss.add(when: 'CONFIG_LASI', if_true: files('lasi.c')) + +system_ss.add(when: 'CONFIG_AXIADO_CLK', if_true: files('axiado_clk.c')) diff --git a/include/hw/misc/axiado_clk.h b/include/hw/misc/axiado_clk.h new file mode 100644 index 0000000000..6e12a509d7 --- /dev/null +++ b/include/hw/misc/axiado_clk.h @@ -0,0 +1,26 @@ +/* + * Axiado AX3000 Clock Control + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef AXIADO_AX3000_CLK_H +#define AXIADO_AX3000_CLK_H + +#include "hw/core/sysbus.h" +#include "qom/object.h" + +#define TYPE_AX3000_CLK "ax3000-clk" +OBJECT_DECLARE_SIMPLE_TYPE(Ax3000ClkState, AX3000_CLK) + +#define AX3000_CLK_PLL_CTRL_SIZE 0x1000 + +typedef struct Ax3000ClkState { + SysBusDevice parent; + + MemoryRegion pll_ctrl; +} Ax3000ClkState; + +#endif /* AXIADO_AX3000_CLK_H */ --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537145; cv=none; d=zohomail.com; s=zohoarc; b=BlzFLQl3Wh1jUy8A/yzRdTG0Ug4yu8GftJouoESPj0ELcDttvvW5FYSmm+mUQH4r20RNwM8kUdn1hOJuGIVkIFTYem6LXt34PRo5ocUt9Ya4/fBlLaKAnBcYqxH+3Zr069G/AzdJiJv5C71CkIugIBZBSMjR7ZPoEVAvnfLIkPg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537145; h=Content-Transfer-Encoding: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:Cc; bh=tkXuodvBhvgTHSiWMS4cHbyjpWJV4c1pD//lScFO3VY=; b=XmrkP2mFk3Sj1eJaq2Hwt15656TRPAFsHn+gRF5ZASIGMguj3NH8wjOC7HB47uwjCpyygbDf1xEXGVMYxnGm912ZQhehMjlRd/byjSWNp7ebRva2vtsviGvDQWpgX8qscJ6RhkEfsk0gWl7B0TqrLVcer9cRAxe3idHBdIq6+Tg= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537145747454.4976386691268; Wed, 12 Aug 2026 05:19:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t9-0004iK-KC; Wed, 12 Aug 2026 08:16:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wu7t3-0004Pu-CM for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:49 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7t1-0008WJ-Ij for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:49 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-495635a85d2so6516295e9.0 for ; Wed, 12 Aug 2026 05:16:47 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537006; x=1787141806; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=tkXuodvBhvgTHSiWMS4cHbyjpWJV4c1pD//lScFO3VY=; b=Zt2ZDaYZiEBxeEqv8vuoAKn6Qu43lUax63ToVfM3xuuR5+HSRyA3B5EiJFkJIOwSSn yYnrjKMNQAP52/gtkE0NIWyohZyAGNdCPcig4hFVYHeXc8NLbbqqZH2xy+nJDDEeq0dR QK14TfVGDn8U1GN+9RJ4jUz1rAjPuvSgYUXFLhCQKyNHZU7l+ow5huIP3vAh6wk9eTqr avW6Wn5BoiB6g+6Ac+6eQ1wGMday6DgWXvJYpCwu+bvc4fGPvJTu/z/PN++kUvYIvrgK KLZ2yID/nvWijm6KD1hFYDuN0LR5MMGdcuKCYWXcoOeOGV73G3qM+OSJPDmLryBs0mEC i5yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537006; x=1787141806; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=tkXuodvBhvgTHSiWMS4cHbyjpWJV4c1pD//lScFO3VY=; b=ULEJChBKDb2fVC+ci2eWabXVKLwCEyNSnPqeyU2XLBv7l9Oj3Cf6SxAe6dGANPfGzc I0BqREgC33up0I2seCSJ3RoIfQR5WNrcrOf54YeeyZEGRs9TmmjO0tSwaXmDmyED6y1Q KMWVNsOdQguhcR27ESByfX51P3meCozxbPlhKGKtPFhVRuHkUZj+HbD7uCTuFdZB6JH0 M1Qy3gxx5VI/jIDK4W/CZ2XfqozbLaqA0C5NzWxLwW05/c6xh5xbxvLpnTxS1PWQMsdc uQIEAo6uOwjU8WbE/gMDd32/bJAVFK2nd7WkAJduiXRx0jy/GM0sl8UsJX5RQgsA3pWw UC2Q== X-Gm-Message-State: AOJu0YwEhJZaTh+EF/gEuDODY+6M86z0/XCBSiY6mbd1dLVHyggVGPOA WA3JLyoKZUG6/tSN7ORC6g+0hdQfn3R8WJTlPw3hknPIspBVXMHQpYteeKs/kxpD7/pYdFI2UjH Pu+PZ X-Gm-Gg: AR+sD11ikRPtbdeXyvdYLrSxmviTj8no6/sRKTWNK7O4EQ3CRD1FWPY88rwkq4Sfj32 meSYyVvRo9nj5Iau01j0RmF3k42LuVT5OAi3xiBcR34Lhmf2rUnpJxwQAoG3f2MsRNFMKqfJkmZ nkM+lwXG/YnX6uRcr4YLbT24DfDqOYn/g27QQo3yxuBFjmfmajl7bNuZ85HRj+94OqngcQxkWCn oqG9Nu3iHhyUIdozP/F/HDkFASD2nWrJ8f6tYEkk5h720JN094l5d9FpS5Oxg0xCPrZY3Zp8HNR BGSLG8bQ/HOs01Ap3tHWSq+hU8sK1NimMBqQDlE1f/yN0KCCc42H4zU/jN2M/9DrNNjP//U/zbK F7hShO9sJgWInItFWYMfUFHVPg4WTP2+nOh9HF2SEZ3UL2P8zUix0QD49BOn82Ll+cmoyy21FAD UZEC5n9w1bLs2HeZaqwyX7T0MzFAkTj25Tn0WUKglSzqGj/Pt9Ytmil5qkOtt+G5DQhrOdzTTIo GLK/z5AmBqoOwnVHo2d/QQrlbfHOYXwAVnr405HHY9IEfcyKUlbCjeIdrhUOmlnRUG6mg== X-Received: by 2002:a05:600c:6305:b0:495:6396:8b67 with SMTP id 5b1f17b1804b1-4997c0d7658mr51764725e9.4.1786537005917; Wed, 12 Aug 2026 05:16:45 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 13/26] hw/arm: ax3000-soc: Enable Ax3000 clock control Date: Wed, 12 Aug 2026 13:16:09 +0100 Message-ID: <20260812121622.649730-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537146328158500 Content-Type: text/plain; charset="utf-8" From: Kuan-Jui Chiu Signed-off-by: Kuan-Jui Chiu Message-id: 20260713073033.3883619-4-kchiu@axiado.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/arm/Kconfig | 1 + hw/arm/ax3000-soc.c | 8 ++++++++ include/hw/arm/ax3000-soc.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 2ed2c2c6e8..69161a439c 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -730,4 +730,5 @@ config AXIADO_SOC bool select ARM_GIC select CADENCE # UART + select AXIADO_CLK select UNIMP diff --git a/hw/arm/ax3000-soc.c b/hw/arm/ax3000-soc.c index b528f8af53..aaeae11074 100644 --- a/hw/arm/ax3000-soc.c +++ b/hw/arm/ax3000-soc.c @@ -33,6 +33,8 @@ static void ax3000_init(Object *obj) g_autofree char *name =3D g_strdup_printf("uart%d", i); object_initialize_child(obj, name, &s->uart[i], TYPE_CADENCE_UART); } + + object_initialize_child(obj, "clk", &s->ax3000_clk, TYPE_AX3000_CLK); } =20 static void ax3000_realize(DeviceState *dev, Error **errp) @@ -157,6 +159,12 @@ static void ax3000_realize(DeviceState *dev, Error **e= rrp) =20 /* Timer control */ create_unimplemented_device("ax3000.timerctrl", AX3000_TIMER_CTRL, 32); + + /* Clock control */ + if (!sysbus_realize(SYS_BUS_DEVICE(&s->ax3000_clk), errp)) { + return; + } + sysbus_mmio_map(SYS_BUS_DEVICE(&s->ax3000_clk), 0, AX3000_PLL_BASE); } =20 static void ax3000_class_init(ObjectClass *oc, const void *data) diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h index b984d7a8ec..329aa4e769 100644 --- a/include/hw/arm/ax3000-soc.h +++ b/include/hw/arm/ax3000-soc.h @@ -12,6 +12,7 @@ #include "cpu.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/char/cadence_uart.h" +#include "hw/misc/axiado_clk.h" #include "hw/core/sysbus.h" #include "qemu/units.h" =20 @@ -49,6 +50,7 @@ typedef struct Ax3000SoCState { ARMCPU cpu[AX3000_NUM_CPUS]; GICv3State gic; MemoryRegion dram[AX3000_NUM_BANKS]; + Ax3000ClkState ax3000_clk; CadenceUARTState uart[AX3000_NUM_UARTS]; } Ax3000SoCState; =20 --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537176; cv=none; d=zohomail.com; s=zohoarc; b=moVgFIr41lYc+kqYA7l5Z7VfogvFGB/MFOLM7F1zni2R25UjyfvQumYqXWHqzMc9vOBQFHdSrhPqpkdOC9xdYOKmyH9tcn3U+qVZ67/NIWhmDYkwwc2ZX/wBJ8v5CF/xvmfBRaLhC90eNMyXdLvn1WMSZqppeybqCpLVeMAWEtk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537176; h=Content-Transfer-Encoding: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:Cc; bh=aWmA88nopEo3kPddFZ0DwQv7aPRUq6NvE3zd5dUEApk=; b=FQnB81rZySYeUifbl1mqpFSGYcP2zZX768910MSjAGoWeoqtl9zVkpGbFDPLoNC+pVl98tgNnMXBA+DoKOC2WjvOkrWWLHezRWy45yyb7x8LVPfiQCZkACYz5eIL2G58XRFzNtz66bWgeKyjebZJlbjFzrmyjggy5w6pBkACYZI= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537176169113.27833155109374; Wed, 12 Aug 2026 05:19:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tA-0004mO-Iy; Wed, 12 Aug 2026 08:16:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wu7t5-0004VW-Ku for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:52 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7t3-00005C-Kp for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:51 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-49802c418b5so7806985e9.1 for ; Wed, 12 Aug 2026 05:16:49 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537008; x=1787141808; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=aWmA88nopEo3kPddFZ0DwQv7aPRUq6NvE3zd5dUEApk=; b=Mm+yxILQRH/0khjiBjCorVqUEyX990/pi8ENS47TKVnS31ziSsoxzGSxWh3q9fvC9X +ihtSCi2PU+11DQS0WtGHrpmM6SwIXhXLZtQffQ3a5gItqAVtkfChV9t3PKRIxCDC9kR N93R/UJWO22feT3aS5c893n2ZIBgTDMoPZ2WQ5tJWgF3utzp7LQZlYpNSni5/yZTTboo 3hnxWiBrYm60F/RoXF9dIwEHgNzZV0ljlPUn4HMUWViiP2LEuRgzm2u9qD1v1uWfRqTI 8F8Ahkyd6wwZGCnC/haYxgCLuiitzA0JNIyEuEp3r+RB/XeB4lq+kenD++H6FULS41Am vlsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537008; x=1787141808; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=aWmA88nopEo3kPddFZ0DwQv7aPRUq6NvE3zd5dUEApk=; b=dD+zDhWYWOgzMH/uPm5kym0ZHdb02zBsquBo0XyF3o4XHwkpMndG72cRRWAB+gDGca 5HDr0VDP9qDP843JySS6uPDT1pmCTU+zDvEvJt0DFVFmpa+2HBwHWgRCuzgJtosQQ8Pb Umk/AM/Fjt7aoNKVwkKqt7GS2vkqXjFZ6FKzV9BJiLWPloKGKvSuS5Qmr6M2ViFI6Ykv OqzkEFWAA/h1gQNC6FvtOlXdoFzEA7rN3vDnsHnkAtfZwj2En4SO1zzmP7UCpScVqNyX atgADl08WC9CnCK9mBOmRBajnpRqoNsjZEQ/8Azueu1HrZXt5HFn1RIlKgHHoP03NKbY sPOw== X-Gm-Message-State: AOJu0Yxp2NSQQVMKbkuhmLBunF8t+1aOhJolQvaYVdUMYHp0k5Qa+cIX OH2coTxDsju/sYxA7v4CJTKx10W7TnBVdA8nctigzmejt693uCMSPmLbPVNVO/P4DKAix/3l2ZV iNdLJ X-Gm-Gg: AR+sD10cCkYD5P9JADDr9fwpRisECTD0Mn6byVsA1jNJv/+5HRgsoTPvy+bjf15KVGW mGmuD/yRrvuvK2+6C3dtbUhv+Sty05Ha7c+GQz0kfLjyzYBqsvsN/atRE2gGVs/nXQUbj5kOtGz 4Bb3xTPiwJ2T0mSdhgDt9uZXoSSBM/UF35SYxg+bCtgFTygQUNvC0T4TfWu6+gIJA7E91J6F0RG 9Zs30Xzot+N/zBefEbq0oXe44+x2keBHjOfkvFPeOaaSJ9Xs2+wZJlk1XYOy4RVrTXqRTahRg8d tqzc9PmhzQarZO8ftPCRg+PIk9Xgmxgz73oz6ZBWibeFX+iSKp6LjXcJQdK7A+d8HLidhGTjuUP 9k3Yl3aHwQFN8B939aj1kp0hHAzWcmkXj2zafhjYcVqz10O/LwxzCJsAu1xd5N1x1kXnM3+QGc9 j3ZIX5QM0ilHf4rLasjR38UY0ddd58rkVAztYoFQolGtph0HxEiFuBlEmCejANQzFBX5LB/joAr nqwEg/Ph5Abm3K1W5HOytA/PAJ7Sc+/EwFwQaAEhTdMM4E6wJuIG8bDLNdeEMc/+rF0fQ== X-Received: by 2002:a05:600c:8b52:b0:495:4491:b8c2 with SMTP id 5b1f17b1804b1-4997c0e6f2emr73920375e9.3.1786537008066; Wed, 12 Aug 2026 05:16:48 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 14/26] hw/sd: Add Axiado SD host controller with eMMC PHY Date: Wed, 12 Aug 2026 13:16:10 +0100 Message-ID: <20260812121622.649730-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537176673158500 Content-Type: text/plain; charset="utf-8" From: Kuan-Jui Chiu This patch add a new model for Axiado SD host controller which is compatible with SDHCI 3.0 spec This device model also includes a eMMC PHY which helps to control SD/eMMC Signed-off-by: Kuan-Jui Chiu Reviewed-by: Peter Maydell Message-id: 20260713073033.3883619-5-kchiu@axiado.com [PMM: Use HWADDR_PRIx] Signed-off-by: Peter Maydell --- MAINTAINERS | 2 + hw/sd/Kconfig | 4 ++ hw/sd/axiado_sdhci.c | 119 +++++++++++++++++++++++++++++++++++ hw/sd/meson.build | 1 + include/hw/sd/axiado_sdhci.h | 21 +++++++ 5 files changed, 147 insertions(+) create mode 100644 hw/sd/axiado_sdhci.c create mode 100644 include/hw/sd/axiado_sdhci.h diff --git a/MAINTAINERS b/MAINTAINERS index fce65e370f..7a02fed0d6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1305,7 +1305,9 @@ M: Kuan-Jui Chiu L: qemu-arm@nongnu.org S: Maintained F: hw/arm/ax3000*.c +F: hw/*/axiado*.c F: include/hw/arm/ax3000*.h +F: include/hw/*/axiado*.h =20 AVR Machines ------------- diff --git a/hw/sd/Kconfig b/hw/sd/Kconfig index 633b9afec9..c69bf24f8d 100644 --- a/hw/sd/Kconfig +++ b/hw/sd/Kconfig @@ -23,3 +23,7 @@ config SDHCI_PCI config CADENCE_SDHCI bool select SDHCI + +config AXIADO_SDHCI + bool + select SDHCI diff --git a/hw/sd/axiado_sdhci.c b/hw/sd/axiado_sdhci.c new file mode 100644 index 0000000000..2e88bffdd1 --- /dev/null +++ b/hw/sd/axiado_sdhci.c @@ -0,0 +1,119 @@ +/* + * Axiado SD Host Controller with embedded PHY + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/sd/axiado_sdhci.h" +#include "sdhci-internal.h" +#include "qapi/error.h" +#include "hw/core/qdev-properties.h" +#include "qemu/log.h" + +#define EMMC_PHY_ID 0x00 +#define EMMC_PHY_STATUS 0x50 + +#define DLL_RDY (1u << 0) +#define CAL_DONE (1u << 6) + +static uint64_t emmc_phy_read(void *opaque, hwaddr offset, unsigned size) +{ + uint32_t val =3D 0x00; + + switch (offset) { + case EMMC_PHY_ID: + val =3D 0x3dff6870; + break; + case EMMC_PHY_STATUS: + val =3D DLL_RDY | CAL_DONE; + break; + default: + qemu_log_mask(LOG_UNIMP, + "Register 0x%" HWADDR_PRIx " not implemented\n", off= set); + break; + } + + return val; +} + +static void emmc_phy_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + qemu_log_mask(LOG_UNIMP, + "Register 0x%" HWADDR_PRIx " not implemented\n", offset); +} + +static const MemoryRegionOps emmc_phy_ops =3D { + .read =3D emmc_phy_read, + .write =3D emmc_phy_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + } +}; + +static void axiado_sdhci_realize(DeviceState *dev, Error **errp) +{ + AxiadoSDHCIState *s =3D AXIADO_SDHCI(dev); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); + SysBusDevice *sdhci_sbd; + + qdev_prop_set_uint64(DEVICE(&s->sdhci), "capareg", 0x216737eed0b0); + qdev_prop_set_uint64(DEVICE(&s->sdhci), "sd-spec-version", 3); + + sdhci_sbd =3D SYS_BUS_DEVICE(&s->sdhci); + if (!sysbus_realize(sdhci_sbd, errp)) { + return; + } + + sysbus_init_mmio(sbd, sysbus_mmio_get_region(sdhci_sbd, 0)); + + /* Propagate IRQ from SDHCI and SD bus */ + sysbus_pass_irq(sbd, sdhci_sbd); + s->sd_bus =3D qdev_get_child_bus(DEVICE(sdhci_sbd), "sd-bus"); + + /* Initialize eMMC PHY MMIO */ + memory_region_init_io(&s->emmc_phy, OBJECT(s), &emmc_phy_ops, s, + "axiado.emmc-phy", 0x1000); + + sysbus_init_mmio(sbd, &s->emmc_phy); +} + +static void axiado_sdhci_instance_init(Object *obj) +{ + AxiadoSDHCIState *s =3D AXIADO_SDHCI(obj); + + object_initialize_child(OBJECT(s), "sdhci", &s->sdhci, + TYPE_SYSBUS_SDHCI); +} + +static void axiado_sdhci_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->realize =3D axiado_sdhci_realize; + dc->desc =3D "Axiado SD Host Controller with eMMC PHY"; +} + +static const TypeInfo axiado_sdhci_info =3D { + .name =3D TYPE_AXIADO_SDHCI, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(AxiadoSDHCIState), + .instance_init =3D axiado_sdhci_instance_init, + .class_init =3D axiado_sdhci_class_init, +}; + +static void axiado_sdhci_register_types(void) +{ + type_register_static(&axiado_sdhci_info); +} + +type_init(axiado_sdhci_register_types); diff --git a/hw/sd/meson.build b/hw/sd/meson.build index b43d45bc56..ebf09e30a4 100644 --- a/hw/sd/meson.build +++ b/hw/sd/meson.build @@ -10,3 +10,4 @@ system_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files('= aspeed_sdhci.c')) system_ss.add(when: 'CONFIG_ALLWINNER_H3', if_true: files('allwinner-sdhos= t.c')) system_ss.add(when: 'CONFIG_NPCM7XX', if_true: files('npcm7xx_sdhci.c')) system_ss.add(when: 'CONFIG_CADENCE_SDHCI', if_true: files('cadence_sdhci.= c')) +system_ss.add(when: 'CONFIG_AXIADO_SDHCI', if_true: files('axiado_sdhci.c'= )) diff --git a/include/hw/sd/axiado_sdhci.h b/include/hw/sd/axiado_sdhci.h new file mode 100644 index 0000000000..85afebad93 --- /dev/null +++ b/include/hw/sd/axiado_sdhci.h @@ -0,0 +1,21 @@ +/* + * Axiado SD Host Controller + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "hw/sd/sdhci.h" +#include "qom/object.h" + +#define TYPE_AXIADO_SDHCI "axiado-sdhci" +OBJECT_DECLARE_SIMPLE_TYPE(AxiadoSDHCIState, AXIADO_SDHCI) + +typedef struct AxiadoSDHCIState { + SysBusDevice parent; + + SDHCIState sdhci; + MemoryRegion emmc_phy; + BusState *sd_bus; +} AxiadoSDHCIState; --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537031; cv=none; d=zohomail.com; s=zohoarc; b=l6pFQuLor2XoIktYo6uCIv7nMiV8mDt2aThTg1PQOHq9jbDIQJ1YkibZc5op7BsnKlkOJsaCZbuYr7jodnec8jSussS84K/9ScQWrjhIowIQHyit3iowCykgUt49JRA5dAXJP1mfR/LV8z3TVsVjdlDDHtgyg/iTRAwN24DidF0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537031; h=Content-Transfer-Encoding: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:Cc; bh=zuwGx2HFEApiFHISSkbLdQ9wtICYLQqmdzOFnfBhNzI=; b=X5Bj7umrNbddbF5OK7HplYrG1z6qOMwrp+MHRax2m7e0zIGtPikZfxLzU91yIrqvKXLeZ+N6e50S2QOqlZrBnWyEgL/6UC5cjw01DqHFaEVNmD0kA9jFqCYB37aM4Ae8c2l1smwwOV8n8ZE2ooe5P92DdMFJEAgb9II/x8wMqLQ= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537031969294.43064404868596; Wed, 12 Aug 2026 05:17:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7t7-0004bf-W1; Wed, 12 Aug 2026 08:16:54 -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 1wu7t6-0004Ww-Hy for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:52 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7t4-00005j-Of for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:52 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-4954df200ddso6379945e9.0 for ; Wed, 12 Aug 2026 05:16:50 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537009; x=1787141809; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=zuwGx2HFEApiFHISSkbLdQ9wtICYLQqmdzOFnfBhNzI=; b=ChnukK7FN4WqJNs+FwuKxF17jN2pVVLr6catk5l/TYTNICYR8lMjRRJvX0R9NDTF0c I5eMFTVspMzPBxvkHLbGWSlf+eyO3SdnlU/GnOeXUAZmZuBFmk2tX4NpTGp+R+uTWl+b iPi559SpighCcLgXjcA79w7IQ1HCZAsUNoUxj//f6nC/3GLOcfh94tPp6L1dycJbhrpz 5TXjzjIRAu/Wbx1P2mt4CnFgYvZtezS1WS3ESevmQ7/o4/gsYrFcnoxepOYJnk1Q4IkJ enFt+Pq+DwLFbJKwA4sORxT+Ov6IjA2J2R+PsHnvG9e7CEV1dwQJshFMVHH/3mJ9Hxpn S/3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537009; x=1787141809; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zuwGx2HFEApiFHISSkbLdQ9wtICYLQqmdzOFnfBhNzI=; b=J5EALTxGAyG5UQTywuu/F1JPBpSIzSbci9wtGBrQ19vDfamjH96iLKa1+8NoOl2EO0 6IYAQkkiU6PFP5EiCTlEHg+9NDdB2lwN2ANKJCAZ2mhDYb5xsd9F5QkVabktF2Hz/81Q yS5jSCPmABOiCUQAee2mhsI/XDdiUGDn4kAjNVrwRKdumORCxX0S9T2iMNulbgLnjBBQ V66s56qFIh01EmUOzxpDGSz+zdiokFUlOjVITAunq3GVZKqQfXrBJNIzB8rkL51fnVOx YS4vp03/xgquOzXb8t5+A/at/K0wCAhPS3LDokr3kWhMIeRrXrAnP9H8cvHMkQbte+T4 6itQ== X-Gm-Message-State: AOJu0YxNrjSd5ZH52rXaDW90MsFJby18FJT//20CWpYRNL2VzvGiQbA4 ILw/fOsTFzWs6WSwcpITdfxXd4DxdbJKBeIRW0fNamoi6u59tlgLjV6zT/Jye1FuthCveo9XliL u9fMQ X-Gm-Gg: AR+sD13B+2iUM7yD6fb3LDisu4q0z+swWQpv8gI/JJoaVFOMob/SxQMtjcqgUQHnqMK 9Mnm18LYkb/u19L8hKTcruWqn2QB4e+2rQW2QqzsmcsRSSIthCV129cCQjyE6MUFncxwp6x5Cw7 GZi4sTlGTjqaqfbfw6gNckw8jKAtKeIbJl6mrFvJYzOSJuqtOzeNozbrk1sasAD+ENVFHwyAPYW qe6KXyG8n2nOADdaH5dcU4gvq1llINicRKs5YikNtZvA/8JIjvMvgO/0ol7Y3XGPNCsatkIKSfr YQSRWIAAgf5zyVPh9HZQKKUy126E2/1cLx9wNYLKzLCoxnEJYEyaZlPSiCSSnli9rH9Sp//r+VT xVI1h23XN93Nn+x2fZzCM8a3zWFqFqWq1huCcTh5mIbHUKy0HkSs0/hfEe7p20/UKHJAdMX4qCj A39XEC6nWddqilboHiVbj/2dV8QhHfFpd3USsnsmR2KrJzMazN2jJKMDRlmVujWM3a+c5ybgxUl k3Axl//g16ciLkH62qz8h1R/kgO69/EmJ1mXrbq5uvOzPd8PNYYCtBDnInBMaGBFh7qyZo= X-Received: by 2002:a05:600c:4f56:b0:499:7dfb:6e6a with SMTP id 5b1f17b1804b1-4997dfb6ed4mr28030725e9.5.1786537009219; Wed, 12 Aug 2026 05:16:49 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/26] hw/arm: ax3000-soc: Enable Axiado SD host controller Date: Wed, 12 Aug 2026 13:16:11 +0100 Message-ID: <20260812121622.649730-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537033646158500 Content-Type: text/plain; charset="utf-8" From: Kuan-Jui Chiu Enable SD host controller into Axiado AX3000 SoC to load kernel and rootfs from eMMC. Signed-off-by: Kuan-Jui Chiu Reviewed-by: Peter Maydell Message-id: 20260713073033.3883619-6-kchiu@axiado.com Signed-off-by: Peter Maydell --- hw/arm/Kconfig | 1 + hw/arm/ax3000-soc.c | 22 ++++++++++++++++++++++ include/hw/arm/ax3000-soc.h | 7 +++++++ 3 files changed, 30 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 69161a439c..32e7d83339 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -731,4 +731,5 @@ config AXIADO_SOC select ARM_GIC select CADENCE # UART select AXIADO_CLK + select AXIADO_SDHCI select UNIMP diff --git a/hw/arm/ax3000-soc.c b/hw/arm/ax3000-soc.c index aaeae11074..23903b081b 100644 --- a/hw/arm/ax3000-soc.c +++ b/hw/arm/ax3000-soc.c @@ -35,6 +35,7 @@ static void ax3000_init(Object *obj) } =20 object_initialize_child(obj, "clk", &s->ax3000_clk, TYPE_AX3000_CLK); + object_initialize_child(obj, "sdhci0", &s->sdhci0, TYPE_AXIADO_SDHCI); } =20 static void ax3000_realize(DeviceState *dev, Error **errp) @@ -46,6 +47,7 @@ static void ax3000_realize(DeviceState *dev, Error **errp) QList *redist_region_count; SysBusDevice *sdhci0_sbd; DeviceState *card; + DriveInfo *dinfo; =20 /* CPUs */ for (int i =3D 0; i < sc->num_cpus; i++) { @@ -165,6 +167,26 @@ static void ax3000_realize(DeviceState *dev, Error **e= rrp) return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->ax3000_clk), 0, AX3000_PLL_BASE); + + /* SDHCI */ + sdhci0_sbd =3D SYS_BUS_DEVICE(&s->sdhci0); + if (!sysbus_realize(sdhci0_sbd, errp)) { + return; + } + + sysbus_mmio_map(sdhci0_sbd, 0, AX3000_SDHCI0_BASE); + sysbus_mmio_map(sdhci0_sbd, 1, AX3000_EMMC_PHY_BASE); + sysbus_connect_irq(sdhci0_sbd, 0, + qdev_get_gpio_in(gic_dev, AX3000_SDHCI0_IRQ)); + + dinfo =3D drive_get(IF_SD, 0, 0); + if (dinfo) { + card =3D qdev_new(TYPE_SD_CARD); + qdev_prop_set_drive_err(card, "drive", + blk_by_legacy_dinfo(dinfo), + &error_fatal); + qdev_realize_and_unref(card, s->sdhci0.sd_bus, &error_fatal); + } } =20 static void ax3000_class_init(ObjectClass *oc, const void *data) diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h index 329aa4e769..52b47aa829 100644 --- a/include/hw/arm/ax3000-soc.h +++ b/include/hw/arm/ax3000-soc.h @@ -13,6 +13,7 @@ #include "hw/intc/arm_gicv3_common.h" #include "hw/char/cadence_uart.h" #include "hw/misc/axiado_clk.h" +#include "hw/sd/axiado_sdhci.h" #include "hw/core/sysbus.h" #include "qemu/units.h" =20 @@ -34,6 +35,9 @@ OBJECT_DECLARE_TYPE(Ax3000SoCState, Ax3000SoCClass, AX300= 0_SOC) #define AX3000_UART2_BASE 0x80620000 #define AX3000_UART3_BASE 0x80520800 =20 +#define AX3000_SDHCI0_BASE 0x86000000 +#define AX3000_EMMC_PHY_BASE 0x80801C00 + #define AX3000_TIMER_CTRL 0x8A020000 #define AX3000_PLL_BASE 0x80000000 =20 @@ -52,6 +56,7 @@ typedef struct Ax3000SoCState { MemoryRegion dram[AX3000_NUM_BANKS]; Ax3000ClkState ax3000_clk; CadenceUARTState uart[AX3000_NUM_UARTS]; + AxiadoSDHCIState sdhci0; } Ax3000SoCState; =20 typedef struct Ax3000SoCClass { @@ -65,6 +70,8 @@ enum Ax3000Irqs { AX3000_UART1_IRQ =3D 113, AX3000_UART2_IRQ =3D 114, AX3000_UART3_IRQ =3D 170, + + AX3000_SDHCI0_IRQ =3D 123, }; =20 #endif /* AXIADO_AX3000_H */ --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537137; cv=none; d=zohomail.com; s=zohoarc; b=TinecMLfRreDDOHwHeIKqnAGvF4rA49F4TNS7r5R763/42/FlB41bapyd5x3ItBsM0jsIm4U/etrL3d+f+J/6ZInuY/dr0TNavelrtybEQa+1A/TJenVA4yimoIhejQ1Q4N3JzQ4pywQ4Y1MqDh4ws6O/ZlkE0mHhmxEmeRUfP0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537137; h=Content-Transfer-Encoding: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:Cc; bh=h+cmZP9tIR8/f3Ux03T5Hyngz9RHSqaEs0VOCoIAJMU=; b=dDqIOLInXykq3bbdF3mgNDIxOIZobbRYFkUaFMg6lU2RIQHvlgJsRi2pdFjis/91vJSKvRCTovCOTfZVr0V3HECJ2a+36qiGh1/BQthpzoIffBzefqkeDxEO3F9ZJ9gvEKBZ4G+KYET6J9KUuraoeGU1DT3JKaNrB2fSIaetlBI= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537137158727.2267349237264; Wed, 12 Aug 2026 05:18:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tD-0004zd-Mk; Wed, 12 Aug 2026 08:16:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wu7t9-0004eg-5g for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:55 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7t7-000076-5P for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:54 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-4980dc26022so8858375e9.1 for ; Wed, 12 Aug 2026 05:16:52 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537012; x=1787141812; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=h+cmZP9tIR8/f3Ux03T5Hyngz9RHSqaEs0VOCoIAJMU=; b=kfieIBTeGpy4cWOWaf3yeNIUizZLO7XZKtX7VwSHyp4NxJlTRWW6QIASlc2pA+OXud ZgaFTz1g08PD4EwtBljgOvVWr7oPjW7yKuuo+sfzm1dRM4m8Cv68yLOUtDeD4VT9N9uP t6Gv/8w1wT1ogEf0JyBZq5TIGnILdNVpOtd6Z07/wCwEeXhPpSTBkrqgW4y68IO4LXI8 pV5szSLCmgaanu/qETvD6QFx2J+4A/w48f/5Sp5OVyr4OFm7vYAlTrllOhMqUQXpIDmc 3XpiIK4LMWP0e0BfgxMMJxmHm0KcvrAKdKUjOY5ADc1pdEVJQ+NkYwdHsjqcsJN65dor 6k3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537012; x=1787141812; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=h+cmZP9tIR8/f3Ux03T5Hyngz9RHSqaEs0VOCoIAJMU=; b=Qq8Q5aetF23XwQSRX+N5lvXpSjYE5qFij7s05PtRBLVHBBaEprscxnwXj+jg301WQQ CaLkxyG6j1uOCoVz27Ny2CYrZobxAIT/gt4FY1N27cG1EwejJYAG8fS/+h4NpQniyBO/ BmBKzTckyne2ew7+r3gR/7rgO2rtiGrcrfdOduk2RNxwCl1VUrknxrckhNJNmJN0drg8 wVy7c4wpzRFKkpYsqz2oPUzBbzYIQCZL51WtgYiaOIJrP6msdi/fackP2PK1zCwgCiEM J00RiuDgupAsXhx05NmhUmgwpy7iqVJ/RD/hBkgCiMkrvEH20hvhfl+m7jkqqN6WlIg0 ZStA== X-Gm-Message-State: AOJu0YxciBUnffBKpj87iLa7b6ogc6+Ve6rimHvUdBofxwfrI24TiztZ owbpK89SSIEp/T6YUrYnAk/kyZGK6iCj5sQsZrwXlIFmLiUORcPHDMIlbl69it4w5DrLyu/SDTA L/RRo X-Gm-Gg: AR+sD11KowUl3t2JhnC3m+yp111c6KfKAaYZ2MN1kEznZjXrCIF0dAd8SMbO7UZf756 ZVxQ/gRTMVZZf3fQ9DScsyaryYsodkBa+sV3nrIu9AWpoCLCgFPpa4aPul49c8H6EL+yO+ESd/U /IiHLyrMfw40NtIx72J4FC250ZJlvITG18NbVgsTeP9vB8rr7rChKOsCOnn3BpA/qjNck7/31ZJ A5NxMe1GseK+sJoSvCXys2NlDyMhrJ5BDsN3EYIDHQGCiY559APsdDkRGlk9saKo5hGSsb/eEzD LzrAtAFwVlFfgvlenRT0k5WTawhQmV2NxGF4VRzHtZ5nzfwf2ex1IKfJvrPWkP6lwgnbfHc7tT6 BjxvZjoo4Ik0cB6fo/eXcMS7TtmrYoNp/mt80DqfzSVHe4XzxBfZXTk39Ju0+wes6a/44yS3oCd 0Gl40zMqqb5Fql0tOgI8FJEjpR2OjuRb83A9b/5xbeXhq/yduOgR9EqhFY5g6nqA0cTVNCFNKhG cD8JF3lsnQXOdrSwLr+wIWOH5CMbZQQSJpj3LnyT5gSs3OU61kz08+5ZBMePKXnKAaQ6w== X-Received: by 2002:a05:600c:35c5:b0:499:79b9:e226 with SMTP id 5b1f17b1804b1-4997bf7c39fmr68421225e9.0.1786537011766; Wed, 12 Aug 2026 05:16:51 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 16/26] hw/arm: Add Axiado EVK SCM3003 Date: Wed, 12 Aug 2026 13:16:12 +0100 Message-ID: <20260812121622.649730-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537138401158500 Content-Type: text/plain; charset="utf-8" From: Kuan-Jui Chiu Add EVK axiado-scm3003 built with AX3000 SoC Signed-off-by: Kuan-Jui Chiu Message-id: 20260713073033.3883619-7-kchiu@axiado.com Reviewed-by: Peter Maydell [PMM: KConfig for the board has to depend on TCG && ARM] Signed-off-by: Peter Maydell --- hw/arm/Kconfig | 6 ++++ hw/arm/ax3000-boards.c | 56 ++++++++++++++++++++++++++++++++++ hw/arm/ax3000-evk.c | 27 ++++++++++++++++ hw/arm/meson.build | 3 ++ include/hw/arm/ax3000-boards.h | 28 +++++++++++++++++ 5 files changed, 120 insertions(+) create mode 100644 hw/arm/ax3000-boards.c create mode 100644 hw/arm/ax3000-evk.c create mode 100644 include/hw/arm/ax3000-boards.h diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 32e7d83339..d16b3d2f47 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -733,3 +733,9 @@ config AXIADO_SOC select AXIADO_CLK select AXIADO_SDHCI select UNIMP + +config AXIADO_EVK + bool + default y + depends on TCG && ARM + select AXIADO_SOC diff --git a/hw/arm/ax3000-boards.c b/hw/arm/ax3000-boards.c new file mode 100644 index 0000000000..4b8deec15c --- /dev/null +++ b/hw/arm/ax3000-boards.c @@ -0,0 +1,56 @@ +/* + * Axiado Boards + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/arm/ax3000-boards.h" +#include "hw/arm/boot.h" +#include "hw/arm/machines-qom.h" +#include "qemu/error-report.h" +#include "qom/object.h" + +static struct arm_boot_info ax3000_binfo =3D { + .loader_start =3D AX3000_DRAM0_BASE, + .board_id =3D -1, +}; + +static void ax3000_machine_init(MachineState *machine) +{ + Ax3000MachineState *ams =3D AX3000_MACHINE(machine); + + ams->soc =3D AX3000_SOC(object_new(TYPE_AX3000_SOC)); + object_property_add_child(OBJECT(machine), "soc", OBJECT(ams->soc)); + sysbus_realize_and_unref(SYS_BUS_DEVICE(ams->soc), &error_fatal); + + ax3000_binfo.ram_size =3D machine->ram_size; + arm_load_kernel(&ams->soc->cpu[0], machine, &ax3000_binfo); +} + +static void ax3000_machine_class_init(ObjectClass *oc, const void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->init =3D ax3000_machine_init; + mc->default_cpus =3D AX3000_NUM_CPUS; + mc->min_cpus =3D AX3000_NUM_CPUS; + mc->max_cpus =3D AX3000_NUM_CPUS; + mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("cortex-a53"); +} + +static const TypeInfo ax3000_machine_types[] =3D { + { + .name =3D TYPE_AX3000_MACHINE, + .parent =3D TYPE_MACHINE, + .instance_size =3D sizeof(Ax3000MachineState), + .class_size =3D sizeof(Ax3000MachineClass), + .class_init =3D ax3000_machine_class_init, + .interfaces =3D aarch64_machine_interfaces, + .abstract =3D true, + } +}; + +DEFINE_TYPES(ax3000_machine_types) diff --git a/hw/arm/ax3000-evk.c b/hw/arm/ax3000-evk.c new file mode 100644 index 0000000000..a170848871 --- /dev/null +++ b/hw/arm/ax3000-evk.c @@ -0,0 +1,27 @@ +/* + * Axiado Evaluation Kit Emulation + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/arm/ax3000-boards.h" + +static void axiado_scm3003_class_init(ObjectClass *oc, const void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->desc =3D "Axiado SCM3003 EVK Board"; +} + +static const TypeInfo ax3000_evk_types[] =3D { + { + .name =3D MACHINE_TYPE_NAME("axiado-scm3003"), + .parent =3D TYPE_AX3000_MACHINE, + .class_init =3D axiado_scm3003_class_init, + } +}; + +DEFINE_TYPES(ax3000_evk_types) diff --git a/hw/arm/meson.build b/hw/arm/meson.build index 0254b82df1..8ee5307a91 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -112,6 +112,9 @@ arm_common_ss.add(when: 'CONFIG_VEXPRESS', if_true: fil= es('vexpress.c')) =20 arm_common_ss.add(when: ['CONFIG_AXIADO_SOC', 'TARGET_AARCH64'], if_true: = files( 'ax3000-soc.c')) +arm_common_ss.add(when: ['CONFIG_AXIADO_EVK', 'TARGET_AARCH64'], if_true: = files( + 'ax3000-boards.c', + 'ax3000-evk.c')) =20 arm_common_ss.add(files('boot.c')) =20 diff --git a/include/hw/arm/ax3000-boards.h b/include/hw/arm/ax3000-boards.h new file mode 100644 index 0000000000..4a632661e1 --- /dev/null +++ b/include/hw/arm/ax3000-boards.h @@ -0,0 +1,28 @@ +/* + * Axiado Boards + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef AXIADO_BOARD_H +#define AXIADO_BOARD_H + +#include "hw/core/boards.h" +#include "hw/arm/ax3000-soc.h" + +#define TYPE_AX3000_MACHINE MACHINE_TYPE_NAME("ax3000") +OBJECT_DECLARE_TYPE(Ax3000MachineState, Ax3000MachineClass, AX3000_MACHINE) + +typedef struct Ax3000MachineState { + MachineState parent; + + Ax3000SoCState *soc; +} Ax3000MachineState; + +typedef struct Ax3000MachineClass { + MachineClass parent; + +} Ax3000MachineClass; +#endif --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537160; cv=none; d=zohomail.com; s=zohoarc; b=imFbrxVgCO3x2e1uzZocQcRFLFKEOg+9MG46PTdmUpbVpzYJa4uISDPTQCO3sR+kX823j7xcVsEMz3QJKfnDMMKTKxGO6cr/lhQSNlC5+TpPS1mddrLUpuTYjONV9q9Y/lUoW4ZNFWdlV13HkILHxv3lRf1xRBlHA+rO3j0XCNs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537160; h=Content-Transfer-Encoding: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:Cc; bh=vLzCtO/q0xkPG+tEhvDl6lmMcAmm/+QbfRTYtGckE5A=; b=IWlXWNnW1oagkFZoKl00a7bpQdPVN/c1AUBhboefLdrXdkAFTyVsCNrQ+qLE3Gxqyg/9jEniZvwP1V1PsuAOLte8jL+OHIh2pIkgt3Fixue7q5FLKMYbgrYUxN1uYHsDUlW3zJ8gnzOCsebCcrBpXcDjPUQdKNxbLuZdK66/sE8= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537160889959.3970283345384; Wed, 12 Aug 2026 05:19:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tE-00055I-EH; Wed, 12 Aug 2026 08:17:00 -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 1wu7tB-0004s2-L1 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:58 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7t8-00008f-Uf for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:57 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-49978908b35so6612545e9.0 for ; Wed, 12 Aug 2026 05:16:54 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537013; x=1787141813; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=vLzCtO/q0xkPG+tEhvDl6lmMcAmm/+QbfRTYtGckE5A=; b=QbuOM7lDuU7Q8WwL2tmr2E6EklstOgYVHT85Y1ho8DdqlyzUjTJzQVsKvAt/2U8pKI nyTTXyh2VwboggYKuI44+mpts2ScfQEDvXsCZIO7ESvHb7vV8j5hRCmOLSsgJJ005rfc /bB873dDhH+JOoAMOqdimZj/h+hyU6sgCaXdu5c5Z687/yQaZdPJ+Jnv21HptpN6Ryyo EP5LXUr8ZsVKGrqOPvWATdFqd9O41UyQWLzLMOTB6oI4cajz4Oo6WU/aUSBcfjMHNZNL ArUDiJ3RXUF2wx6PMC1GIEfKMh6wnEByRxnkZgcUlwnc7ojeE0D3OJ6suSNumg08iTlO ytdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537013; x=1787141813; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=vLzCtO/q0xkPG+tEhvDl6lmMcAmm/+QbfRTYtGckE5A=; b=h4fIj3AW5o3T+tHJdkj78K17p5TKhYaV2sUMJ72GZJkuukKlgsFjbp2HfeJLEROotO IlDoxPsPcP7fsUoDjJvWe1YoHo2SikC6QbMJuiODhHVPGTfYstHzoG8h1zXICjR4rLYU zMP/pJcFVdJZ6mfi4qKUNgm/Ues3bBv6qdHO4EWV7iGVxCFYtdXkS0wOIqQ4GaHoRYL4 mkuw74XAko5f3Gqlz/PPJaANDmO2CCSjGd2Q8H5XX28WeX7Nx2SYmzDDYG+X0RIFQ2f9 AD5X7r6J0sih/93voF4DngG1c7boxtkoKgj3ibrZINzwL9EwRe60AHieNYwzLOAGcqul EKyA== X-Gm-Message-State: AOJu0YwkdsgiqU5SVmkqxsEj7R03CcMwqPkL+HrLJksbxUh6xKMApEPx t2aHz4v2mCZXhNtMbz60V/rFTtXOL2ZfGBoNP3b5r51xDhjxpojSTg7p48YC1xWewayCB4ji00V Qfuh3 X-Gm-Gg: AR+sD11NLt2QSqkCQ30nwgTOmgTiaGEQMb/Sr2y20A+KXCCDn6l5Og9WY+pjbeDNPHE bns55tldP9fYVyBZyU7gekDhzI/E1E05gpOLTtgD/k1KGJ+88xn6eAXeneWwhy1BEq0Rx02ltMn A2xMa7RWa4Z6tazxrmQdQC4barvPVzEaDBuQaMuTzoucIAqPBZJlwIkf9KAw3vRiOgWFajkTnl3 EP46O0LcjJX+aMSuO9NTSnb1+o39P6MpnRNHRKNFmhsjToZC2N8C1++nEpUqUrc1HxkjhNnpD+w drbCxG99Cwto3Fj3HukhnQh5YWhGSRYbJaJwih9rWW7V1Y7k7WJZlQT8/N4FWYXiqhIkygUoDTT P0rDml0wnoPsXhKhw6ztlIBVWY3uSSh7YsDfS9G7FaYAC84SmBc/k7Uajmvcmtped84ChRGjXKs dhwz/dAANjD9xs9+8TRZrpyttpKhLnL149poHx4R/Gw//C9cSB4mcjH3i2T7A/N2Vn9MANA/b6r 3OMdRoalPKWjQj6pT4AjlxgJlKc+NozmQ7gZSwulzKe4h41+0kQYeoQwgOmLKOvyg+NXA== X-Received: by 2002:a7b:c7ca:0:b0:495:4e89:3f30 with SMTP id 5b1f17b1804b1-4997c13c8ccmr46608175e9.15.1786537013338; Wed, 12 Aug 2026 05:16:53 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 17/26] hw/gpio: Add Cadence GPIO controller Date: Wed, 12 Aug 2026 13:16:13 +0100 Message-ID: <20260812121622.649730-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537162514158501 Content-Type: text/plain; charset="utf-8" From: Kuan-Jui Chiu This patch add a new model for Cadence GPIO controller which supports 32 pins and interrupts for level-triggered/edge-triggered type on input pins. Also define new trace functions for analysis purpose and new configuration = to enable this model. Signed-off-by: Kuan-Jui Chiu Message-id: 20260713073033.3883619-8-kchiu@axiado.com [PMM: drop unnecessary and marker comments] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/gpio/Kconfig | 3 + hw/gpio/cadence_gpio.c | 292 +++++++++++++++++++++++++++++++++ hw/gpio/meson.build | 1 + hw/gpio/trace-events | 5 + include/hw/gpio/cadence_gpio.h | 53 ++++++ 5 files changed, 354 insertions(+) create mode 100644 hw/gpio/cadence_gpio.c create mode 100644 include/hw/gpio/cadence_gpio.h diff --git a/hw/gpio/Kconfig b/hw/gpio/Kconfig index a209294c20..fcc7c70bd5 100644 --- a/hw/gpio/Kconfig +++ b/hw/gpio/Kconfig @@ -30,3 +30,6 @@ config PCF8574 =20 config ZAURUS_SCOOP bool + +config CADENCE_GPIO + bool diff --git a/hw/gpio/cadence_gpio.c b/hw/gpio/cadence_gpio.c new file mode 100644 index 0000000000..ce8256b381 --- /dev/null +++ b/hw/gpio/cadence_gpio.c @@ -0,0 +1,292 @@ +/* + * Cadence GPIO emulation. + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/gpio/cadence_gpio.h" +#include "hw/core/irq.h" +#include "migration/vmstate.h" +#include "qemu/log.h" +#include "trace.h" + +static void cdns_gpio_update_irq(CadenceGPIOState *s) +{ + qemu_set_irq(s->irq, s->isr ? 1 : 0); +} + +static void cdns_gpio_update_isr_with_inpvr(CadenceGPIOState *s, uint32_t = new) +{ + uint32_t new_isr =3D 0; + uint32_t any_edges, rising_edges, falling_edges, deassert_mask; + + /* + * If ITR is set, this is level triggered: + * set corresponding ISR bits when IVR matches new inpvr value. + */ + new_isr |=3D s->itr & ~(s->ivr ^ new); + + /* + * If ITR is not set, this is edge-triggered: + * If IOAR bit is set, trigger on any edge; + * otherwise trigger on rising edge if IVR is set, + * trigger on falling edge if IVR bit is 0. + */ + any_edges =3D s->ioar & (s->inpvr ^ new); + rising_edges =3D s->ivr & ~s->inpvr & new; + falling_edges =3D ~s->ivr & s->inpvr & ~new; + new_isr |=3D ~s->itr & (any_edges | rising_edges | falling_edges); + + /* + * In bypass mode or if this isn't an input pin, the corresponding ISR + * bit is forced to zero. + */ + deassert_mask =3D s->bmr | ~s->dmr | s->imr; + + new_isr &=3D ~deassert_mask; + s->isr =3D new_isr; + + cdns_gpio_update_irq(s); +} + +static void cdns_gpio_update_isr(CadenceGPIOState *s) +{ + cdns_gpio_update_isr_with_inpvr(s, s->inpvr); +} + +static void cdns_gpio_set(void *opaque, int line, int level) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(opaque); + uint32_t new_inpvr =3D deposit32(s->inpvr, line, 1, level ? 1 : 0); + + trace_cdns_gpio_set(DEVICE(s)->canonical_path, line, level); + + cdns_gpio_update_isr_with_inpvr(s, new_inpvr); + + /* Sync INPVR with new value */ + s->inpvr =3D new_inpvr; +} + +static inline void cdns_gpio_update_output_irq(CadenceGPIOState *s) +{ + uint32_t is_output =3D ~s->bmr & ~s->dmr & s->oer; + + for (int i =3D 0; i < CDNS_GPIO_NUM; i++) { + if (extract32(is_output, i, 1)) { + /* Forward the output value to corresponding irq */ + qemu_set_irq(s->output[i], extract32(s->ovr, i, 1)); + } + } +} + +static uint64_t cdns_gpio_read(void *opaque, hwaddr offset, unsigned size) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(opaque); + uint32_t reg_value =3D 0x0; + + switch (offset) { + case CDNS_GPIO_BYPASS_MODE: + reg_value =3D s->bmr; + break; + + case CDNS_GPIO_DIRECTION_MODE: + reg_value =3D s->dmr; + break; + + case CDNS_GPIO_OUTPUT_EN: + reg_value =3D s->oer; + break; + + case CDNS_GPIO_OUTPUT_VALUE: + reg_value =3D s->ovr; + break; + + case CDNS_GPIO_INPUT_VALUE: + reg_value =3D s->inpvr; + break; + + case CDNS_GPIO_IRQ_MASK: + reg_value =3D s->imr; + break; + + case CDNS_GPIO_IRQ_STATUS: + reg_value =3D s->isr; + break; + + case CDNS_GPIO_IRQ_TYPE: + reg_value =3D s->itr; + break; + + case CDNS_GPIO_IRQ_VALUE: + reg_value =3D s->ivr; + break; + + case CDNS_GPIO_IRQ_ANY_EDGE: + reg_value =3D s->ioar; + break; + + default: + qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Bad register at offset 0x%" + HWADDR_PRIx "\n", TYPE_CADENCE_GPIO, __func__, offse= t); + break; + } + + trace_cdns_gpio_read(DEVICE(s)->canonical_path, offset, reg_value); + + return reg_value; +} + +static void cdns_gpio_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(opaque); + + trace_cdns_gpio_write(DEVICE(s)->canonical_path, offset, value); + + switch (offset) { + case CDNS_GPIO_BYPASS_MODE: + s->bmr =3D value; + cdns_gpio_update_output_irq(s); + cdns_gpio_update_isr(s); + break; + + case CDNS_GPIO_DIRECTION_MODE: + s->dmr =3D value; + cdns_gpio_update_output_irq(s); + cdns_gpio_update_isr(s); + break; + + case CDNS_GPIO_OUTPUT_EN: + s->oer =3D value; + cdns_gpio_update_output_irq(s); + break; + + case CDNS_GPIO_OUTPUT_VALUE: + s->ovr =3D value; + cdns_gpio_update_output_irq(s); + break; + + case CDNS_GPIO_IRQ_EN: + s->imr &=3D ~value; + cdns_gpio_update_isr(s); + break; + + case CDNS_GPIO_IRQ_DIS: + s->imr |=3D value; + cdns_gpio_update_isr(s); + break; + + case CDNS_GPIO_IRQ_TYPE: + s->itr =3D value; + break; + + case CDNS_GPIO_IRQ_VALUE: + s->ivr =3D value; + break; + + case CDNS_GPIO_IRQ_ANY_EDGE: + s->ioar =3D value; + break; + + case CDNS_GPIO_INPUT_VALUE: + case CDNS_GPIO_IRQ_MASK: + case CDNS_GPIO_IRQ_STATUS: + /* Read-Only */ + break; + + default: + qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Bad register at offset 0x%" + HWADDR_PRIx "\n", TYPE_CADENCE_GPIO, __func__, offse= t); + break; + } +} + +static const MemoryRegionOps cdns_gpio_ops =3D { + .read =3D cdns_gpio_read, + .write =3D cdns_gpio_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + } +}; + +static const VMStateDescription vmstate_cdns_gpio =3D { + .name =3D TYPE_CADENCE_GPIO, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32(bmr, CadenceGPIOState), + VMSTATE_UINT32(dmr, CadenceGPIOState), + VMSTATE_UINT32(oer, CadenceGPIOState), + VMSTATE_UINT32(ovr, CadenceGPIOState), + VMSTATE_UINT32(inpvr, CadenceGPIOState), + VMSTATE_UINT32(imr, CadenceGPIOState), + VMSTATE_UINT32(isr, CadenceGPIOState), + VMSTATE_UINT32(itr, CadenceGPIOState), + VMSTATE_UINT32(ivr, CadenceGPIOState), + VMSTATE_UINT32(ioar, CadenceGPIOState), + VMSTATE_END_OF_LIST() + } +}; + +static void cdns_gpio_reset(DeviceState *dev) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(dev); + + s->bmr =3D 0; + s->dmr =3D 0; + s->oer =3D 0; + s->ovr =3D 0; + s->inpvr =3D 0; + s->imr =3D 0xffffffff; + s->isr =3D 0; + s->itr =3D 0; + s->ivr =3D 0; + s->ioar =3D 0; +} + +static void cdns_gpio_init(Object *obj) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(obj); + + memory_region_init_io(&s->iomem, obj, &cdns_gpio_ops, s, + TYPE_CADENCE_GPIO, CDNS_GPIO_REG_SIZE); + + qdev_init_gpio_in(DEVICE(s), cdns_gpio_set, CDNS_GPIO_NUM); + qdev_init_gpio_out(DEVICE(s), s->output, CDNS_GPIO_NUM); + + sysbus_init_irq(SYS_BUS_DEVICE(obj), &s->irq); + sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->iomem); +} + +static void cdns_gpio_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + device_class_set_legacy_reset(dc, cdns_gpio_reset); + dc->vmsd =3D &vmstate_cdns_gpio; + dc->desc =3D "Cadence GPIO controller"; +} + +static const TypeInfo cdns_gpio_info =3D { + .name =3D TYPE_CADENCE_GPIO, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(CadenceGPIOState), + .instance_init =3D cdns_gpio_init, + .class_init =3D cdns_gpio_class_init, +}; + +static void cdns_gpio_register_types(void) +{ + type_register_static(&cdns_gpio_info); +} + +type_init(cdns_gpio_register_types) diff --git a/hw/gpio/meson.build b/hw/gpio/meson.build index 6a67ee958f..0555f44b6a 100644 --- a/hw/gpio/meson.build +++ b/hw/gpio/meson.build @@ -19,3 +19,4 @@ system_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files('= aspeed_gpio.c')) system_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files('aspeed_sgpio.c')) system_ss.add(when: 'CONFIG_SIFIVE_GPIO', if_true: files('sifive_gpio.c')) system_ss.add(when: 'CONFIG_PCF8574', if_true: files('pcf8574.c')) +system_ss.add(when: 'CONFIG_CADENCE_GPIO', if_true: files('cadence_gpio.c'= )) diff --git a/hw/gpio/trace-events b/hw/gpio/trace-events index cea896b28f..80ca783a03 100644 --- a/hw/gpio/trace-events +++ b/hw/gpio/trace-events @@ -46,3 +46,8 @@ stm32l4x5_gpio_read(char *gpio, uint64_t addr) "GPIO%s ad= dr: 0x%" PRIx64 " " stm32l4x5_gpio_write(char *gpio, uint64_t addr, uint64_t data) "GPIO%s add= r: 0x%" PRIx64 " val: 0x%" PRIx64 "" stm32l4x5_gpio_update_idr(char *gpio, uint32_t old_idr, uint32_t new_idr) = "GPIO%s from: 0x%x to: 0x%x" stm32l4x5_gpio_pins(char *gpio, uint16_t disconnected, uint16_t high) "GPI= O%s disconnected pins: 0x%x levels: 0x%x" + +# cadence_gpio.c +cdns_gpio_read(const char *path, uint64_t offset, uint32_t value) "%s:reg[= 0x%04" PRIx64 "] -> 0x%" PRIx32 +cdns_gpio_write(const char *path, uint64_t offset, uint64_t value) "%s:reg= [0x%04" PRIx64 "] <- 0x%04" PRIx64 +cdns_gpio_set(const char *path, int line, int level) "%s:[%d] <- %d" diff --git a/include/hw/gpio/cadence_gpio.h b/include/hw/gpio/cadence_gpio.h new file mode 100644 index 0000000000..69646ba639 --- /dev/null +++ b/include/hw/gpio/cadence_gpio.h @@ -0,0 +1,53 @@ +/* + * Cadence GPIO registers definition. + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef CADENCE_GPIO_H +#define CADENCE_GPIO_H + +#include "hw/core/sysbus.h" +#include "qom/object.h" + +#define TYPE_CADENCE_GPIO "cadence_gpio" +OBJECT_DECLARE_SIMPLE_TYPE(CadenceGPIOState, CADENCE_GPIO) + +#define CDNS_GPIO_REG_SIZE 0x400 +#define CDNS_GPIO_NUM 32 + +#define CDNS_GPIO_BYPASS_MODE 0x00 +#define CDNS_GPIO_DIRECTION_MODE 0x04 +#define CDNS_GPIO_OUTPUT_EN 0x08 +#define CDNS_GPIO_OUTPUT_VALUE 0x0c +#define CDNS_GPIO_INPUT_VALUE 0x10 +#define CDNS_GPIO_IRQ_MASK 0x14 +#define CDNS_GPIO_IRQ_EN 0x18 +#define CDNS_GPIO_IRQ_DIS 0x1c +#define CDNS_GPIO_IRQ_STATUS 0x20 +#define CDNS_GPIO_IRQ_TYPE 0x24 +#define CDNS_GPIO_IRQ_VALUE 0x28 +#define CDNS_GPIO_IRQ_ANY_EDGE 0x2c + +struct CadenceGPIOState { + SysBusDevice parent_obj; + + MemoryRegion iomem; + + uint32_t bmr; + uint32_t dmr; + uint32_t oer; + uint32_t ovr; + uint32_t inpvr; + uint32_t imr; + uint32_t isr; + uint32_t itr; + uint32_t ivr; + uint32_t ioar; + qemu_irq irq; + qemu_irq output[CDNS_GPIO_NUM]; +}; + +#endif /* CADENCE_GPIO_H */ --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537050; cv=none; d=zohomail.com; s=zohoarc; b=nd0Yln9rDMjlO4Qg57TRun0TA1ymWlSFIZOUSRuCXROofR2ST4tMNh++8tWL2u2kpvuN4uMz6VxPANbmW536wWzYi5LJ58gC7OVtmoLuJ0vsit19RWKctVrrdAihdtqBLqfuQ1qGxkcxKBqNz5E6Df8XoGhMPyCWqdNEdkUR8uE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537050; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=e0YVN3WRoWrd/UG2bcPyhH+dTDALg7wvKBtIHRwrjZA=; b=ftL+cv61vLU71ZX9o6xsMr7zZd5Bgr40atRl/KX//DwlGHQYSw9v2fyB6wTo55hTgtOCRU8+oYrOTr9Sfy65Nm3U4aac+6/Pb/dcFHPtctOQVZDIbZGt9yZZ1cvIqzm4ZkRySlgW1fzKs3ccd8IY0K0AqLLwCKvIkRy4FMXRvWs= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537050046860.8502472535242; Wed, 12 Aug 2026 05:17:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tF-00059R-FA; Wed, 12 Aug 2026 08:17:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wu7tD-0004xf-97 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:59 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tA-00008v-LR for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:16:58 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-495590dde14so10845185e9.0 for ; Wed, 12 Aug 2026 05:16:56 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537015; x=1787141815; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=e0YVN3WRoWrd/UG2bcPyhH+dTDALg7wvKBtIHRwrjZA=; b=Xn6uV2jQX/qrwF3WZAVlijIL1/TdEst1chnKV06BlhmLTz/3k+RrbxY1uGfmpV+3JC 8pje08xymUz52isVEwx7PB2rjVNjhXgaDZcfLUXEn6In67/RgqNKMTcPkMX1sdIKLX/M Y1OGveQGq3rpPV80LVX3UrbzxTci/k10FCeiRki1t0uH0BExayX+txzoBt/WntX+YAJM xIBcAIhUwegZxSObLYTNowuCoKek8RITLMvvj7kqHM11rvLG58KeQSo3OMYzEdA4kSBR sRKYMIIZF3OGhE0Fi744Ac2yUInLgw7ZOd8tjrWkf4zQN+uPOksuOiYBxDoMlymk+GHG sbuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537015; x=1787141815; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=e0YVN3WRoWrd/UG2bcPyhH+dTDALg7wvKBtIHRwrjZA=; b=KSlzIUG80PIdt4nKRBoDU8zg9DDP3KKWsWQNWfasABOxGoI+gLtrGVh/ybf8X+Z6Rp +TXphpgYNRymw3swc+9efnR+hS+HuNLKwzt2sY5ycOq0Et7yZvaj223ZIew3FjbdfXaK ypXxX5MiOx2M05IsQa9FUweOE5rDUz0nQ36zdpq2wy4GD7ZJhGL5RlvNIK7zd098L6Xg KmqiRIlMWO19c+krTJgTRTl10C5BPRzCPHFPhNMWJ+SLr1YCIuD+iNXLqAS1edwS7ohj wpeCOeGeRyx/D9IHEHwWJA58QvlEz7Ttt0hepYKFpjpsMpQDSqKRNYeMBkSmC/N12iF8 0etA== X-Gm-Message-State: AOJu0YzuFd4GK4VBdBkstN8D6Uw4pylKZ+7iycRoRqDfeJ9754n9ZBUq uLnXNrDkrB8/CIhmuHkt1iMIc6Fs340mhq0rUh1Wohwyji0LhpRdW7qTBxinga9Yc2uI0sbKdk/ wbWaW X-Gm-Gg: AR+sD13aiC3w4oB82X/D5vh8SJ0a7gupK4VjrbVYCv8zvAd1KKMQ88DFqpSMB5LdaUV GjC5CXBvbG/jVzsJk7bu0ucvvdwoN1XhC8B2gehLlq4zlVK+//Lq5XtJ2cZ/uScO3y8Nwy9l3Kg F524lBugqE6DWRhD0Y+2+tv5HfYrCinhN1cZqEDQPWUrIO+lNpIRXSznormkSPV6qpASAbEBlgx Rgs+pDQGv8UGkbKkU/dqiLHZ3hZ+fxtTzJ1sjrITFmRaHekNf9IJxbbZI81FlIzVrHLkmlZxvqk M+UuwX1fYBFsKnk4ufduKK3DpC0PpaI9/d02hFN4PjdIm728ePR7mCasYrBd1ipTCL21DiqgCEl Hjxu9gwpR+T5mD0VJ8h8fZQGxs/WEJHu5CsMVQ5rE4YEh5qjVOSqjBtj/vDVs7BmMzMZJ6ghBYq ECWQUJz4ToPKoq1yZj1HGjZd7hmTxmDWYZ83VOhXMuK+jE7lkp4Z8iX8n21mz6S7r2JMmsHlFWZ ws12KHaylyzl8ssU34sjjpunZt58C6ZNUQAYJBdSaBB3MopHHiljM73gGaOTmku2+8GUw== X-Received: by 2002:a05:600c:1d0c:b0:495:7a5a:d96c with SMTP id 5b1f17b1804b1-4997c163b3fmr57113335e9.18.1786537015162; Wed, 12 Aug 2026 05:16:55 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 18/26] hw/arm: ax3000-soc: Enable Cadence GPIO controllers Date: Wed, 12 Aug 2026 13:16:14 +0100 Message-ID: <20260812121622.649730-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537051750158500 From: Kuan-Jui Chiu Enable 8 Cadence GPIO controllers into Axiado AX3000 SoC Signed-off-by: Kuan-Jui Chiu Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260713073033.3883619-9-kchiu@axiado.com Signed-off-by: Peter Maydell --- hw/arm/Kconfig | 1 + hw/arm/ax3000-soc.c | 30 ++++++++++++++++++++++++++++++ include/hw/arm/ax3000-soc.h | 21 +++++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index d16b3d2f47..e22c34a2e1 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -731,6 +731,7 @@ config AXIADO_SOC select ARM_GIC select CADENCE # UART select AXIADO_CLK + select CADENCE_GPIO select AXIADO_SDHCI select UNIMP =20 diff --git a/hw/arm/ax3000-soc.c b/hw/arm/ax3000-soc.c index 23903b081b..71e31c6fb4 100644 --- a/hw/arm/ax3000-soc.c +++ b/hw/arm/ax3000-soc.c @@ -36,6 +36,11 @@ static void ax3000_init(Object *obj) =20 object_initialize_child(obj, "clk", &s->ax3000_clk, TYPE_AX3000_CLK); object_initialize_child(obj, "sdhci0", &s->sdhci0, TYPE_AXIADO_SDHCI); + + for (int i =3D 0; i < AX3000_NUM_GPIOS; i++) { + g_autofree char *name =3D g_strdup_printf("gpio%d", i); + object_initialize_child(obj, name, &s->gpio[i], TYPE_CADENCE_GPIO); + } } =20 static void ax3000_realize(DeviceState *dev, Error **errp) @@ -187,6 +192,31 @@ static void ax3000_realize(DeviceState *dev, Error **e= rrp) &error_fatal); qdev_realize_and_unref(card, s->sdhci0.sd_bus, &error_fatal); } + + /* GPIOs */ + const struct { + hwaddr addr; + unsigned int irq; + } gpio_table[] =3D { + { AX3000_GPIO0_BASE, AX3000_GPIO0_IRQ }, + { AX3000_GPIO1_BASE, AX3000_GPIO1_IRQ }, + { AX3000_GPIO2_BASE, AX3000_GPIO2_IRQ }, + { AX3000_GPIO3_BASE, AX3000_GPIO3_IRQ }, + { AX3000_GPIO4_BASE, AX3000_GPIO4_IRQ }, + { AX3000_GPIO5_BASE, AX3000_GPIO5_IRQ }, + { AX3000_GPIO6_BASE, AX3000_GPIO6_IRQ }, + { AX3000_GPIO7_BASE, AX3000_GPIO7_IRQ } + }; + + for (int i =3D 0; i < AX3000_NUM_GPIOS; i++) { + if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) { + return; + } + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpio[i]), 0, gpio_table[i].addr= ); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio[i]), 0, + qdev_get_gpio_in(gic_dev, gpio_table[i].irq)); + } } =20 static void ax3000_class_init(ObjectClass *oc, const void *data) diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h index 52b47aa829..344fcb6f3c 100644 --- a/include/hw/arm/ax3000-soc.h +++ b/include/hw/arm/ax3000-soc.h @@ -13,6 +13,7 @@ #include "hw/intc/arm_gicv3_common.h" #include "hw/char/cadence_uart.h" #include "hw/misc/axiado_clk.h" +#include "hw/gpio/cadence_gpio.h" #include "hw/sd/axiado_sdhci.h" #include "hw/core/sysbus.h" #include "qemu/units.h" @@ -38,6 +39,15 @@ OBJECT_DECLARE_TYPE(Ax3000SoCState, Ax3000SoCClass, AX30= 00_SOC) #define AX3000_SDHCI0_BASE 0x86000000 #define AX3000_EMMC_PHY_BASE 0x80801C00 =20 +#define AX3000_GPIO0_BASE 0x80500000 +#define AX3000_GPIO1_BASE 0x80580000 +#define AX3000_GPIO2_BASE 0x80600000 +#define AX3000_GPIO3_BASE 0x80680000 +#define AX3000_GPIO4_BASE 0x80700000 +#define AX3000_GPIO5_BASE 0x80780000 +#define AX3000_GPIO6_BASE 0x80800000 +#define AX3000_GPIO7_BASE 0x80880000 + #define AX3000_TIMER_CTRL 0x8A020000 #define AX3000_PLL_BASE 0x80000000 =20 @@ -46,6 +56,7 @@ enum Ax3000Configuration { AX3000_NUM_IRQS =3D 224, AX3000_NUM_BANKS =3D 2, AX3000_NUM_UARTS =3D 4, + AX3000_NUM_GPIOS =3D 8, }; =20 typedef struct Ax3000SoCState { @@ -56,6 +67,7 @@ typedef struct Ax3000SoCState { MemoryRegion dram[AX3000_NUM_BANKS]; Ax3000ClkState ax3000_clk; CadenceUARTState uart[AX3000_NUM_UARTS]; + CadenceGPIOState gpio[AX3000_NUM_GPIOS]; AxiadoSDHCIState sdhci0; } Ax3000SoCState; =20 @@ -72,6 +84,15 @@ enum Ax3000Irqs { AX3000_UART3_IRQ =3D 170, =20 AX3000_SDHCI0_IRQ =3D 123, + + AX3000_GPIO0_IRQ =3D 183, + AX3000_GPIO1_IRQ =3D 184, + AX3000_GPIO2_IRQ =3D 185, + AX3000_GPIO3_IRQ =3D 186, + AX3000_GPIO4_IRQ =3D 187, + AX3000_GPIO5_IRQ =3D 188, + AX3000_GPIO6_IRQ =3D 189, + AX3000_GPIO7_IRQ =3D 190, }; =20 #endif /* AXIADO_AX3000_H */ --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537050; cv=none; d=zohomail.com; s=zohoarc; b=NbDP9BfmXWLd0W0kBEOlqnlE8djDKQJBLMsN2FgjdZkUBLFahdHve6+eqFxmGslCJQhNUw537bNToeZt3TorCI+iIhsc0RPnBSjbgOH2JSUTLkwAMLTq3TtJa156+L3cDVN+SEMExJgRGT+ATd1N1Nd97z4iSh7xrbJn8fbU16s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537050; h=Content-Transfer-Encoding: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:Cc; bh=cdxBjmzv8M0DalZ8uTMP0FJBApNth+sIgrWTaLR2xuw=; b=VGPRFipd0YxrydfBQQwhaMfrDnDRcjC2/LP01EctotOjqigj/abuvS2YY3N2YMC/Rf7HLmj+9veCfy4FXoOaaXapyiSC6IW7BdWYnVQDhySzMjTAHPZc4bcGd8nCl7gdMUQKzWdySR84YkD9IjtUCRKcJZK5EPJ+vJNeNCEB/O0= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537050762450.8321821551938; Wed, 12 Aug 2026 05:17:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tH-0005Ia-Db; Wed, 12 Aug 2026 08:17:05 -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 1wu7tE-00057M-O3 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:00 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tC-00009D-GK for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:00 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-4954aff6088so5677495e9.3 for ; Wed, 12 Aug 2026 05:16:58 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537017; x=1787141817; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=cdxBjmzv8M0DalZ8uTMP0FJBApNth+sIgrWTaLR2xuw=; b=smoSDYg3hX3iRn6wy3kLvEZslwQemOabu2CjtYlIar7lE/3+Y2E/hoDWXv3pv6Xh2o kvY/ngdesIrpwYofQvuZxj/xPh9iPEu5TcjWOvpZYLgjc9z6E/OICoPUH5JqJlM415d2 fwXZFRrRjRxkhD6Jt2Ounho18tqZh7nlpli0MkQjJwiUlJp/KJlACgsi8iBUs7qms1/M D7GR2VWBYXh21et5DB+aKf64U94macW4+aJ/LARDEOlOTuGTtsMaunZKysqkmmvSn4HE 1GY9ybQK2GypKH/OuuUSoiJZOZrx1YBcU2YDFo2Z9na8psCYzBiy3MNMpKuCejOK15qr 6aZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537017; x=1787141817; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=cdxBjmzv8M0DalZ8uTMP0FJBApNth+sIgrWTaLR2xuw=; b=ik+cJ1cQ/DT9ifFdeodU3n0xvXBGsQa0fbDNr1S1X924TwzYcTiF6RbcatR7ju1a1r TZJUXiJVP16fWDtge+15a212N3QnVfxt4x24VPFWN+KCPzv4YJOV5FWx7z5XXAfGssbj M9Yjr1qRkeA6Tmh6/liS4lPFb8Y4dBwsSAxSAHO78LmlPpHTYmYagE7gJuroHvIpjNJO ngOXFIxb8MoJuXoiqItC4c5HeHIvR+6ZbqIQf7Lr+u1K+w/O/qskH+yNaGRgWV0IiKOf 9gH69662Nczvch/MPW2y6eYdKxSDz1zvyS4lYe4SlVi1CP3cpJaya/tlKORIkL1N0Nhu SC9w== X-Gm-Message-State: AOJu0YzOq+8gNhcGPFzbm16bKN18yy7NTE0psPtdyQOVaPtqkNQG2qHz cuU3o1B4cnhtX58WvUkqhn7of0ff4RFnsLbMPJ2HAC6gRdMh3gpH0jlg6hQjmWqujs89VC3I+S3 2PdRS X-Gm-Gg: AR+sD13HsBL2y3omG0cP1P7Bqlp0cD5QkweZ/TeMbmgM2Agekxn48yZE5w3RPhjlpLB 3fDNB4CXK3JOjMaMqcyldppXB2F8gch7OrSJ4tlDOJP6m9LVguIuyiL0q5dn2KzbzTyqF5oJcxE pcQGCg9heLT4ErQpFEfK4QfUU2clg07rYcUSefQgt1Ek2RIS4H9MT4B5o2xO/ZIvopUCjBPFRIM x6CEdlUzwKqiR5tNjPR+6J8Keplb+R36Y55E51gLOPoM4Fg58HW7Eyza4NMp21FeHblBBr9kCln Qzl/PLFOOsGyFlO5InnsvTBQ10F4eufyGIdi02GpLRZqoBkCzdNLuCdLGHLc2qA3G8q+0FIgYcA sWsctXQooUQIwFLXAbd8dq3rfbNxKEAPtxoAVSG5Oe+qoZjXuDx/gKnWptLwvox8SRS3FX2wCXp 0FfcDupXkhfEXSNowj1OCx5Czx+AsY+Cg8bzwwLZ4cDAVBrCSfQkRXbMYyFc/oDZS/rSkNbgTma nft8sEDPEQFjzafVwAcw+5VgpsW/HXa1nQYgYHZ6ZrWP0HkvA+XkGYcT4xLC8Up/vsDH2tnl2KG 9HBa X-Received: by 2002:a05:600c:8209:b0:495:6e68:5df2 with SMTP id 5b1f17b1804b1-4997c13dd74mr66844645e9.12.1786537017136; Wed, 12 Aug 2026 05:16:57 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 19/26] hw/arm/armsse.c: fix SSE-300 s32kwatchdog address Date: Wed, 12 Aug 2026 13:16:15 +0100 Message-ID: <20260812121622.649730-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537051697158500 Content-Type: text/plain; charset="utf-8" From: Simon Xu The SSE-300 SLOWCLK Secure Watchdog Timer is only defined at address 0x5802e000 in the secure region. Page 45 of the SSE-300 TRM specifies that "the watchdog is Secure access only". SSE-300 TRM: https://support.arm.com/documentation/101773/latest/ Fixes: 8901bb414a24 ("hw/arm/armsse: Add SSE-300 support") Suggested-by: Peter Maydell Signed-off-by: Simon Xu Message-id: 20260805191257.11303-2-simonxhy0404@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/arm/armsse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index ddb210c895..e99b491bd9 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -409,7 +409,7 @@ static const ARMSSEDeviceInfo sse300_devices[] =3D { .name =3D "s32kwatchdog", .type =3D TYPE_CMSDK_APB_WATCHDOG, .index =3D 0, - .addr =3D 0x4802e000, + .addr =3D 0x5802e000, .ppc =3D NO_PPC, .irq =3D NMI_0, .slowclk =3D true, --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537186; cv=none; d=zohomail.com; s=zohoarc; b=jhWkM6ULZ5/w9153rGGUG3E0grGKdOEVmLRqqQUu9TS70RTjUH1UtvRe2TqWvLyqtw8LX4s7kJXwIFkAHWOqcfqR93PMiJCEbLQGUev52L2XCN5Nqe72uRxT1huezY9KENLN79n/sAT2zU0nY/Xye0eluAMOHF6Sg35ITf4avqk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537186; h=Content-Transfer-Encoding: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:Cc; bh=OJwnVGJOp5YThs7oLPg16ZMm61BA/rQ26EmJaeQg1HU=; b=M+EkOjh1TuZ86Oaw1nXjAsJuG4DP5PelLPrPuKjwQ6fB3aJyxlRrUHF/QCxwVC39D64r7ImYTWHi+ZXly/3/F0uB1Hka28ESEjTOfJTmsU7Nvv2ihwpD1Wh3TObCmzvC8KVOW90MiYv8DA3oS8Iu65D7o0zwSxN2gqgiDbCCdKc= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537186178479.75803470600783; Wed, 12 Aug 2026 05:19:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tP-0005Q0-Ax; Wed, 12 Aug 2026 08:17:12 -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 1wu7tG-0005DE-4B for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:02 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tD-00009L-Rc for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:01 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-495757ccbc1so7937625e9.2 for ; Wed, 12 Aug 2026 05:16:59 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537018; x=1787141818; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=OJwnVGJOp5YThs7oLPg16ZMm61BA/rQ26EmJaeQg1HU=; b=cCmFB2mpYDQCZneg19ekSZqzR+Ao0lqvpJTBGdVRFduCKf/fiEYAChFEHk5/bSt38I t90jxLDGwtN5R2+tgh7+LYTfRsfpD+ZnyBECFUXx0gJiq5AnPLUylHAanze9DQ3NKIjM aFvl3zHSzS0pAMmBlNj2qtHM6zaCxS3EA3oOEYhrZF/8/0Ya0eQuKXwtbpp1lhgaE5z0 8EJw0n0Hatr+fE+IAWLARzCWBczUMnN9RTKtSVuOu0T6ceuAHOlFW6PEPsUqEI8j2mIL 7TUzwfJ1Sk8Lv6LbfsQRL4b+W5l3NJbR9dG8gLLnDCrQYR8mKnVzRJB3Od24GhXAjZDi Y4tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537018; x=1787141818; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=OJwnVGJOp5YThs7oLPg16ZMm61BA/rQ26EmJaeQg1HU=; b=bDWQXqnEL1J+0cox5hxDbZ/Hc3hSUANOi6CzzAWPoDhj+Vut+9UiFRKXrTSRsPCtfu vZk0YrOHTeXbBOSVsnUlIjB4+INfQZTcqvSAghAQ1AQbFT37TCDYxVq4ghNxooE7Ebx3 2PKBX1YmGniClouql4pInPWtpQ48FL8/yg/qD/TtEu5Bes5nOKrdhzxWcabLHiUlIdsC YQzUQTqwbJ2iwI3ywGsC9wScb8FlMZQ5wNTEzjAxziHl+3ASMUAqmlfglZgy3nrMgJSy 5ZZnTNL7o9XwZUN0wxvx68qJfeVlpAIUlM1+O0fmjlN+r5xFLZ70RGjW3StfzjV+5kZu sCcg== X-Gm-Message-State: AOJu0YxhR9ns22J4ZQ/k6eT5gkWzR9fLZg4rAQhULAw4NplO58wMX4wm VJzE3UUkzUMjd6piiFfN0g8qPTvVgHvzHO6w5ch7dCc1Q2RTCw44IUx7fgZDM2A8sPPRBv1/+dm OsIiM X-Gm-Gg: AR+sD12Yc0h5vo/O21MZniwxnFNdoa/IgiDOSzTdBMOcLgMcUFqeeQ5ACsCO0KKpT8q D1CgbxbnlIGQ8RGm3S/FGDbX0MfYZXyqLXjzPg/srb5+oGu6dm+xgEAko29uH+Demw1Vpg9qwIR DJvyVMSQnikBJ1ynclP495gDJzY9oFbvrypg853AzwEdve7skkMACHXF2sgPdh5s/b/OU01Iv+c U8cZ5zbPSeqnZLGBOLccF1lJxB1o421Gz8bX0NwBfHqsrbDuPMIbIO8rNdo2ZyL+Heb2ySNcTzo EgdKEUUzonZCfsRTQS30CDMaO6XkuiFcUexuoDakMjbjc+A0vajk073gBwYTPawP8CH6Pskwvu+ jHEygybft11z/pqhojbd+zZl90+2aHysopkY8Zax1tc9Yqb96Rg96Jlb8IOOxSjn+Haz9/03sIW orMWHgE0iR6ujaVZc1kC2DyfB+EFJciGPANCRoihxD4LRA73nVk6Ud6zSuwZVllnpBf7NzgiUo7 xy/YUX+GMQmYn02JBsJvnUDg3kBK8D5Wwa5XjUXVSLqwRIvu1IIUL4vmSK0+86voJ2hpA== X-Received: by 2002:a05:600c:4585:b0:498:ee7:e40a with SMTP id 5b1f17b1804b1-4997c153b58mr59418915e9.16.1786537018381; Wed, 12 Aug 2026 05:16:58 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 20/26] hw/arm/armsse.c: fix SSE-300 PPU addresses Date: Wed, 12 Aug 2026 13:16:16 +0100 Message-ID: <20260812121622.649730-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537186604158500 Content-Type: text/plain; charset="utf-8" From: Simon Xu The SSE-300 CPU0_PPU, MGMT_PPU, DEBUG_PPU had the wrong addresses that were the same as the SSE-200 addresses. Page 146 of the SSE-300 TRM defines the addresses of the PPUs. SSE-300 TRM: https://support.arm.com/documentation/101773/latest/ Fixes: 8901bb414a24 ("hw/arm/armsse: Add SSE-300 support") Signed-off-by: Simon Xu Message-id: 20260805191257.11303-3-simonxhy0404@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/arm/armsse.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index e99b491bd9..55fbc2c290 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -452,7 +452,7 @@ static const ARMSSEDeviceInfo sse300_devices[] =3D { .name =3D "CPU0CORE_PPU", .type =3D TYPE_UNIMPLEMENTED_DEVICE, .index =3D 2, - .addr =3D 0x50023000, + .addr =3D 0x58023000, .size =3D 0x1000, .ppc =3D NO_PPC, .irq =3D NO_IRQ, @@ -461,7 +461,7 @@ static const ARMSSEDeviceInfo sse300_devices[] =3D { .name =3D "MGMT_PPU", .type =3D TYPE_UNIMPLEMENTED_DEVICE, .index =3D 3, - .addr =3D 0x50028000, + .addr =3D 0x58028000, .size =3D 0x1000, .ppc =3D NO_PPC, .irq =3D NO_IRQ, @@ -470,7 +470,7 @@ static const ARMSSEDeviceInfo sse300_devices[] =3D { .name =3D "DEBUG_PPU", .type =3D TYPE_UNIMPLEMENTED_DEVICE, .index =3D 4, - .addr =3D 0x50029000, + .addr =3D 0x58029000, .size =3D 0x1000, .ppc =3D NO_PPC, .irq =3D NO_IRQ, --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537128; cv=none; d=zohomail.com; s=zohoarc; b=khoDLRDywXIf8rEBmXxY6I958SX5I4nbTPo/p+irAhyfyGu1LL34e16iR4c15CADjbG/gROJY4Kgt925e0F+SmO62rdQI9Z39cYXWW37v+pF0FZt0C+8xXWvjYm6XadwQZWYxkijMyQWIHHWkmMBQbfR4tQh3PRorOAsfjjC6AE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537128; h=Content-Transfer-Encoding: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:Cc; bh=DrJmT+G7mTqQA3ZMgApM+c+RAZwLbfyz9fx1PjswSaM=; b=Tt40b4/g3A/20ySJeRCoCE0eqdgEOIDlvOIf7362Ujq9e+LCcmPMHFkvQt4+pAGqePp5jEeYc8IdhbS7fgVWd47kQb1v50LRR1PCSD6huN224mHa6q63aKZNNscARBUok/rYY2jitUqfcwccQv6BGs8RzOQG3JGYtz6GYD5FzRA= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537128374274.2234909525049; Wed, 12 Aug 2026 05:18:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tf-0005e7-0i; Wed, 12 Aug 2026 08:17:27 -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 1wu7tH-0005JD-Hi for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:07 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tF-00009f-O6 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:03 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-49954b88fffso9467465e9.0 for ; Wed, 12 Aug 2026 05:17:01 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.16.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:16:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537020; x=1787141820; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=DrJmT+G7mTqQA3ZMgApM+c+RAZwLbfyz9fx1PjswSaM=; b=w3GEWQF8ogpwtEuo1yzMQrSpjg+WuX6R4oQm6f6N8CvnkxML8ySViThLCAY+QpEnnO dLwDdZt3Q4xYGRrrfKd4UTsV+hLGvXZfLN7wuz1h65hNaaz2f1HuUw6qVlldWAIvTgdO pTbUkK7iqL5YYazeMLlpQ6rPJB3QRfh6xfGK5JquZQVba88t1cNk0pm/Hqd1NbN35SPT 5P0YwHEUiPJIsEMbalma02HzX1xDXOZFD67kkjztBzkdtffpr1TZrwEbo/7KxrZj65Xp xlw8OO8+b+txukhuyk5LCPVBwRTV4eBAI6uohvkdG4phMyWQtKJNCGnt8X5BvpZOX8Hu U6yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537020; x=1787141820; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=DrJmT+G7mTqQA3ZMgApM+c+RAZwLbfyz9fx1PjswSaM=; b=gklHlTk0e2Dj240RXSZvGoE3bD4rYx3M1Rk1x3MJcYVkiC2zgne+5v0nPkYLBktBvz M+fgScjeaJwv6ZWPKWFiKxjPfjpWogSAJx1rJ3grwV9UDNv2h3ZWTr/OdSPKPgJ2g97e WEsHRmqz+xaybPKklqmS4InrsmomwHGHrq4GsfGq8hYJCXLyIIXOaVAqkNz7XyYH7/8e Z0Z61njJp9w16MTZ+ihcZQvUdAoxyRdp4xdzZkWuhwY8QGbqunqWRYt2zTXxxXX9bwd7 /Ju0NSvP6/4hz4Hm20e+vbT19FXWJwgJpHGc+Stpb61ggzILZ7h9i1l2aFr2qo7h3LJI uljg== X-Gm-Message-State: AOJu0YyfZ8qdIJBGzfADFWRds1vcCfvfdRWGp6BtUP2RIq/6LGj9/Ii/ /jR/iANiZgNwz8t3VFBxeJxGWFTtc0e0DuTqTcD7i5z08kTvdyqbjL+2CGo0WKRstVrK5bPvLWv 2LTQY X-Gm-Gg: AR+sD13fDiA57dXpD/agsTAFX8iBiTwQbo5fwRvIU7Ah/CpnYhgNid5qdoWhRk8UnaU 5rPW93giy9OOfPgKekVRYXUMI+VTK2GoIZmfpLYVfVhtKEE5FVRCZMJBPAtRDIUehW1iuOz+GDi d0rvkCjsPES18crRqDCnkL0keVI18fFVaYPMmUWoP+S0ZrNys3PtD2HoLaMnhh0GE9ywcAAdx/u tpM4ceBe81cw0wPJdjJzpX3Nvrvica7ybOHDzWg6Os3xIQ3ND6V0z8vlblxBa4qMxY3gteq0GZd o/SHDBLdXYl9OHYIaFyYepFv7DHnqGS+8G34BNAD97j4fzGv1Bjp4Y3wNc5FQjzQpPeLbKdMjAL x9YJdLzNIthsqqq9O6DzBLm+ae5lfaydLAKapHy40yOZPcZ8VoFAZ3EsdBnNr7OAK4M0AmnqA+R qanYq1SE0xTw5oyrZ8uYZid9g9Ta7N6dnJWbIhO05a0QeKp8zrU9+0qnajccge50StR1DjF2wbI QyLNbSxv8adtp02R7mlTLj7HzskARcXqNnkRbMz0l2CczQsxx737qN/2D5uxGGDYD7YoQ== X-Received: by 2002:a05:600c:3551:b0:494:6baa:ccef with SMTP id 5b1f17b1804b1-4997c0fe5ccmr48138355e9.11.1786537020241; Wed, 12 Aug 2026 05:17:00 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 21/26] hw/arm/mps2-tz.c: fix AN547 APB PPC EXP0 MPC ports Date: Wed, 12 Aug 2026 13:16:17 +0100 Message-ID: <20260812121622.649730-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537130651158500 Content-Type: text/plain; charset="utf-8" From: Simon Xu The AN547 TRM defines them to be on ports [15:13], not [2:0]. AN547 TRM: https://developer.arm.com/documentation/dai0547/latest/ Fixes: eb09d533d87f ("hw/arm/mps2-tz: Add new mps3-an547 board") Suggested-by: Peter Maydell Signed-off-by: Simon Xu Message-id: 20260805191257.11303-4-simonxhy0404@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/arm/mps2-tz.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index f101c1b7c3..81e64a91de 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -1048,6 +1048,19 @@ static void mps2tz_common_init(MachineState *machine) const PPCInfo an547_ppcs[] =3D { { .name =3D "apb_ppcexp0", .ports =3D { + { /* port 0 USER MEM APB0 */ }, + { /* port 1 USER MEM APB0 */ }, + { /* port 2 reserved */ }, + { /* port 3 reserved */ }, + { /* port 4 NPU APB0 */ }, + { /* port 5 NPU APB1 */ }, + { /* port 6 reserved */ }, + { /* port 7 reserved */ }, + { /* port 8 reserved */ }, + { /* port 9 reserved */ }, + { /* port 10 reserved */ }, + { /* port 11 reserved */ }, + { /* port 12 reserved */ }, { "ssram-mpc", make_mpc, &mms->mpc[0], 0x57000000, 0x1000 = }, { "qspi-mpc", make_mpc, &mms->mpc[1], 0x57001000, 0x1000 }, { "ddr-mpc", make_mpc, &mms->mpc[2], 0x57002000, 0x1000 }, --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537128; cv=none; d=zohomail.com; s=zohoarc; b=iUxtRHS5jGGz/boLLjaiEUkf6vUi9xuNsp3fgHbMCgtKNoG6JRNMkqkw3yGwZjxLIa8lOR2CHXY4BepDhNM1pJgkH3agA7HPFUohOIZwj8kF6ixEoKx5abwgDautQNmel7IQBjNjiVJo28z9jr66FlvHF0SRmS+KFHYejyq66qw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537128; h=Content-Transfer-Encoding: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:Cc; bh=VFAGvdUzF8Q2nO8sgm70jMuASLCRJi0pDi5OWo1q7GI=; b=Icdx0hIIK2OlBkKhDWKBuzRZgWOaIvquRSbtozXOJifWYmtBnPVhWUpyecLlAxL/bs5cunDgC76q2hedcvEH3YfR3bPKn/6vO5drEMTgS/H7qiz1ZQXboFgrcCBCgwUB8chfvyz5bFSv2ZGS5IHUHcuHtuhogBmgg4Ct3wQSzw4= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537128781576.7961845126858; Wed, 12 Aug 2026 05:18:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tg-0005vj-85; Wed, 12 Aug 2026 08:17:28 -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 1wu7tJ-0005JR-KV for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:10 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tH-0000A2-Hi for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:04 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4953de5be0aso6131955e9.0 for ; Wed, 12 Aug 2026 05:17:03 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.17.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:17:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537022; x=1787141822; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=VFAGvdUzF8Q2nO8sgm70jMuASLCRJi0pDi5OWo1q7GI=; b=HL/AAm72iY/u63EV1M/6WIVnRZU4ddL6h2eFrxDuGLbsMHzUPAXHKLgQDJK/PBg4t5 6Wme8j5qwwRIZgHjBFI3WDIQxxigsL55IlsR7V5zKqWfmCaMIl5EGVx6fbT+eMGmQ5Ir HA1ybgbz4YR5UaFoh4VpP5esry3zH3vdawVDFXq2uTcOP3xmlZiTthqfNPt+dqAqA4ze REyx3ZEUU7w/aYmaJUnzsrdLoxgE69+6UrgLUalMMFqWH6aVk/lCALkTs43aSVefTaA/ 800qP10ct2RgHuSXkgwMJJHTdyTzhE/P6l/K9aq2GVSNQobUSV87y68G50jSnlLwq5WI mrhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537022; x=1787141822; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=VFAGvdUzF8Q2nO8sgm70jMuASLCRJi0pDi5OWo1q7GI=; b=rjSR5RR5jOFLEDlSq6AdhG1yN3I36sGaIm4EytqVcYsQM7lxQIeO1dUb29l9GYRt9h GA0o3Zr9cq//RdPV858ANZ99V6zm7GxeGr0RI6Kdfp+gDpmmAIJXYdES2S3wrkZJvUyd Rydh5y9rZQOc4kNft7hJyYu091zdpMdOWnz3v7EniF2BWI/5y9y/VEyVBs7ihMzWuhyo lXQypb2hxllDWe+y1coyBU97560MVmuX78P5wY/9BDbqRO39E2YSo7xpntwWwgDOnHoe xl2r+rzbMjVsyhzJbJIHd20BvHvosy/hptSzvx/AQEZ2RrBPYnQ36RugEIbTJYzIzvtb lLCA== X-Gm-Message-State: AOJu0Ywd7dZSSJhavXa5h7VI3uny2QEqbu7OMuS8SBl/dLTnpvbYe8Hl Mns+CfXXUGEaXNpKTpAN/84NHHo/radupNQsqIfZJEiwHDjeaE0upP4FsE6gD1TxwsklcEaPj9Z mxn3c X-Gm-Gg: AR+sD11RSEPbcZpdAlhFjGNn+lG6iWzvFe0+tte89tEDVgG3SJa7Pu1TEqV2+/ASISi Nb66NeYbYlBFB8SfJO4FquvomEB8LiwhM38Hc8zCqpJDChiSl2Tumcwdw/U9jZh4hy402OHMe1K enxhmXxr8r7CtKtswlS+bT9HOUhx3HCp8n5eY/9f/A5OTKI49br1KiVvUVJV8TrR77WO85S28Gm Z78h/+LY4sbuEhzlVy8gRbb2LoL8X24unRUdgkruRqWRy/C4jfpDP5enzpSOdTVE9dZrYNxxNZU +uag67ONlcj8FkN0VXE/Oq/jrnI8ep0I3IwxgEmwa3HWNWWkKRcJRgkgQtk8TxA+HA6QxjX354G oK4rAav54EoJeZRiouXPSzzQqqpCd3DI2kEitHlwNCBhVJmubgjlRspCRYjiwnOtWBH6r4GNyza KaSWXen7qVj26SYLJy+hHwyYKKeWKf+VrmZ53Tyh2jK0b6cxRL1ynMnY/NPcHftfKb5uug7s0My YoGTCt7HL53AElBfTrqHSo73NbASWFo+c+JtGAFygvkAJ6wUg9H0d8rOq45sjbcRAcYNw== X-Received: by 2002:a05:600c:3586:b0:495:5890:8f6c with SMTP id 5b1f17b1804b1-4997c116f31mr60235685e9.7.1786537021594; Wed, 12 Aug 2026 05:17:01 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 22/26] hw/arm/mps2-tz.c: add AN547 AHB PPC EXP1 DMA ports Date: Wed, 12 Aug 2026 13:16:18 +0100 Message-ID: <20260812121622.649730-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537130592158500 Content-Type: text/plain; charset="utf-8" From: Simon Xu Page 42 of the AN547 TRM defines the AHB PPC EXP1 ports with DMA 1-3 AN547 TRM: https://developer.arm.com/documentation/dai0547/latest/ Suggested-by: Peter Maydell Signed-off-by: Simon Xu Message-id: 20260805191257.11303-5-simonxhy0404@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/arm/mps2-tz.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index 81e64a91de..d6d178642b 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -1113,6 +1113,14 @@ static void mps2tz_common_init(MachineState *machine) { /* port 7 USER AHB interface 3 */ }, { "eth-usb", make_eth_usb, NULL, 0x41400000, 0x200000, { 4= 9 } }, }, + }, { + .name =3D "ahb_ppcexp1", + .ports =3D { + { /* port 0 reserved */ }, + { "dma1", make_dma, &mms->dma[1], 0x41201000, 0x1000, { 62= , 60, 61 } }, + { "dma2", make_dma, &mms->dma[2], 0x41202000, 0x1000, { 65= , 63, 64 } }, + { "dma3", make_dma, &mms->dma[3], 0x41203000, 0x1000, { 68= , 66, 67 } }, + }, }, }; =20 --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537072; cv=none; d=zohomail.com; s=zohoarc; b=Rp6JLOvW5M2PAH7feK/oEgIMWblm7oFesXpYABpvWqua42XuGBAHeOcaQ8ZrN/+mPWXdZg0s4jqH/t6MsYAJAydfkoZ/EB/U0Fhd5KKomoW+3kn8CGrxCNuRHOSY5iMoUt0oMTNlF1yFvP7s/nw/G6E/PBOUILhww1NminPAKB0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537072; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=3rtWh0v1RSIvMjWeHQCmuQFDZkwR3VRGBlPYdvsCgDM=; b=nvVUVCqqVsQFwkUUvgz+zWg1TauZTHsMCfTbci1eEaImTeYuypxpizwv3+6FJddQfeOY/ynNmntB6LZ1jT8AUuRj5fZ0FgSmsXUqJ32UmS43sI82bYlrQg95VERIhMwlQJvuyk0wImFfpFYtbfkv2/uaS+phVWkZCpnb4DiKhSI= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537072859521.4929322781013; Wed, 12 Aug 2026 05:17:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7ti-00067j-5B; Wed, 12 Aug 2026 08:17:30 -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 1wu7tL-0005Je-CK for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:10 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tI-0000AH-82 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:05 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-4954df200ddso6381645e9.0 for ; Wed, 12 Aug 2026 05:17:03 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.17.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:17:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537023; x=1787141823; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3rtWh0v1RSIvMjWeHQCmuQFDZkwR3VRGBlPYdvsCgDM=; b=LtRzR73yH9yA/hPl4C+2sdXhqsZp40C5rLvyaork2elpGTvyIZq7o4Hq4R3FutY057 0bblghogz9Izl+zA4Q1Vr8xEiScYTgIKuOlpjCMi26pkV/RFOj8LHexdm/oWWshWvucJ tfSqK7ekFzutQB1cimSchbHadr8z7FmpdYZCeSzy3fgfYQySDyMoGjvc0YGFoOU58sCB 3/qwAUfVN/zkaSup+zJqHt43/cJSames0lB5H9++0jwbN5VxlUVfJWgpR3pthYFASpdm wrYOanuhnjkF0moak87OZToRbmuouUVFgxo+TU0o899nWQ382lsysxAQiBJcBneTZTBJ OuFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537023; x=1787141823; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=3rtWh0v1RSIvMjWeHQCmuQFDZkwR3VRGBlPYdvsCgDM=; b=QdLBPNiIOHTS8jDTGePgGdrru/yRBif66h6ZClhneBjXm4V3OOAabYIipZlBGWP+IN Uc74B0+Fo8wov6HjUFQEckMlvxD05lqPBpsOcmt//ytd/I2MAJeVsFrLE0v02DJnVkss PJXbMg70lcMQh9LcMUTsyA8VPlK9i3esOvqmmR6mNLBV8x1cgr8X9NEBU4G8vdY4r74U 3wtPGguSOVkoGh6u/bkURD/sRvpNgsC8gYGjc4vlFoo7z6Gye5Wnlw8Y1QNuaE09YbGX OH6QuHcgAWNIoiCvgiR4plBYnCH95kwbZ6ajIR2nsJGyFXZi7TemUvhr2DhvIKPOrcZL nzWA== X-Gm-Message-State: AOJu0YwuhvVG+yrh/9aiDrODbX20jaLFZlVmQMdIQlGF68nLbj8LmhoY NjUFmMDdB436jJ5YHo77Hl0qYKg1eJabW3ZumDiUAizOJoMdS0TmFpjGEoEVGvMY0ZNY48jx7Ay nY65C X-Gm-Gg: AR+sD11JtGdeqQbRnYHUTbQfk02ECV41c0BQnLOye2Llpm+sajqxHvSk0DoNiWTArWp 1UUkEQDsuEmqXoOJhfTXOiIUmSPbcSQaqLgwTezS6clOFR7sAFWDcRD3IZG42dpXND49cOvbbgV Z3ghsrMI03PD4Rr+7Exmuu2fXLL49lYroUP4mxQKW0imjKXXIK5zA++Hulwj3kfWi99EO9hOgPF 3AMLufvj7t6tvwQ7DtqJdMh9K/quYbp/+A9OWgKjZrAf4lLeqJjYFjVzSTb21PgEhkn5rsg1rAb Q6Es42VGAEBxMBVpT1FTVa/nsuj/JX4zowguwCChZQP/luZFe1vfhWGx0JdsHEZyINWzcNyKl9X 9HdYxEqlqB1gM2mv44etJJBQFzn+rKSux6qMfTqnzh2fszomL1VNfbw6ij1JzPAW7KZuOefuvOH 6FPmZRUO7127JnMJ0VoFD2l0GT753CpKhiYC00BmJKgj5AmAO7z97O+TvUp7qlZGBEW6GJ5aUWk 1Mvcq8K6NWuvaGO7xaYq0xYh9etNlaiFXh0gFEgPbqhhYSTbNaSENBUIcqRvTy+begHjg== X-Received: by 2002:a05:600c:8b13:b0:496:b3a0:1cfe with SMTP id 5b1f17b1804b1-4997c116e06mr65103975e9.12.1786537022724; Wed, 12 Aug 2026 05:17:02 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 23/26] hw/i2c/bcm2835_i2c: Correct iomem size Date: Wed, 12 Aug 2026 13:16:19 +0100 Message-ID: <20260812121622.649730-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537073855158500 From: botszhuang The last valid register is the Clock Stretch Timeout (CLKT) at offset 0x1c. Since it is a 32-bit register, the total memory region size should be 0x1c + 4 =3D 0x20. Update the size parameter in memory_region_init_io() from 0x24 to 0x20 to accurately reflect the hardware specification. Suggested-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: botszhuang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260804144611.31735-1-huang.botsz@gmail.com Signed-off-by: Peter Maydell --- hw/i2c/bcm2835_i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i2c/bcm2835_i2c.c b/hw/i2c/bcm2835_i2c.c index 34de1f36e5..5f6093087d 100644 --- a/hw/i2c/bcm2835_i2c.c +++ b/hw/i2c/bcm2835_i2c.c @@ -222,7 +222,7 @@ static void bcm2835_i2c_realize(DeviceState *dev, Error= **errp) s->bus =3D i2c_init_bus(dev, NULL); =20 memory_region_init_io(&s->iomem, OBJECT(dev), &bcm2835_i2c_ops, s, - TYPE_BCM2835_I2C, 0x24); + TYPE_BCM2835_I2C, 0x20); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem); sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq); } --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537061; cv=none; d=zohomail.com; s=zohoarc; b=kKf+OGXaj28RS3eV8GHjYw5SEqZsSWrlSu1MJIWf7T+NAmMcJSbmOKTu29np0HLKX4oEbeTOktGs+LGTBVsjyJt3cxteYYZWpIA0vUzOBfyBhoLYgwNB2bf7DGfWdKc+Wd8pRfiuq4ysUzAtb5BwrulcbyzG9l2QdCh8+5v0KZU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537061; h=Content-Transfer-Encoding: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:Cc; bh=M3OvWhPufdzBYG2iCN0wQNpXMz4uhFvJxdOFnxIDwfQ=; b=KHvV3Jk9isSJp1w0uKdqyuGdShiqCipViZ+pcJ3Ad+R7TuB0yZmyOLLX3ng8gOywmzIR95HjL9JjeXiSu9IWmAhepedQz+Tw7i4gJA1OsvVfCBYYMecBO2w8Rysed+KuxIDsVlk/2JUWTrDonZ0w7liTEuGkFiOrrCITHZZiM2U= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537061531244.7039602794864; Wed, 12 Aug 2026 05:17:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7ti-0006D5-VR; Wed, 12 Aug 2026 08:17:31 -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 1wu7tN-0005Lp-HW for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:10 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tL-0000Ag-0y for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:08 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-4953de5be0aso6132325e9.0 for ; Wed, 12 Aug 2026 05:17:05 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.17.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:17:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537024; x=1787141824; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=M3OvWhPufdzBYG2iCN0wQNpXMz4uhFvJxdOFnxIDwfQ=; b=bXGvd6nL+/b4Ysqvf7S8QIeiY0Ph2myFVhzDibw48I9nRpli1LOOgA541UfZ6Ze7vQ /FDz5SwUnZ17MsOUCHup97U5HyBTsC2eH5paKxHGb+Ae7hkS0oRiPrfW3S1hPDzzaCtD 8UOcRUvX0i5EudxhmSuaWdEL1iMpMMtaEMvNLYLflpmS1a1FVpOs+yMkz+AApkJnSRJp T1TjrZtWJtp/JaPIYrT+nw/xXj0RVTYbASFAojO/TY9OZ6vk3MGRr3HC8GD0VuiNzgCM O8Xwn+1C/tnh13tl5unn1KSxcOmOl9s+8eN+NKIF8wfTlf8hkWOP7k2NS6rT2SjvGwtf XTDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537024; x=1787141824; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=M3OvWhPufdzBYG2iCN0wQNpXMz4uhFvJxdOFnxIDwfQ=; b=Rnf/+eML9wyuAdlG79uvoaTfakRqvuhT6tIg5FWdWHuvUM+02NB61bm+oGQ6+4zi1q eLRCz0lIuU7Lw4NIvlemWMx7stFSJ+lhErmTKp79NHSLVXA+UWz6eOnbopBsG0bRoibb UA0/lmbPJQtq8/tLBeI16lgDYeiUak5roBMGqVrmxAp1MnVasMhUKILkEDvFyJfo6Mha n7loypWRkc54dErDohopRK2cYLnZy/FPBLl6AwgynuVRfy5CoQfTPC9oHZRf/9nDiY4l P/RE1HtP0tHFryIKUaiNe3RfQ9S0lwUVgrQqme3jq2DAbowptF5YlhpGFkmpQ4PXpCaA y16w== X-Gm-Message-State: AOJu0YwFv17VJM8Uhu+Q+bxMWa9MYWMWT2U8rtuLz73ybUEjVQOKzIK/ Qk7BszvxrZQlgedZio2cAqIoc0gTKqM8yhgQZpzsFqi0B2vctlmNWV/hcEMPzU9R3etuYJb46SK gkUP4 X-Gm-Gg: AR+sD13smi1HFKh1HjqQnTDOK4cApGNPTS20gzCb0cBfv3lzEpb6Mmq5bJ8aKrgbMCL 4vLLPXRM02W9eP8FyrhVmiDMS/q6unIaVbdJ0wTVulcwp8T6vKAfPB5Plm5o/ZCxDWTsy1OTHMd p1HlBB+0l/Gq/rDGMIavOYCEEG/wEVxIHZKaJ4AlNCgeUBhgTVrYnAR8HSuGdJqv0rUcBCeAJld f/iE6fj/j1AcVNf4dDJkoqi7vW7hAeABMIPk0J1vTwGfIlqKSdNRtv4BaG+KDjd9FYoA9fl8Z4E 0fUeSVqwDz5PU2VaQrh0wPIpgzIuuu8JruDURPObcyFIH+4lPM9x6h/0vkP4ZRvGqpJg3kHO6QT UuOPnQ1y2XSqTzCsVRgsILfvPmzwUxgR+BF6shxfAtlnU+rDKkU0ZTzr3lkLbO0btItMZ2PlKwH Aqbtwf5qTU/+6VMmpQyTry/7PMa2WclY4iJ/0WR6LVV8HPSCVXNBI/jvxkwT+OwaBfAEniJ/5YQ cpEQkeP0FLoXSBOBWBHSZE7VTkiU3/9yPqoTM3otF4yM5+tSBqx0y4G7Jpv9S1pdN7USA== X-Received: by 2002:a05:600c:524c:b0:499:7410:545 with SMTP id 5b1f17b1804b1-4997c145066mr54576295e9.12.1786537024031; Wed, 12 Aug 2026 05:17:04 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 24/26] hw/misc/bcm2835_powermgt: implement a real watchdog timer Date: Wed, 12 Aug 2026 13:16:20 +0100 Message-ID: <20260812121622.649730-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537061885158500 Content-Type: text/plain; charset="utf-8" From: Marcelo Manzo The RSTC register's write-config bits (0x30) being set to the "full reset" value (0x20) does not mean "reset now" -- it arms the hardware watchdog so that a reset happens if the WDOG countdown register is not refreshed before it expires. The previous implementation treated any such RSTC write as an immediate reset, regardless of the WDOG value. This is dormant on older/lighter userspace (nothing in Bullseye's default boot touches these registers this way), but modern systemd (observed with Debian 13/Trixie's systemd 257) writes to RSTC as part of routine early-boot watchdog probing. With the old code, this fires an immediate reset a few seconds into boot; combined with -no-reboot this looks exactly like a QEMU crash (clean exit, no panic, no guest reboot message) with the last log line being the RSTC/WDOG write. Fix this by actually implementing the watchdog as a QEMUTimer: writes to RSTC/WDOG (re)compute the timeout from the WDOG register (in units of 1/65536 s, per the real hardware) and arm a timer for that many nanoseconds out; only when the timer actually fires do we request a system reset or shutdown, matching real hardware behavior. Clearing the write-config bits or the WDOG value disarms the timer, and reset disarms it too. Verified against real Raspberry Pi OS images under the patched raspi4b machine: Bullseye (5.15) and Bookworm (6.12) never exercised this path either way; Trixie (6.18, systemd 257) no longer crashes at boot and reaches a working login/SSH state. This is a migration compatibility break for the raspi boards. Signed-off-by: Marcelo Manzo [PMM: bump vmstate version IDs, note migration break in commit msg] Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/misc/bcm2835_powermgt.c | 53 ++++++++++++++++++++++-------- include/hw/misc/bcm2835_powermgt.h | 2 ++ 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/hw/misc/bcm2835_powermgt.c b/hw/misc/bcm2835_powermgt.c index 3ec7abad0e..7b01be48bb 100644 --- a/hw/misc/bcm2835_powermgt.c +++ b/hw/misc/bcm2835_powermgt.c @@ -19,10 +19,40 @@ #define PASSWORD_MASK 0xff000000 =20 #define R_RSTC 0x1c -#define V_RSTC_RESET 0x20 +#define V_RSTC_WRCFG_MASK 0x30 +#define V_RSTC_FULL_RESET 0x20 #define R_RSTS 0x20 #define V_RSTS_POWEROFF 0x555 /* Linux uses partition 63 to indicate halt.= */ #define R_WDOG 0x24 +#define V_WDOG_TIME_MASK 0xfffff +#define WDOG_TICKS_PER_SECOND 65536 + +static void bcm2835_powermgt_expire(void *opaque) +{ + BCM2835PowerMgtState *s =3D opaque; + + if ((s->rsts & 0xfff) =3D=3D V_RSTS_POWEROFF) { + qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); + } else { + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); + } +} + +static void bcm2835_powermgt_update_wdog(BCM2835PowerMgtState *s) +{ + uint64_t timeout_ns; + + if ((s->rstc & V_RSTC_WRCFG_MASK) !=3D V_RSTC_FULL_RESET || + s->wdog =3D=3D 0) { + timer_del(s->wdog_timer); + return; + } + + timeout_ns =3D muldiv64(s->wdog, NANOSECONDS_PER_SECOND, + WDOG_TICKS_PER_SECOND); + timer_mod(s->wdog_timer, + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + timeout_ns); +} =20 static uint64_t bcm2835_powermgt_read(void *opaque, hwaddr offset, unsigned size) @@ -70,13 +100,7 @@ static void bcm2835_powermgt_write(void *opaque, hwaddr= offset, switch (offset) { case R_RSTC: s->rstc =3D value; - if (value & V_RSTC_RESET) { - if ((s->rsts & 0xfff) =3D=3D V_RSTS_POWEROFF) { - qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN= ); - } else { - qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); - } - } + bcm2835_powermgt_update_wdog(s); break; case R_RSTS: qemu_log_mask(LOG_UNIMP, @@ -84,9 +108,8 @@ static void bcm2835_powermgt_write(void *opaque, hwaddr = offset, s->rsts =3D value; break; case R_WDOG: - qemu_log_mask(LOG_UNIMP, - "bcm2835_powermgt_write: WDOG\n"); - s->wdog =3D value; + s->wdog =3D value & V_WDOG_TIME_MASK; + bcm2835_powermgt_update_wdog(s); break; =20 default: @@ -107,12 +130,13 @@ static const MemoryRegionOps bcm2835_powermgt_ops =3D= { =20 static const VMStateDescription vmstate_bcm2835_powermgt =3D { .name =3D TYPE_BCM2835_POWERMGT, - .version_id =3D 1, - .minimum_version_id =3D 1, + .version_id =3D 2, + .minimum_version_id =3D 2, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(rstc, BCM2835PowerMgtState), VMSTATE_UINT32(rsts, BCM2835PowerMgtState), VMSTATE_UINT32(wdog, BCM2835PowerMgtState), + VMSTATE_TIMER_PTR(wdog_timer, BCM2835PowerMgtState), VMSTATE_END_OF_LIST() } }; @@ -124,6 +148,8 @@ static void bcm2835_powermgt_init(Object *obj) memory_region_init_io(&s->iomem, obj, &bcm2835_powermgt_ops, s, TYPE_BCM2835_POWERMGT, 0x200); sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->iomem); + s->wdog_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, + bcm2835_powermgt_expire, s); } =20 static void bcm2835_powermgt_reset(DeviceState *dev) @@ -134,6 +160,7 @@ static void bcm2835_powermgt_reset(DeviceState *dev) s->rstc =3D 0x00000102; s->rsts =3D 0x00001000; s->wdog =3D 0x00000000; + timer_del(s->wdog_timer); } =20 static void bcm2835_powermgt_class_init(ObjectClass *klass, const void *da= ta) diff --git a/include/hw/misc/bcm2835_powermgt.h b/include/hw/misc/bcm2835_p= owermgt.h index fb0740c01e..d1903a9cce 100644 --- a/include/hw/misc/bcm2835_powermgt.h +++ b/include/hw/misc/bcm2835_powermgt.h @@ -12,6 +12,7 @@ #define BCM2835_POWERMGT_H =20 #include "hw/core/sysbus.h" +#include "qemu/timer.h" #include "qom/object.h" =20 #define TYPE_BCM2835_POWERMGT "bcm2835-powermgt" @@ -24,6 +25,7 @@ struct BCM2835PowerMgtState { uint32_t rstc; uint32_t rsts; uint32_t wdog; + QEMUTimer *wdog_timer; }; =20 #endif --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537091; cv=none; d=zohomail.com; s=zohoarc; b=jwmjy6PyCIWcVN99EijfPxrUWSdn0ikjlq1JPKQzgR+qyvvBPIlw2CKfgsRc0vUHzsVggsZdY33hBWJzB2nIECgla+Mq8f33t28UE9TU7A2uBsOnV4lq1pJWNqfc8r/IYejKe6HfLPlFHTIlzF8r4uxVlmMJOQSICLZL5GeT+6Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537091; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=/a90+RjxnTaZ+UVIjaZp+HdePMcz0aan2K71ZgqleNc=; b=ffCoJqaaZwfCzhUvEBJfrIuXE4T0W19tNNuw1hqX7QuRCTB8X3RlVi6TfzKL5W8+Jb2VIWqN1PkbhfC0GPnxWJFOxaHuHa395dfsjeLSmGu0RLy4m8gcsjknloDrgOrDWT/h/q9cbRbI9MRCqTlI1PLJxYfKpZsVWXBsl9YpmDw= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537091365161.93519535000212; Wed, 12 Aug 2026 05:18:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tY-0005Ta-Sg; Wed, 12 Aug 2026 08:17:21 -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 1wu7tN-0005Lq-H5 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:10 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tL-0000At-1w for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:08 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-49802c418b5so7809645e9.1 for ; Wed, 12 Aug 2026 05:17:06 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.17.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:17:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537025; x=1787141825; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/a90+RjxnTaZ+UVIjaZp+HdePMcz0aan2K71ZgqleNc=; b=iFW3pTZTTPjZMfZQZdFwPNp1RqKu92UFyucuA1kVBlaP87XKlNf/kqXcq0x/MQZq/z K4EZrJPVNcOgnhQGRGMqkt8RpRuuMHuGovPBAKMvElSpi1rFLhpoyYUTMmS5Yx6mt92t nUQDagLHS5qmsq+o2Kef5drvT1SUAaHVdr6NwuiVPc4b0rRWaYhVK0xMS5xobYxwGdAt SVWW7MetQYclZaxSVCspJ/EkmcFJYoTF02sIaqHPPiF+hjraep2Z1OVXQoFpQx/f2OTJ czoqtb4s5xIR4pf8toKNPPtPJveLMe8WpolTKeq5wOMjHJlObcIJOI8C3VP9hhSZ8hNQ hpmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537025; x=1787141825; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=/a90+RjxnTaZ+UVIjaZp+HdePMcz0aan2K71ZgqleNc=; b=mWQA1HW3lfdhYC4D6SCYjJcD9UEqLnnes7YwCxV6yotJswnfnYHg/SZXbjIGYYvzMX gn4bCln+mZsoXc47ndRKSg8VVBFyRMAJ36y2rJOXLW4/TLMGekCh4v3Pt0pncxubvh5Y dOIgUEnl+2ZJbwxQxlSLNkYERfRRMaHVkgis/ZrK4UlZPdmlq83SHe0lY78BBD7Vqz9z podl5ri6/LdKPYKJPGKo8dyhpYsIkxRj2PmAC3m6+kjdn8zT4xrmI1cg6cazHe4KkOGw tqRTl1MpvBLTPGC4qMqkK+yeXfLwQX94KfK6jkEFUyHNO0Sqsavb3M45878E4jmXNGGi 1PMA== X-Gm-Message-State: AOJu0YwU6epp033vvcDFaYWMjfcyfQ7gCEcM3iciNit2r/K7PmOgeBVF tIo/KXMOG19Xv2a9c4pPeN8nO6AhDAimQVBpiJMsgMXNl+/YQMHPhg9m0395vUk7UKp73NUo7Ut c4Nmp X-Gm-Gg: AR+sD13nlYZd+YmQbr1b4tA36CRrG88JzN3/7BBomnUBBoUW7bGuRjJt8llMs0ukApV pvQE591oPlP36WO2EkPCbAeWD0OxMWJ5OqBSC/JpsPAzgtHvbZjPKePvD14bEIwMwq0mzSVZopG TZLw3YdnzlRlqwuUI7i/ZM62J2cKy3b6KVWDCoThr77S7LfkaX+7datWN7djTxe75I0EG6H8csM SAHDL76iffYzAvRce7a8rCqPYhpXkaecX/ELyIgqecsSgyB9qNemeTxBcFgTYHl/d+aNu/qKyZZ cIdLZO3aqVtRl2j93x4yY7cBnYOqRwXhG6RiWpEcJAmyjATDzT0wZ1gSZSdT61pb1OE2SPe3DvY Tt90Sr4PlWJ1KJG9UEAY0us0nmylqCe6Qc4M5vvsh3R7eBCRGA/Pm9+yCUpR42x2PXMHgvyobS1 wol3boAFb027Kp+EcPnsUOCq+dl7s0lU0KAy1saTf3RAp84WZuwvNBQ6+SxTP9eQT/7E6voS9gz byb6Zb+kZsYuqcMZyeHKBJmzz/PgxffmWas7HHbXQbokcWOGxD4vuN1dYkEt2O9dheDCDYKBxGS 5lVn X-Received: by 2002:a05:600c:1d03:b0:499:7ce1:d8af with SMTP id 5b1f17b1804b1-4997ce1db38mr47316355e9.1.1786537025215; Wed, 12 Aug 2026 05:17:05 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 25/26] hw/arm/raspi4b: fix guest never seeing more than ~1 GiB of RAM Date: Wed, 12 Aug 2026 13:16:21 +0100 Message-ID: <20260812121622.649730-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537092285158500 From: Marcelo Manzo raspi4_modify_dtb() decides whether to add a second memory node above the 1 GiB peripheral hole by checking info->ram_size -- but that field is the boot loader's RAM budget for loading the kernel/initrd/dtb image, itself always capped to at most UPPER_RAM_BASE - vcram_size by raspi_base_machine_init(). Since that capped value can never exceed UPPER_RAM_BASE by construction, the condition was never true for any raspi4b configuration, and the second node was never added: the guest never saw more than ~1 GiB of its nominal RAM, regardless of the machine's actual size. board_ram_size(info->board_id), computed one line above in the same function, is the value that was actually needed -- the board's real total RAM, not the boot loader's own budget for where it's allowed to place the kernel image. Confirmed via direct measurement inside the guest ("free -h" / /proc/meminfo) on raspi4b's default 2 GiB configuration, before and after: before: MemTotal: 943524 kB (~921 MiB) after: MemTotal: 1905824 kB (~1861 MiB) Also verified against two real, unmodified Raspberry Pi OS releases (Debian 11/Bullseye and Debian 13/Trixie): both now report ~1.8 GiB of usable RAM instead of ~900 MiB, with clean boots, working SSH, and no kernel errors on either. Signed-off-by: Marcelo Manzo Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260811143539.7835-2-marcelomanzo@gmail.com Signed-off-by: Peter Maydell --- hw/arm/raspi4b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/raspi4b.c b/hw/arm/raspi4b.c index 06aeb8db01..e1595a875f 100644 --- a/hw/arm/raspi4b.c +++ b/hw/arm/raspi4b.c @@ -85,7 +85,7 @@ static void raspi4_modify_dtb(const struct arm_boot_info = *info, void *fdt) =20 ram_size =3D board_ram_size(info->board_id); =20 - if (info->ram_size > UPPER_RAM_BASE) { + if (ram_size > UPPER_RAM_BASE) { raspi_add_memory_node(fdt, UPPER_RAM_BASE, ram_size - UPPER_RAM_BA= SE); } } --=20 2.43.0 From nobody Wed Aug 26 07:25:08 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786537186; cv=none; d=zohomail.com; s=zohoarc; b=moJf5GnzmLTwNY5Ad/2iFCGc/D0xIdA3NUHnCtWvOZZiBjWjuBxkS5WMSfY7HtQR5439RQtht2UTQpgAdo3AuD02g4x1f6fleVzSYg9Fk2aiGRP0Z1z/RdUFsRM/dVQZdDY7u0Nn/l76AJlDFpALNtVFtPOrjUYFvbNJbGRCOS8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786537186; h=Content-Transfer-Encoding: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:Cc; bh=zLt5NhoC02lUEPdlMBnPNuumKFa4Kh+BTXUoMQJScfE=; b=HQ1trVXa69f2bauNXTvSuaprT01wLVvk4RBtM8obnBEFI9OqRovp540AxOgDKZCW82ZNPl5IeOEHGk84jnkx5FfBqze5PiUnbKcgnI3YSoT7BV1Pjkqy68fbq6xE7sLawfU8nQamyKvg/hvZCnJtV7WeyjuyjlGsTe63OJH8GEM= 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=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786537186511576.9563869018749; Wed, 12 Aug 2026 05:19:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wu7tm-0006Ge-8d; Wed, 12 Aug 2026 08:17:36 -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 1wu7tO-0005MO-I8 for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:10 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wu7tL-0000B2-Ia for qemu-devel@nongnu.org; Wed, 12 Aug 2026 08:17:09 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-49553515a8bso12813605e9.1 for ; Wed, 12 Aug 2026 05:17:07 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4997ad79e5csm36963805e9.3.2026.08.12.05.17.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 05:17:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786537026; x=1787141826; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=zLt5NhoC02lUEPdlMBnPNuumKFa4Kh+BTXUoMQJScfE=; b=ku8fc2pp/UPow6tavZZSAQyqzGARQPO4d1DeMOYdAkDLS9OzAgw6P7ZCiWAJeSexhr VoTMUYqGzmIQ7AUlTDU5xnEZFYMpQafAp/QH4BYi8P4Fu63bPmBCp2JCAckA1K+ipRZ0 S6/HFcRXPEkU6Hu4NigxwI4ouj1sINKfMVMXZnFkzA+xm4LnIgnEL6fflOyPq/j0M4ZF xwk1hbpEVtZz9X/HN/c+qikDlOlPk2SfPhXmX6YwngE7FHOX8sop/76IKdJ+w+1CEI7o 8XxNokD4AJ0DGeAYNHoWL0ZkYV2IhQnI7bryRjOkk14oRiB6elta8eM+V0HasMmo7m07 OJQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786537026; x=1787141826; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zLt5NhoC02lUEPdlMBnPNuumKFa4Kh+BTXUoMQJScfE=; b=LlccGxTN7uGSE20xVcFNHj4/8/5oZmGZXAR8rsRdSLqNrc81zMtYSwmnLa02HENCyh Myo8rw2/sz84UaYHDRbsGfoZeDndhJlcMgmrDiKFnXNRel4MBeGzxAxgAkxqRH0n5mSa SGvAtOX4Cx2J8Mp8FR+xg8SMs26Jje4JpNkDxdPGyRNMYNKTE31QoNDzHOOi2sJRAJqr UzHXHomoGvxz1jLaOpDW50aKeQFcO4Mc3Ya42UYrM1nQTa2wxoRRJ+rT42Ag6iArhvDS fZcs5GudhePYB75uJi1FJCmhz4WwckrTsH+vJ+MtqIlIFjTSRwg1K2wT98l11G8C3h9Y JKqg== X-Gm-Message-State: AOJu0YyNoYgjDpCHEP4hzDfgVk21qv5TQZnDi69e/I2d5qo3bTybgZul LBhEg8dxE01mrf7Gu4FCroZ04Nb6tRg+pRlEDc+W8JcvisC27baTpbP0AE0aqSdQOa5qtQb1nd9 k6/Qk X-Gm-Gg: AR+sD12xiNwXsSJSL1klShyCEeLqK+L4pOLrtZoaVwxgYqLPOtDuQki+Dm5lscYkZLM W6Dz8P0raYBQkmh/7HIlbwa5+9x+zg3fPfFr4nH+/T7lZnJ7eQbdNCoQLfc2stnJFboybMETjKh A2MffC/DTOHrB0HS0IeBQCvX9jEuUs0QD+3Ko3I/BCV6AcRymGwiggDJb8lyemlg2Dvo+Seuin0 k/Qzb3cEli7bGjE+kASj/uJ7UOHfbGNH3sBXr9yCOAqBrjqORj8RXMh6KHEKucC+B4olz0dYxBk R6+VuXrzZiVmnwYUvFfzAPahe1UKoQ20tcHkrP+KVESBuBx2R+5zU9IoRfrAPR26ySGpPb69VbH giRg11SQKdwKSajfZd8WYXBjvKAehWT0jHCZudi2nqkDz93o40LtwORI+vMy1zNsRtIUq7hiR50 ffLC7HXCVmXTKlTIxIed3bF6ew2YlBCr+teTyXoQT62JygPhBAUspIxL0QEznu68CX21XQKZbr7 srvGfmUEpgbyY/mrearsXDPsSIrrz304ykKmi3uX83Uuh0YPccgmurTYJuZed6XBZCETA== X-Received: by 2002:a05:600c:4690:b0:490:c6c2:52 with SMTP id 5b1f17b1804b1-4997c0fe67cmr57851845e9.3.1786537026117; Wed, 12 Aug 2026 05:17:06 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 26/26] tests/functional/aarch64: add raspi4b full-RAM regression test Date: Wed, 12 Aug 2026 13:16:22 +0100 Message-ID: <20260812121622.649730-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812121622.649730-1-peter.maydell@linaro.org> References: <20260812121622.649730-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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 @linaro.org) X-ZM-MESSAGEID: 1786537188627158500 Content-Type: text/plain; charset="utf-8" From: Marcelo Manzo Guards against the bug fixed in the previous commit: boots raspi4b's default 2 GiB configuration and checks that the guest actually sees close to that (>1.9M kB), not the ~921 MiB the bug left it capped at. Deliberately checks a threshold rather than the exact byte count of either figure, since the precise number depends on how this specific pinned kernel accounts for its own early reservations; the threshold is comfortably between the two (943524 kB broken, 1905824 kB fixed, confirmed by hand against this exact kernel/initrd). Folded into the existing test_arm_raspi4_initrd test rather than a new standalone boot, since it needs no machine state that test isn't already setting up, and the functional-test suite is already slow enough from how many separate guest boots it runs. Signed-off-by: Marcelo Manzo Message-id: 20260811143539.7835-3-marcelomanzo@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- tests/functional/aarch64/test_raspi4.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/functional/aarch64/test_raspi4.py b/tests/functional/aar= ch64/test_raspi4.py index 7a4302b0c5..bacecbbe9c 100755 --- a/tests/functional/aarch64/test_raspi4.py +++ b/tests/functional/aarch64/test_raspi4.py @@ -86,6 +86,23 @@ def test_arm_raspi4_initrd(self): 'BCM2835') exec_command_and_wait_for_pattern(self, 'cat /proc/iomem', 'cprman@7e101000') + + # We used to get the RAM size wrong; guard against a regression + # (see git history for details). + mem_total_kb =3D None + cmd_output =3D exec_command_and_wait_for_pattern( + self, 'cat /proc/meminfo', 'MemAvailable') + for line in cmd_output.decode('ascii', errors=3D'replace').splitli= nes(): + if line.startswith('MemTotal:'): + mem_total_kb =3D int(line.split()[1]) + break + self.assertIsNotNone(mem_total_kb, 'MemTotal line not found') + self.assertGreater(mem_total_kb, 1900000, + 'guest RAM (%d kB) is far below the ~1.9 GiB ' + 'expected for a 2 GiB raspi4b -- the second ' + 'memory node above the 1 GiB peripheral hole ' + 'is probably not being added' % mem_total_kb) + exec_command_and_wait_for_pattern(self, 'halt', 'reboot: System ha= lted') # TODO: Raspberry Pi4 doesn't shut down properly with recent kerne= ls # Wait for VM to shut down gracefully --=20 2.43.0