From patchwork Fri Nov 24 10:19:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 13467458 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9038FC61D97 for ; Fri, 24 Nov 2023 10:23:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=l2W4h7wMYMQcl9K0HjdxfxAfiiqPt//zePEvCNjvpxE=; b=ZdNNGAhpKE/ckLDRtCD9xyIuvO zunuPo0PSn8gnN0Z8R3xDifQXNoYQCzhz/86GgwRKPlnimz2/O2JLQwzhCoe5amR2nASoikQnp3BN AqibJIj6j4fcD1p2dZ8z3QZ2Od4TjT6NSSKMAmKhHO1FYROO12qU+lVuNpDxXaeT+YhRCNDk24Uki ImYhE4nOnQ34LIZ3QQnaLwFBgzGY/QTATafu+EUpJbmhPQKFUopzuqI4GKDzd66uQhOkCyyyjsMIp cMpy2fVPnYwwa0UlQeqZKiQGqIxEjE7cwDFeGUBTLHqFxlgy9doJbOPmhZrKW/rMveNI3GkZWDHWg BTruo6FA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r6TL1-006puI-1w; Fri, 24 Nov 2023 10:23:07 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r6TJb-006pJ2-29 for linux-arm-kernel@bombadil.infradead.org; Fri, 24 Nov 2023 10:21:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Type:Cc:To:From:Subject: Message-ID:References:Mime-Version:In-Reply-To:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=mszekfn1Sv+AM+mXkqTGdx2TrBZeMlZMYtBcAH7wCcQ=; b=lUF9EsYK8m0qLAlXLIMIRW8K6h iapCi2bszQY1xrA+aoCNnwN3h+ducMjSwPptag4uy9HL9SoApj9G4ZycD0JCFp3HEAEWQeF4fQtJi XYAETzuAhflDDT7+MFW81t1x362kLlKU+cgWhrKBurXG0nFXNnn2xa4y4pPr4scxE30BH8UBJBx1G +oBp9hygkNXsa/Yo/FRcMlen9Fzl4g+hw+IhXDIibaJDnr/h0lgpe038TopmJuMTf1NHpBqKjtYbF ouYgHpGf9vd6E4IdpFJlTIsbGDQHLilgo9VMCAUQWAHbRo9Z4gasC0WbEt36xwprZA6ycqng+WybD 6tbKs/0w==; Received: from mail-wr1-x44a.google.com ([2a00:1450:4864:20::44a]) by desiato.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r6TJM-00DqUt-1d for linux-arm-kernel@lists.infradead.org; Fri, 24 Nov 2023 10:21:34 +0000 Received: by mail-wr1-x44a.google.com with SMTP id ffacd0b85a97d-332c537e648so923216f8f.2 for ; Fri, 24 Nov 2023 02:21:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1700821280; x=1701426080; darn=lists.infradead.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=mszekfn1Sv+AM+mXkqTGdx2TrBZeMlZMYtBcAH7wCcQ=; b=iERSqAr8FD5rOYG0AGuSuESOZaRNf6EKQTlUP0i0ntBV6Yt3QNukcHvCIQNKWWRT0z 0xgRuD2OAyeFhgTMLenhSYPExlRM45frIYHRfi4VuvviFM+JXW8UYTfmn7Vk8L/B+VkC zG1uy9Q3D/M0y2lM4vaCvML1d6zfXeDiQfSc7dsSSIYZqGStHeSqb7viS4c0toBKgYNB V+KA0QlkBA0BD6kI2UKYgD/UHIQ10/4pY6fc6UqHy/aptaNxs1uwKKHv5OacyPMjT+3U pRqmJEBs3w9ZxxjfKvNKqUtFzkE4vQ/QcSNDhDNP+f4Fhnch+v8E9EBsPnb3z6fHlzZp 5UMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700821280; x=1701426080; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=mszekfn1Sv+AM+mXkqTGdx2TrBZeMlZMYtBcAH7wCcQ=; b=XivdUTKW9cmIHmUZUru3CxXNbuaK6vtXrfGopyas4ZhKs/naeVMZcfJlfoCBoK/eRi m04u2ozGSni2oZUyMxBxxN7bX836JUTmXQHVO6ftSuYtYQ+ztVf1Kl0o4fUx+lKEvhal ZceIw91qnk4SIjbx5oB5qXYB/feqJNNTmXUoyZaYyw2Z4tichZv3Oy1TAfdxTgmSS/lT vGReXNBiRdzVqZCY4A1TPAVdByeDXh/IX4vYF+fQFAVmKwFzEFi3KI3Lemndn7hILzm6 KBlfvkQYA5qgre7DZ+gezHU6MPFiW4MYSZI/pKH3Y/kxk4eLnSpIgv3JlUJiyTodBV/t 1BLg== X-Gm-Message-State: AOJu0Yzq0LZTnU7afZXEOuUlIPkSE39TTXJ508DSfbgM4Zk6ZgC8nsrU U509xjWhhOqPVVmqBhPtCo2EVWRBgCkURIC+SUjS4jQS2Fx9pVrW/g9y/9Tb3ChRpyj8GUBGkz2 YVyE5SAt/L8tdRUJizJFyX4p4BrvK0fQQEta8BfAswYZLt3NfW+Al3ffMkLPjX2zJFEmuzG6G2P w= X-Google-Smtp-Source: AGHT+IH3M2MAbdE75mZzRcufrS9P9LQ2paskEZja/Tzt0+hvF2RxW7j8+v9DvTgPty24/FK9QpyFWKt7 X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a05:6000:247:b0:332:eaa7:56a8 with SMTP id m7-20020a056000024700b00332eaa756a8mr17450wrz.7.1700821280115; Fri, 24 Nov 2023 02:21:20 -0800 (PST) Date: Fri, 24 Nov 2023 11:19:09 +0100 In-Reply-To: <20231124101840.944737-41-ardb@google.com> Mime-Version: 1.0 References: <20231124101840.944737-41-ardb@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1939; i=ardb@kernel.org; h=from:subject; bh=ojuDpQogaCV9dGBD05qcTAXvoBAjXo37UNGpggV+Bbw=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JITWhYiXH2btfJysXhy+9eU/E93XE9cvhgdp9L5nWNq25X H2248ncjlIWBjEOBlkxRRaB2X/f7Tw9UarWeZYszBxWJpAhDFycAjAR+VaG/6Guy5peXL0TFfVP ad3NYvmVS0qkHHYv5E/Qs+69zyAqwcvwT2vZCp1zf/Zms/LFTw+7/E13pk7/67rn36eUXry2/6v FVAYA X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog Message-ID: <20231124101840.944737-70-ardb@google.com> Subject: [PATCH v5 29/39] arm64: Add helpers to probe local CPU for PAC and BTI support From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Catalin Marinas , Will Deacon , Marc Zyngier , Mark Rutland , Ryan Roberts , Anshuman Khandual , Kees Cook X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231124_102125_476650_8464DCD7 X-CRM114-Status: GOOD ( 11.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ard Biesheuvel Add some helpers that will be used by the early kernel mapping code to check feature support on the local CPU. This permits the early kernel mapping to be created with the right attributes, removing the need for tearing it down and recreating it. Signed-off-by: Ard Biesheuvel --- arch/arm64/include/asm/cpufeature.h | 44 ++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h index 99c01417e544..301d4d2211d5 100644 --- a/arch/arm64/include/asm/cpufeature.h +++ b/arch/arm64/include/asm/cpufeature.h @@ -921,6 +921,50 @@ static inline bool kaslr_disabled_cmdline(void) u32 get_kvm_ipa_limit(void); void dump_cpu_features(void); +static inline bool cpu_has_bti(void) +{ + u64 pfr1; + + if (!IS_ENABLED(CONFIG_ARM64_BTI)) + return false; + + pfr1 = read_cpuid(ID_AA64PFR1_EL1); + pfr1 &= ~id_aa64pfr1_override.mask; + pfr1 |= id_aa64pfr1_override.val; + + return cpuid_feature_extract_unsigned_field(pfr1, + ID_AA64PFR1_EL1_BT_SHIFT); +} + +static inline bool cpu_has_pac(void) +{ + u64 isar1, isar2; + u8 feat; + + if (!IS_ENABLED(CONFIG_ARM64_PTR_AUTH)) + return false; + + isar1 = read_cpuid(ID_AA64ISAR1_EL1); + isar1 &= ~id_aa64isar1_override.mask; + isar1 |= id_aa64isar1_override.val; + feat = cpuid_feature_extract_unsigned_field(isar1, + ID_AA64ISAR1_EL1_APA_SHIFT); + if (feat) + return true; + + feat = cpuid_feature_extract_unsigned_field(isar1, + ID_AA64ISAR1_EL1_API_SHIFT); + if (feat) + return true; + + isar2 = read_sysreg_s(SYS_ID_AA64ISAR2_EL1); + isar2 &= ~id_aa64isar2_override.mask; + isar2 |= id_aa64isar2_override.val; + feat = cpuid_feature_extract_unsigned_field(isar2, + ID_AA64ISAR2_EL1_APA3_SHIFT); + return feat; +} + #endif /* __ASSEMBLY__ */ #endif