From nobody Mon Sep 21 15:26:08 2026 X-Original-To: dev-commits-src-main@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 4hpRrw51mmz6slml for ; Mon, 21 Sep 2026 15:26:08 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hpRrw1zRCz4Zrd for ; Mon, 21 Sep 2026 15:26:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790004368; 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=6Q/1yJCsAHxHMmPx5MObmh3zu1RYtpXBEToJfpy59sU=; b=HJsOdliAl51D0d7MNb7jK0costwBfdkR866/Z7PJ94BIrXaELWF/d8GKqnMXVHeTUwr0Ab TaL4DzT8C0coQfMK+JXGcInja7pXTfPlqEWrSHo0gq3twgXxAXd7C/P07tIJg1StvqwEuS 85O3PHLYqKpkMO8DYGro3DUJMsHUtGhDnXzOQJDmwX5nnIhLL47vy/pHpG9Z3K6Ewpp1Wv 7LMnLLFKVw2rupA/Os4UhH/dZFTthFZp5GGU8BOCKxBXhUZYEHyprQJzX0SD/52c0pVknD M/JXYUJfTrlpQ61p0IzxmbdrvcbzvYCgvpp7vXq20bJiNEdS3PhV1Nrra4F3Vg== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790004368; b=VnG8xv5SNknFTR/aDFwBIILxLxvAGIigfCxJZZXw5i4Obs0xrdAGV8y3EEmyB2Zca350Ot kRzenyy9hWg1owS2vs0WQM8mtt6UnfKTeSzW0xmzJ8zbhZzszLmDuA5dWIHuVmdyOa4UEL CH7Sgen0WBZH1cLHJK5uDKcGqnwu8xTEkGSfXvYlDEG2XO53mH+uWanKgW4Zb1+Cojy2BT WpW7Cp/PTRHzJnBV9gkPEojGW+VSomej/FzuJHc0EvGMYKQUL/BI9Q5YdbFPOPmUN/9M/h bk8SBe6V73VDZ9oFQgo+a1Ghd+k1mcVtmqKDYXZ/9ODqlH8tYrKOkPDXa11i8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790004368; 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=6Q/1yJCsAHxHMmPx5MObmh3zu1RYtpXBEToJfpy59sU=; b=m1Y0q5/7laWahz/LDRrriprbUQBlq70bDzN4Tpn55yqyYeV67mRjaQVujRJsOANQg+Xoyf dUISt3hzYaKb5i1HIQsgsv+J2eqFTjndhw7uSS1R4gX0Wr0f5ucSMvB4OwfdMzqPp94YeA W42V3HQouweXWodlfAl89C7w8mPweFgMozu03xs9QGzs+ofTgMEy8HO38wqAAbnQM79Xol cNmDDqvJDAPnel9HDSlQlQuXIpqnHpDzsLk0hPpFT+a8u6CrNJcr1XJjPc4wUqmzE+BvpE uXUIlENY0XB0a3AqImJYJeN1LLeqy4JSaDNJSQZjmN7Enz3TizoBAk7rsYfqog== 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 4hpRrw0mxtzQFx for ; Mon, 21 Sep 2026 15:26:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 31899 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 21 Sep 2026 15:26:08 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 6dca6e2aa89d - main - arm64/smmu: Start handling errata List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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/main X-Git-Reftype: branch X-Git-Commit: 6dca6e2aa89d877cf2bc8135c6936008e2a6af72 Auto-Submitted: auto-generated Date: Mon, 21 Sep 2026 15:26:08 +0000 Message-Id: <6ab14c90.31899.4629e501@gitrepo.freebsd.org> The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=6dca6e2aa89d877cf2bc8135c6936008e2a6af72 commit 6dca6e2aa89d877cf2bc8135c6936008e2a6af72 Author: Andrew Turner AuthorDate: 2026-09-18 11:28:41 +0000 Commit: Andrew Turner CommitDate: 2026-09-18 11:28:41 +0000 arm64/smmu: Start handling errata Handle the Arm MMU-600 erratum 1076982 where when we poll for a sync command completion we can't use the wait-for-event instruction. This is in preparation for later adding support for polling for sync command completion and is not an issue on stable branches. Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D59486 --- sys/arm64/iommu/smmu.c | 28 ++++++++++++++++++++++++++++ sys/arm64/iommu/smmureg.h | 16 ++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/sys/arm64/iommu/smmu.c b/sys/arm64/iommu/smmu.c index 9a6f15e83def..38cdd507a9c2 100644 --- a/sys/arm64/iommu/smmu.c +++ b/sys/arm64/iommu/smmu.c @@ -1511,6 +1511,32 @@ smmu_check_features(struct smmu_softc *sc) return (0); } +static void +smmu_check_errata(struct smmu_softc *sc) +{ + uint32_t reg; + u_int variant; + +#define SMMU_Implementer_ARM 0x43b +#define SMMU_ProductID_ARM_MMU_600 0x483 + + reg = bus_read_4(sc->res[0], SMMU_IIDR); + variant = SMMU_Variant_GET(reg); + + switch(SMMU_ProductID_GET(reg)) { + case SMMU_Implementer_ARM: + switch (SMMU_ProductID_GET(reg)) { + /* Arm erratum 1076982 */ + if (variant < 1) + sc->features &= ~SMMU_FEATURE_SEV; + default: + break; + } + default: + break; + } +} + static void smmu_init_asids(struct smmu_softc *sc) { @@ -1572,6 +1598,8 @@ smmu_attach(device_t dev) return (ENXIO); } + smmu_check_errata(sc); + smmu_init_asids(sc); error = smmu_init_queues(sc); diff --git a/sys/arm64/iommu/smmureg.h b/sys/arm64/iommu/smmureg.h index d62f145ceef7..0929089a7a36 100644 --- a/sys/arm64/iommu/smmureg.h +++ b/sys/arm64/iommu/smmureg.h @@ -114,6 +114,22 @@ #define IDR5_OAS_48 (0x5 << IDR5_OAS_S) #define IDR5_OAS_52 (0x6 << IDR5_OAS_S) /* Reserved in SMMU v3.0 */ #define SMMU_IIDR 0x018 +#define SMMU_ProductID_SHIFT 20 +#define SMMU_ProductID_MASK (0xfffu << SMMU_ProductID_SHIFT) +#define SMMU_ProductID_GET(x) \ + (((x) & SMMU_ProductID_MASK) >> SMMU_ProductID_SHIFT) +#define SMMU_Variant_SHIFT 16 +#define SMMU_Variant_MASK (0xfu << SMMU_Variant_SHIFT) +#define SMMU_Variant_GET(x) \ + (((x) & SMMU_Variant_MASK) >> SMMU_Variant_SHIFT) +#define SMMU_Revision_SHIFT 12 +#define SMMU_Revision_MASK (0xfu << SMMU_Revision_SHIFT) +#define SMMU_Revision_GET(x) \ + (((x) & SMMU_Revision_MASK) >> SMMU_Revision_SHIFT) +#define SMMU_Implementer_SHIFT 0 +#define SMMU_Implementer_MASK (0xfffu << SMMU_Implementer_SHIFT) +#define SMMU_Implementer_GET(x) \ + (((x) & SMMU_Implementer_MASK) >> SMMU_Implementer_SHIFT) #define SMMU_AIDR 0x01C #define SMMU_CR0 0x020 #define CR0_VMW_S 6 /* VMID Wildcard */