From nobody Wed May 22 08:32:02 2024 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 4Vkl0M1Cjkz5LD9B; Wed, 22 May 2024 08:32:03 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Vkl0L6vklz4jCG; Wed, 22 May 2024 08:32:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1716366723; 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=Vglw4Lkx3h4BXGuNSgZ20cdgkXZ3B+D73U6mV5/60nE=; b=OllF28Kd3ntJko+Se/mY5wXfkA+bXg0yJZWu43SnOKd25IYX0n47yeAUV3EEsebe6/mAIJ gma5aTWbWiaapRXzERd2XfOEBNB7UyWD1YJkdVC2D9rJ36YIFLSJTNOoZBW/0e3nl8HIjX zvkoZJd3UBWaGqmupNtQmqXJMPYjdV6qcY2bHZmI/5jT5Yov0kzzbjqDW6copuPWDhUZ/y hmhGzJUEcNTJq1hxUhwUxjFcf4GXFShenOTQ8f2v3feALMsv4jJ8y2XRa/S/f4op+lm6t8 W6vXzFMBT8puCcWYDWicpkEzLQOsvjCNIbAv8/yg9YfOZPRm3LvLwaHOpN38vQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1716366723; a=rsa-sha256; cv=none; b=kExDVJ3Aj3UbRKdibJ9/5t26XL066h1tMRSFa4EKxwnhpqK6HLEiqOpTnt+QC7mLVjjnT6 eA2rxRiqF2gCgWSKR8wyp5pCoFDyHt27JzX7aR9nUG7J+8OJam/kQ3MYwQD2ILH4Ktzf9J HBsz2DpMxWzW3Or6jfTPOWXUbB/TkYCOJGG6EXSHxcLQuwEuvSGv1HpEAVK4AX8Q9Pf+Xj gq590m+9fMCs1PbsXQolDiELI5fmG0ALrAlOPoV3hxBIgIfH/1BUb/5YuzGu2HVo4Hu6Bo wSg2LnrFa1WU9j54kk8sqbPBjRiddZSkz5q0a2I/HyAle0kcHUTWdUcdTcQHrw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1716366723; 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=Vglw4Lkx3h4BXGuNSgZ20cdgkXZ3B+D73U6mV5/60nE=; b=nP2Z0BKhVXu4+nJ8/efOdQTrBSTDQCOZssY8u9AWd1tvSTRp3GEk5q27ahvQ7NSQKFdCRI WQqSvXQ82jk2buTPIq0yPA2kTq2LivEfCF1SihXUuWJPQsYoviVtJeUHrEhyx2vGMdva5t 2dDi6RhoaUSWe8ZCSN6XOhTOlCqouriWENDlq680Vfm624jBwhiCk3XLmYWtCifz//I6Nz QQ6Q6EiTcYrWFqArkRCJwPt5ZEPytFDFFX/YtoZizcd1m90uS2R9YLQEYdtAuLdPrq4ot9 G/hcch3nXcAsvZYtCHi+g4qt1EYMnsS9imnrXjcc6xBccxPqje/TXknlDkoEfA== 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 4Vkl0L6T3WzyhZ; Wed, 22 May 2024 08:32:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 44M8W2bO008982; Wed, 22 May 2024 08:32:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 44M8W24M008979; Wed, 22 May 2024 08:32:02 GMT (envelope-from git) Date: Wed, 22 May 2024 08:32:02 GMT Message-Id: <202405220832.44M8W24M008979@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: 73c200447361 - main - arm64: Use the pointer auth register defines 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: 73c200447361a649e00cdb1693a0ae7f3291914e Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=73c200447361a649e00cdb1693a0ae7f3291914e commit 73c200447361a649e00cdb1693a0ae7f3291914e Author: Andrew Turner AuthorDate: 2024-05-22 08:19:06 +0000 Commit: Andrew Turner CommitDate: 2024-05-22 08:19:06 +0000 arm64: Use the pointer auth register defines When building with gcc it complains the pointer authentication registers aren't valid with the architecture level we are targeting. Fix this by using the alternative spelling of these registers accesses through MRS_REG_ALT_NAME. Reviewed by: jhb Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D45263 --- sys/arm64/arm64/ptrauth.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/sys/arm64/arm64/ptrauth.c b/sys/arm64/arm64/ptrauth.c index 40f9c86d9468..b5f9fad1dc95 100644 --- a/sys/arm64/arm64/ptrauth.c +++ b/sys/arm64/arm64/ptrauth.c @@ -169,13 +169,11 @@ ptrauth_thread_alloc(struct thread *td) * Load the userspace keys. We can't use WRITE_SPECIALREG as we need * to set the architecture extension. */ -#define LOAD_KEY(space, name) \ -__asm __volatile( \ - ".arch_extension pauth \n" \ - "msr "#name"keylo_el1, %0 \n" \ - "msr "#name"keyhi_el1, %1 \n" \ - ".arch_extension nopauth \n" \ - :: "r"(td->td_md.md_ptrauth_##space.name.pa_key_lo), \ +#define LOAD_KEY(space, name, reg) \ +__asm __volatile( \ + "msr "__XSTRING(MRS_REG_ALT_NAME(reg ## KeyLo_EL1))", %0 \n" \ + "msr "__XSTRING(MRS_REG_ALT_NAME(reg ## KeyHi_EL1))", %1 \n" \ + :: "r"(td->td_md.md_ptrauth_##space.name.pa_key_lo), \ "r"(td->td_md.md_ptrauth_##space.name.pa_key_hi)) void @@ -187,7 +185,7 @@ ptrauth_thread0(struct thread *td) /* TODO: Generate a random number here */ memset(&td->td_md.md_ptrauth_kern, 0, sizeof(td->td_md.md_ptrauth_kern)); - LOAD_KEY(kern, apia); + LOAD_KEY(kern, apia, APIA); /* * No isb as this is called before ptrauth_start so can rely on * the instruction barrier there. @@ -240,8 +238,8 @@ ptrauth_mp_start(uint64_t cpu) __asm __volatile( ".arch_extension pauth \n" - "msr apiakeylo_el1, %0 \n" - "msr apiakeyhi_el1, %1 \n" + "msr "__XSTRING(APIAKeyLo_EL1_REG)", %0 \n" + "msr "__XSTRING(APIAKeyHi_EL1_REG)", %1 \n" ".arch_extension nopauth \n" :: "r"(start_key.pa_key_lo), "r"(start_key.pa_key_hi)); @@ -257,7 +255,7 @@ struct thread * ptrauth_switch(struct thread *td) { if (enable_ptrauth) { - LOAD_KEY(kern, apia); + LOAD_KEY(kern, apia, APIA); isb(); } @@ -271,7 +269,7 @@ ptrauth_exit_el0(struct thread *td) if (!enable_ptrauth) return; - LOAD_KEY(kern, apia); + LOAD_KEY(kern, apia, APIA); isb(); } @@ -282,11 +280,11 @@ ptrauth_enter_el0(struct thread *td) if (!enable_ptrauth) return; - LOAD_KEY(user, apia); - LOAD_KEY(user, apib); - LOAD_KEY(user, apda); - LOAD_KEY(user, apdb); - LOAD_KEY(user, apga); + LOAD_KEY(user, apia, APIA); + LOAD_KEY(user, apib, APIB); + LOAD_KEY(user, apda, APDA); + LOAD_KEY(user, apdb, APDB); + LOAD_KEY(user, apga, APGA); /* * No isb as this is called from the exception handler so can rely * on the eret instruction to be the needed context synchronizing event.