From nobody Wed Aug 6 17:38:01 2025 X-Original-To: dev-commits-src-all@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 4bxyDn5QbJz641Bm; Wed, 06 Aug 2025 17:38: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxyDn3jtcz3cYC; Wed, 06 Aug 2025 17:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754501881; 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=G085SWHCQ8/rm0ASkp3xztqm5LaN2eNbYrjhdmu7Jc0=; b=O/l9F2/vB9jbaFfmV7ZInsPNNMaVPWZb/Ra8SqUxb1sv4RGLCoDTbxlx5zp5xPOZK+ccdu oBhglE82XceQ8ARsKiCapZbIxSzVGoBZYyPOdPrDtAKwbhg4JQTN+kedsVH59etwCoC2gz x70JBWb3k4cp3/r7BQ9lZx+zvnMoZ4zuNlKKTsUtbzBM1MD62B0bQJGwfUCxtoFyiv5xop /n0/EfVetlc2ZlwWrDKXCOpQ+kG6nkRN36nC5AoCld9rTD8a8UdVykt1Co72yzbXq+1EVH 0gC4UtOIEh8FLS56hEunBtP6Jug9JH9RQGoWyhH8s38gO2vZMpi46QbwzRIDZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754501881; 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=G085SWHCQ8/rm0ASkp3xztqm5LaN2eNbYrjhdmu7Jc0=; b=fIpmsn6WqpvDWTl49glkKlT809N4aJTu3ad4ywHayxLc2Rcz9FLkbHy29jWNArfxeB8Vhs rAT5YoIePGVOVk84CvLr2TrYEtjfxqKLe8mb5J/Jsh3JzJ16tIGCdEi2jAhrXkCEk7twad xjev/FhnldOi60YEV3PB9b46Y7KdNjisx61i8PmT5aLhuJDFPw89diT8tHfm7ohF2XWMcZ i/8ecYUrYX+37J8x2MiSXKk9j9XtR4F2l6KfM8epurU4xOad/q7aPAmm2AgeJvPPR/LZVq xFvQC7w5Z/5jkw1yAzu6sMjNUSQ6nuH3uaRFOFml3sn27b0DTXvyLPcHFbxv2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754501881; a=rsa-sha256; cv=none; b=osK9p01GFxolK9Va2WGwBJ2JjYGdobaDtrTFv8BVl3w7wLofsa8mpd6U02OEyDXNWtRJSA 2WJBbcwvemHHCkrKDUEz2DCtDKxnogCk9nFsEQti/DIIDS4gLUEDjZSi8dmULaTtX+REVD RBhX/slUuWP3MVj61XdkZsaAUhd8LPZ0NgF1e3bnCnvNQy0lhHDKLzVmVWTCP982TzZ0EM cyr3cxReHWO/Dkzyx0BpDCcGaX+tPqtOTFNTEZQeDd5rf4lKdTvqS1wwStk3+OVwRmMk6M zGKLxBWQifzYzSocCnDABwovxwwMtNhuu0mM2vyP0HWQsCdCO+ShZTwjLKYWcw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxyDn2mj7zV1K; Wed, 06 Aug 2025 17:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576Hc1WW076656; Wed, 6 Aug 2025 17:38:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576Hc1GQ076652; Wed, 6 Aug 2025 17:38:01 GMT (envelope-from git) Date: Wed, 6 Aug 2025 17:38:01 GMT Message-Id: <202508061738.576Hc1GQ076652@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 6ff9bb7c3bb0 - main - arm64: Use a fixed value for sctlr_el1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/main X-Git-Reftype: branch X-Git-Commit: 6ff9bb7c3bb089a85af067c4159cd942f204ba76 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=6ff9bb7c3bb089a85af067c4159cd942f204ba76 commit 6ff9bb7c3bb089a85af067c4159cd942f204ba76 Author: Andrew Turner AuthorDate: 2025-07-31 14:12:34 +0000 Commit: Andrew Turner CommitDate: 2025-07-31 14:27:06 +0000 arm64: Use a fixed value for sctlr_el1 We load a fixed value into sctlr_el1 in enter_kernel_el so there is no need to clear and set fields. Replace with a fixed list of fields that are set when the MMU is off an when it is on. Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51011 --- sys/arm64/arm64/locore.S | 23 +++-------------------- sys/arm64/include/armreg.h | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index f200195906ac..4a10a2b4f2d3 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -319,14 +319,12 @@ LEND(mpentry_common) * - Configure EL2 to support running the kernel at EL1 and exit to that */ LENTRY(enter_kernel_el) -#define INIT_SCTLR_EL1 (SCTLR_LSMAOE | SCTLR_nTLSMD | SCTLR_EIS | \ - SCTLR_TSCXT | SCTLR_EOS) mrs x23, CurrentEL and x23, x23, #(CURRENTEL_EL_MASK) cmp x23, #(CURRENTEL_EL_EL2) b.eq 1f - ldr x2, =INIT_SCTLR_EL1 + ldr x2, =SCTLR_MMU_OFF msr sctlr_el1, x2 /* SCTLR_EOS is set so eret is a context synchronizing event so we * need an isb here to ensure it's observed by later instructions, @@ -370,7 +368,7 @@ LENTRY(enter_kernel_el) msr vmpidr_el2, x2 /* Set the initial sctlr_el1 */ - ldr x2, =INIT_SCTLR_EL1 + ldr x2, =SCTLR_MMU_OFF msr sctlr_el1, x2 /* Check for VHE */ @@ -442,7 +440,6 @@ LENTRY(enter_kernel_el) isb eret -#undef INIT_SCTLR_EL1 LEND(enter_kernel_el) /* @@ -1037,11 +1034,7 @@ LENTRY(start_mmu) /* * Setup SCTLR. */ - ldr x2, sctlr_set - ldr x3, sctlr_clear - mrs x1, sctlr_el1 - bic x1, x1, x3 /* Clear the required bits */ - orr x1, x1, x2 /* Set the required bits */ + ldr x1, =SCTLR_MMU_ON msr sctlr_el1, x1 isb @@ -1066,16 +1059,6 @@ tcr: .quad (TCR_TxSZ(64 - VIRT_BITS) | TCR_TG | \ TCR_SH1_IS | TCR_ORGN1_WBWA | TCR_IRGN1_WBWA | \ TCR_SH0_IS | TCR_ORGN0_WBWA | TCR_IRGN0_WBWA) -sctlr_set: - /* Bits to set */ - .quad (SCTLR_LSMAOE | SCTLR_nTLSMD | SCTLR_UCI | SCTLR_SPAN | \ - SCTLR_nTWE | SCTLR_nTWI | SCTLR_UCT | SCTLR_DZE | \ - SCTLR_I | SCTLR_SED | SCTLR_SA0 | SCTLR_SA | SCTLR_C | \ - SCTLR_M | SCTLR_CP15BEN | SCTLR_BT1 | SCTLR_BT0) -sctlr_clear: - /* Bits to clear */ - .quad (SCTLR_EE | SCTLR_E0E | SCTLR_IESB | SCTLR_WXN | SCTLR_UMA | \ - SCTLR_ITD | SCTLR_A) LEND(start_mmu) ENTRY(abort) diff --git a/sys/arm64/include/armreg.h b/sys/arm64/include/armreg.h index 38b7f57f7853..500f35c48787 100644 --- a/sys/arm64/include/armreg.h +++ b/sys/arm64/include/armreg.h @@ -2608,6 +2608,26 @@ #define SCTLR_EnALS (UL(0x1) << 56) #define SCTLR_EPAN (UL(0x1) << 57) +#define SCTLR_MMU_OFF \ + (SCTLR_LSMAOE | SCTLR_nTLSMD | SCTLR_EIS | SCTLR_TSCXT | SCTLR_EOS) +#define SCTLR_MMU_ON \ + (SCTLR_MMU_OFF | \ + SCTLR_BT1 | \ + SCTLR_BT0 | \ + SCTLR_UCI | \ + SCTLR_SPAN | \ + SCTLR_nTWE | \ + SCTLR_nTWI | \ + SCTLR_UCT | \ + SCTLR_DZE | \ + SCTLR_I | \ + SCTLR_SED | \ + SCTLR_CP15BEN | \ + SCTLR_SA0 | \ + SCTLR_SA | \ + SCTLR_C | \ + SCTLR_M) + /* SCTLR_EL12 */ #define SCTLR_EL12_REG MRS_REG_ALT_NAME(SCTLR_EL12) #define SCTLR_EL12_op0 3