From nobody Thu Jan 23 17:27:28 2025 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 4Yf7Dd23Xgz5lDDN; Thu, 23 Jan 2025 17:27:29 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Yf7Dc5Pz6z43fb; Thu, 23 Jan 2025 17:27:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737653248; 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=jgCFgZGdpmaroX601qUfNSBmoEgHIJ5u6uf+beXZKvw=; b=P/Rss7LMH9Hv+KgBVfkoyDQO2IXsotv6hfa/gWmpgDYIeKkrztDMDzMvz9cT0WyclelYHJ 6opSa9xhbhdghyRmCUWsgFDRLQENjKc+scvfdiMqY9+BD/gOfh85gTksQpf1Qubg7dmvL3 qHpz7MZ9ZAejEWAut06Pq4TWNdJ9AD8QjByRAbwTlFydjCrw1o9+stRJXa/LDIM+PjTjd9 p4wiyVvUQHiSkZlesdE0uFrPDy6+XHFjWdBfWpLfrfp4zzG0eul2lUld3wmSedCg0W6Qx6 4wx+TWtzORT83Ni6akCEPqEcjC73lubD7IywvmVIzLp0ucErSxS3TaDoNejadQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737653248; 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=jgCFgZGdpmaroX601qUfNSBmoEgHIJ5u6uf+beXZKvw=; b=sNSEjAtKDjnbRXlg2EjzBkhYr2VyqHLqu0+dEN5+76Wpq7tH7zQ4CUQ/VTIUu3eiFnBG88 /CcIokdRsy1fnATjKawWvm9rsHonXXZRdoPSsbKV/Jrd2Xs7aZiTLSLJobIJcxqU7EekTX lzYoD+kowCGZb39KaZYgnQ66XT6ZPL04r/gEhgWURJm4zBHPTJEuifUEX2FjFkXBndniPy Ydzr7ub/T42cVrXsAAe0DhaSx9Yn3wEKQ/qDcQJsKkufzJsgjHTePbpEr0aoussp8uMyrw F8fElbjOAFPqt0RYFApmQfbBsbz0Ll5ZnS5lQQxUUGtlLcimBs8V8lzJKEFGig== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1737653248; a=rsa-sha256; cv=none; b=dEROk4C6rltG4XDwaIftkyfzrypPmamV6JNPhXgQkgZlaQ8prPhaLIcePXyx8azP/HQPQh N4xDEKRDo/G/OSwsJwVEcRdt0Y4h7tcK/Sa5UIHCfFvo9M/924pkaxkwMq71x6nikpWsgw J7Q1C7s36SRjm5aS2hQ1wbYxsonLw5PcHStoqaMl5D0bYPjfYQkbkUTysskKI2I2Rbr5uq wNGZd+MVFgn5Zlc4jEgsdSUYvAmV2XoLKxYthen3peWy9+7RfzeoX7K4FEpfGrDdMfIOvl LVuh9AwOlNGgqTmsCnfSf43B0hMnNtYw0gzlzKuOU+hMrE9F7W4yqHV1KSak3Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4Yf7Dc4kX9zpBJ; Thu, 23 Jan 2025 17:27:28 +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 50NHRSl1022486; Thu, 23 Jan 2025 17:27:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50NHRSjq022483; Thu, 23 Jan 2025 17:27:28 GMT (envelope-from git) Date: Thu, 23 Jan 2025 17:27:28 GMT Message-Id: <202501231727.50NHRSjq022483@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: 4d1acfb132a5 - main - arm64: add HCRX_EL2 register 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 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: 4d1acfb132a5e6f31fc7786ea22c3239c2573b8c Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=4d1acfb132a5e6f31fc7786ea22c3239c2573b8c commit 4d1acfb132a5e6f31fc7786ea22c3239c2573b8c Author: Harry Moulton AuthorDate: 2025-01-23 12:28:28 +0000 Commit: Andrew Turner CommitDate: 2025-01-23 17:26:26 +0000 arm64: add HCRX_EL2 register HCRX_EL2 is the Extended Hypervisor Configuration Register introduced with FEAT_HCX in ARMv8.7. All fields in this register are used for features in ARMv8.7 and above. Initially zero the register, incase firmware has not properly configured it. Reviewed by: andrew Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48583 Signed-off-by: Harry Moulton --- sys/arm64/arm64/locore.S | 19 ++++++++++++++++--- sys/arm64/include/hypervisor.h | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index e721092455e8..f3b846eee412 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -351,7 +351,6 @@ LENTRY(enter_kernel_el) isb mrs x4, hcr_el2 - /* Load the Virtualization Process ID Register */ mrs x2, midr_el1 msr vpidr_el2, x2 @@ -400,6 +399,20 @@ LENTRY(enter_kernel_el) /* Set the return PSTATE */ msr spsr_el2, x5 + /* + * Configure the Extended Hypervisor register. This is only valid if + * FEAT_HCX is enabled. + */ + mrs x2, id_aa64mmfr1_el1 + ubfx x2, x2, #ID_AA64MMFR1_HCX_SHIFT, #ID_AA64MMFR1_HCX_WIDTH + cbz x2, 2f + + /* Extended Hypervisor Configuration */ + mov x2, xzr + msr HCRX_EL2_REG, x2 + isb +2: + /* Don't trap to EL2 for CP15 traps */ msr hstr_el2, xzr @@ -414,13 +427,13 @@ LENTRY(enter_kernel_el) /* Extract GIC bits from the register */ ubfx x2, x2, #ID_AA64PFR0_GIC_SHIFT, #ID_AA64PFR0_GIC_BITS /* GIC[3:0] != 0000 - GIC CPU interface via special regs. supported */ - cbz x2, 2f + cbz x2, 3f mrs x2, icc_sre_el2 orr x2, x2, #ICC_SRE_EL2_EN /* Enable access from insecure EL1 */ orr x2, x2, #ICC_SRE_EL2_SRE /* Enable system registers */ msr icc_sre_el2, x2 -2: +3: /* Set the address to return to our return address */ msr elr_el2, x30 diff --git a/sys/arm64/include/hypervisor.h b/sys/arm64/include/hypervisor.h index e3bdd83e8a29..15fc36014626 100644 --- a/sys/arm64/include/hypervisor.h +++ b/sys/arm64/include/hypervisor.h @@ -132,6 +132,41 @@ #define HCR_TWEDEn (UL(0x1) << 59) #define HCR_TWEDEL_MASK (UL(0xf) << 60) +/* HCRX_EL2 - Extended Hypervisor Configuration Register */ +#define HCRX_EL2_REG MRS_REG_ALT_NAME(HCRX_EL2) +#define HCRX_EL2_op0 3 +#define HCRX_EL2_op1 4 +#define HCRX_EL2_CRn 1 +#define HCRX_EL2_CRm 2 +#define HCRX_EL2_op2 2 + +#define HCRX_EnAS0 (UL(0x1) << 0) +#define HCRX_EnALS (UL(0x1) << 1) +#define HCRX_EnASR (UL(0x1) << 2) +#define HCRX_FnXS (UL(0x1) << 3) +#define HCRX_FGTnXS (UL(0x1) << 4) +#define HCRX_SMPME (UL(0x1) << 5) +#define HCRX_TALLINT (UL(0x1) << 6) +#define HCRX_VINMI (UL(0x1) << 7) +#define HCRX_VFNMI (UL(0x1) << 8) +#define HCRX_CMOW (UL(0x1) << 9) +#define HCRX_MCE2 (UL(0x1) << 10) +#define HCRX_MSCEn (UL(0x1) << 11) +/* Bits 12 & 13 are reserved */ +#define HCRX_TCR2En (UL(0x1) << 14) +#define HCRX_SCTLR2En (UL(0x1) << 15) +#define HCRX_PTTWI (UL(0x1) << 16) +#define HCRX_D128En (UL(0x1) << 17) +#define HCRX_EnSNERR (UL(0x1) << 18) +#define HCRX_TMEA (UL(0x1) << 19) +#define HCRX_EnSDERR (UL(0x1) << 20) +#define HCRX_EnIDCP128 (UL(0x1) << 21) +#define HCRX_GCSEn (UL(0x1) << 22) +#define HCRX_EnFPM (UL(0x1) << 23) +#define HCRX_PACMEn (UL(0x1) << 24) +/* Bit 25 is reserved */ +#define HCRX_SRMASKEn (UL(0x1) << 26) + /* HPFAR_EL2 - Hypervisor IPA Fault Address Register */ #define HPFAR_EL2_FIPA_SHIFT 4 #define HPFAR_EL2_FIPA_MASK 0xfffffffff0