From nobody Thu Jan 15 14:51:00 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4dsQsK3S3fz6P4QD for ; Thu, 15 Jan 2026 14:51:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dsQsJ4gffz3JZD for ; Thu, 15 Jan 2026 14:51:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768488660; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9EvCls/MKKDk3SOmjPpxajvIcoIuDzo+ZbI5u2IKuRQ=; b=lp8AS9DUTXqNYAXh/4m3R0hTo57E1zfSUIxdUC3TOPDIJeIX4lClwHSCyZLA34lUwm+71V C6UDzGN+iWXtvLFSwneEdm7lQkOH81juNTOwsYxVxLZ87+T1D9boy4t67KKstAi8OaSsCz hQmx4OPwKGXfL+v6+0RUHjf73v8L8iyLCT5Hfqi6wJHhdQRIlF7fEwz0poNXpwjf/tu92t 8YPAaU/o8smmYxl3njfPJstGQD5iSxCRh36njChSbhMPzjNfgawUwv74S0rucL0GgEFV2d soCOaMYSh/r711+9QedwZkLxahng0vFgs6TEpRbNkqwNo8E8m7ELBfnBiLtH7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768488660; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9EvCls/MKKDk3SOmjPpxajvIcoIuDzo+ZbI5u2IKuRQ=; b=eVIL15m0J9ACjISSITqOBBiHoBv4AImlBummfMBUhPYjrxEdDANJz00PSdcFOuILU3+Aja VYRj/MkFddxR/KPvcsBq3mOGa0TsLmOEaLWza82S0ILJu2JNdxYD/Gs5w8IsaILc+L2X88 F4hQ3vbuLR5I8UHLgX7PnTveMGTyOYHNVXCPmNVrqga4dcJtO0TbuzIgnXqWfo3qT9abbS qPPsvXm5vv3p09ZmJGAkZRfcBDYbpNxItzoBouE0+aCByMe2haA6nrg1+Q89Uy01bogjG6 FLey1BioeXIqsPOPte1HVJYR3CvTYX0H5OA/XSKN6CluKJwQyT2LB8Lm5+U15A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1768488660; a=rsa-sha256; cv=none; b=u7eFMjJgsnxlX9X2Zgw349PxHoqCsrZ4D+hXRc7s1q8fI7W3SPzTVDvx4zHt1xeUuO0orF FjfmEc6FjiR7xZCyMCRsIdAyD8OPcgR7oCi5gAuauifE50hJuQK8ZC0wT8e7xkMhM96Qfk b/Brj6bBB+xVmLcwMdgKtFj4FI1co/0AnjKyqaZZ9udn/Mewhw5eDPFY3rGw3JtDVIiM0D OSQP9y1x2obb0VGAFTSnQNKjOBFaA9LUA5kOWAn5ct8miVBv0nFy2SkOOD2nNyWMSLlwyG CRIP8BNdylNw99yR3PrTHStk2/JLSRL4UWGLOiG22Ktff6ViDSillO8wLW2Eww== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dsQsJ4HSgzYjW for ; Thu, 15 Jan 2026 14:51:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 22ac7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 15 Jan 2026 14:51:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Andrew Turner Subject: git: ddc20379099b - stable/14 - arm64: Add a sysctl to see if features are enabled List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ddc20379099b8c3fea87bc0a8f2c8b6585b1d0bc Auto-Submitted: auto-generated Date: Thu, 15 Jan 2026 14:51:00 +0000 Message-Id: <6968fed4.22ac7.3ee9bc0c@gitrepo.freebsd.org> The branch stable/14 has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=ddc20379099b8c3fea87bc0a8f2c8b6585b1d0bc commit ddc20379099b8c3fea87bc0a8f2c8b6585b1d0bc Author: Andrew Turner AuthorDate: 2025-09-04 14:44:31 +0000 Commit: Andrew Turner CommitDate: 2026-01-14 21:14:12 +0000 arm64: Add a sysctl to see if features are enabled This will also be used as a tunable to control features in a later change. Reviewed by: imp Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D52357 (cherry picked from commit 9204a315a71c5aa9a9b8c11f2dcefb155dd5fc34) --- sys/arm64/arm64/cpu_feat.c | 7 +++++-- sys/arm64/include/cpu_feat.h | 13 ++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/sys/arm64/arm64/cpu_feat.c b/sys/arm64/arm64/cpu_feat.c index cc262394913d..fd1b8429295f 100644 --- a/sys/arm64/arm64/cpu_feat.c +++ b/sys/arm64/arm64/cpu_feat.c @@ -32,6 +32,8 @@ #include #include +SYSCTL_NODE(_hw, OID_AUTO, feat, CTLFLAG_RD, 0, "CPU features/errata"); + /* TODO: Make this a list if we ever grow a callback other than smccc_errata */ static cpu_feat_errata_check_fn cpu_feat_check_cb = NULL; @@ -97,8 +99,9 @@ enable_cpu_feat(uint32_t stage) /* Shouldn't be possible */ MPASS(errata_status != ERRATA_UNKNOWN); - feat->feat_enable(feat, errata_status, errata_list, - errata_count); + if (feat->feat_enable(feat, errata_status, errata_list, + errata_count)) + feat->feat_enabled = true; } } diff --git a/sys/arm64/include/cpu_feat.h b/sys/arm64/include/cpu_feat.h index 6a0b2d78f526..f62f3e334dc1 100644 --- a/sys/arm64/include/cpu_feat.h +++ b/sys/arm64/include/cpu_feat.h @@ -29,6 +29,7 @@ #define _MACHINE_CPU_FEAT_H_ #include +#include typedef enum { ERRATA_UNKNOWN, /* Unknown erratum */ @@ -52,7 +53,7 @@ struct cpu_feat; typedef bool (cpu_feat_check)(const struct cpu_feat *, u_int); typedef bool (cpu_feat_has_errata)(const struct cpu_feat *, u_int, u_int **, u_int *); -typedef void (cpu_feat_enable)(const struct cpu_feat *, cpu_feat_errata, +typedef bool (cpu_feat_enable)(const struct cpu_feat *, cpu_feat_errata, u_int *, u_int); struct cpu_feat { @@ -61,18 +62,24 @@ struct cpu_feat { cpu_feat_has_errata *feat_has_errata; cpu_feat_enable *feat_enable; uint32_t feat_flags; + bool feat_enabled; }; SET_DECLARE(cpu_feat_set, struct cpu_feat); -#define CPU_FEAT(name, check, has_errata, enable, flags) \ +SYSCTL_DECL(_hw_feat); + +#define CPU_FEAT(name, descr, check, has_errata, enable, flags) \ static struct cpu_feat name = { \ .feat_name = #name, \ .feat_check = check, \ .feat_has_errata = has_errata, \ .feat_enable = enable, \ .feat_flags = flags, \ + .feat_enabled = false, \ }; \ -DATA_SET(cpu_feat_set, name) +DATA_SET(cpu_feat_set, name); \ +SYSCTL_BOOL(_hw_feat, OID_AUTO, name, CTLFLAG_RD, &name.feat_enabled, \ + 0, descr) /* * Allow drivers to mark an erratum as worked around, e.g. the Errata