From patchwork Wed May 14 17:43:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 889981 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E2562280CD9 for ; Wed, 14 May 2025 17:44:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747244642; cv=none; b=EpxfmquAbhNEqF/Jjj6MX5E/6ZUdlkDOfmiI4SaWohLsg0JZ3qlrpH1IWBoGQkp5vms+jB/n3ne52awvRnVk89tcWSaY4HBaqArTCJ9ZqMFnVmgPWy5/u+4DGm/u16S/azyvMnukaaEMRInSkqS8VY45+aiGGJbaTOeWM2fbQ5Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747244642; c=relaxed/simple; bh=mVrD8G0mEVud+xrEngrBvbLdJt6fvh89BZud7f0K+CU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=DW9B3rOJ1Vtehl9gmtmfTdSAvD0WwEtNUdeOZvkkQtM+KLRGe7iXDO7OMOwYgBMu4ZFWOLUv0ApJFWEphjpT99+tgGtE4uBRbmr2cMarY8s5TvZLzcWXHQLLcUfTt2Wb+RsGvZ3XNBlidoT7amaq+K/6VTlBib9IQ76++fV5fHI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=CxJJ2Tlw; arc=none smtp.client-ip=209.85.128.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="CxJJ2Tlw" Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-43eea5a5d80so424725e9.1 for ; Wed, 14 May 2025 10:44:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747244639; x=1747849439; darn=vger.kernel.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=tXVJMsufZ9sm0rGmcq7nqIrA1daerFrHzMfPhoL+63A=; b=CxJJ2TlwvY7HQgFpVM6QXrVPonKnB6U3LjWS5GocZ6CD2A5468WSt2irMySx3A1Giz U9480QcdIeNsokDdxgyvO7btCUrFh7ZFCRXSRlUegWMIeR9dI/eAFHlNXkDfL+BBCsID 70xUE73FZDuQDQFlSf//60oF8GNDGyHJhKseAh3G+YyJTH6kQyH3cTVlaood8PbiS7Id wQyKoGzDJ00Q+hT1dRkZNiaETonuLAuNigyapVUU+xWcSXe4gDeQm2mrhTM6KHfgWHrc UwK9MEUllPWIRjEwUN+Y0Cn1hNW/Q6vEt2JrRhH6vdCdlQuNhmzmipXDEPHr/FFUE5oM Sl0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747244639; x=1747849439; 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=tXVJMsufZ9sm0rGmcq7nqIrA1daerFrHzMfPhoL+63A=; b=ZqFtLa7KQHuP2pMrxZiX6JxNmgAwyo5nc4go/RR9FmgQj83Lo1K8jttYMTQnKV/Vjb nzHQZSuGR4LIt/+YVqAqBU0pOgEE+8X1jfYxm25MdRhbfKQDHPOmTQK3GPtVw4zRN1zp w0bYk5wc7G7FVWJtOJ/OUUJW8N8h4zcO0VluAjkphV6eX9uIHsbzs49CpnkPCsikP5E5 +oicYxWeMEaVFah3WE/UTgIEQSn2198YFwm2QLD/9tzBBhM6FjjcipYm8zL9pxdiDnSg Fvj0ksxQ2jKYGxJ+Lx3aiJVdxk5qohduk7jN4cTbprh+6vCYR9CABNHp8HAknYLtR+LJ ffGQ== X-Gm-Message-State: AOJu0YyzrgfYdeIY7OY+oH0VWc+OnQGQsOwLKfaOz8rYhtw46UZz+6u/ V/tHpqkLUnML+fbIvPC5cz/etu8CKQeJMnKy3cyl/iilIxCGQKuKSG/hPem2D5S78ucILovdgzP ATSjnMhuoO+N08kaxZY35FIBeGA9tc2kX5WcbYWpwBZAyaaeJuXLDu1TbfyTuuRedZ/aLTzOPIj b9ZHVW1QZMh7yBYcQSSJNvPghvrg== X-Google-Smtp-Source: AGHT+IEFMJweCFn/YJy00TUveKZvloJ8ozZW7ocyXdHKJvi0QMeGWaS9uMuGA5J4Ptlhdx+EEwEvRi9t X-Received: from wmrn6.prod.google.com ([2002:a05:600c:5006:b0:43c:fe64:2de3]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:1e84:b0:43c:e7a7:1e76 with SMTP id 5b1f17b1804b1-442f20b8554mr32240165e9.1.1747244639223; Wed, 14 May 2025 10:43:59 -0700 (PDT) Date: Wed, 14 May 2025 19:43:42 +0200 In-Reply-To: <20250514174339.1834871-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-efi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250514174339.1834871-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=5541; i=ardb@kernel.org; h=from:subject; bh=5U5zQ0g4Nylx2meOob6iW9ucS95iuPh4XIaL8oIC4Co=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUPlWuD06w/y06a7Tpn6tO6j+rPwRDlL+xfXBFZv+6jOu tKxdW9CRykLgxgHg6yYIovA7L/vdp6eKFXrPEsWZg4rE8gQBi5OAZhIBxfDP4OTO6NSUk0c1NZu E5HaJNtptfjfmibztg1O+ilpqgrK8xj+B4Qt7urwXH1sys6X8fMMBBJ92Rf8SeuPdC7fuORk58p PPAA= X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250514174339.1834871-11-ardb+git@google.com> Subject: [RFC PATCH 2/7] efi/runtime: Return success/failure from arch_efi_call_virt_setup() From: Ard Biesheuvel To: linux-efi@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Ard Biesheuvel , Will Deacon , Mark Rutland , Sebastian Andrzej Siewior , Peter Zijlstra From: Ard Biesheuvel Permit the arch glue to signal failure from arch_efi_call_virt_setup(). This permits the use of sleeping locks in the call wrappers, and this will allow EFI runtime services to be invoked without the need for disabling preemption. Signed-off-by: Ard Biesheuvel --- arch/arm/include/asm/efi.h | 2 +- arch/arm64/include/asm/efi.h | 2 +- arch/arm64/kernel/efi.c | 3 ++- arch/loongarch/include/asm/efi.h | 2 +- arch/riscv/include/asm/efi.h | 2 +- arch/x86/include/asm/efi.h | 2 +- arch/x86/platform/efi/efi_32.c | 3 ++- arch/x86/platform/efi/efi_64.c | 3 ++- drivers/firmware/efi/riscv-runtime.c | 3 ++- 9 files changed, 13 insertions(+), 9 deletions(-) diff --git a/arch/arm/include/asm/efi.h b/arch/arm/include/asm/efi.h index e408399d5f0e..0809a69bb579 100644 --- a/arch/arm/include/asm/efi.h +++ b/arch/arm/include/asm/efi.h @@ -23,7 +23,7 @@ void arm_efi_init(void); int efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md); int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md, bool); -#define arch_efi_call_virt_setup() efi_virtmap_load() +#define arch_efi_call_virt_setup() (efi_virtmap_load(), true) #define arch_efi_call_virt_teardown() efi_virtmap_unload() #ifdef CONFIG_CPU_TTBR0_PAN diff --git a/arch/arm64/include/asm/efi.h b/arch/arm64/include/asm/efi.h index bcd5622aa096..decf87777f57 100644 --- a/arch/arm64/include/asm/efi.h +++ b/arch/arm64/include/asm/efi.h @@ -37,7 +37,7 @@ int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md, extern u64 *efi_rt_stack_top; efi_status_t __efi_rt_asm_wrapper(void *, const char *, ...); -void arch_efi_call_virt_setup(void); +bool arch_efi_call_virt_setup(void); void arch_efi_call_virt_teardown(void); /* diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c index 250e9d7c08a7..44ad5e759af4 100644 --- a/arch/arm64/kernel/efi.c +++ b/arch/arm64/kernel/efi.c @@ -166,11 +166,12 @@ asmlinkage efi_status_t efi_handle_corrupted_x18(efi_status_t s, const char *f) static DEFINE_RAW_SPINLOCK(efi_rt_lock); -void arch_efi_call_virt_setup(void) +bool arch_efi_call_virt_setup(void) { efi_virtmap_load(); raw_spin_lock(&efi_rt_lock); __efi_fpsimd_begin(); + return true; } void arch_efi_call_virt_teardown(void) diff --git a/arch/loongarch/include/asm/efi.h b/arch/loongarch/include/asm/efi.h index eddc8e79b3fa..84cf2151123f 100644 --- a/arch/loongarch/include/asm/efi.h +++ b/arch/loongarch/include/asm/efi.h @@ -14,7 +14,7 @@ void efifb_setup_from_dmi(struct screen_info *si, const char *opt); #define ARCH_EFI_IRQ_FLAGS_MASK 0x00000004 /* Bit 2: CSR.CRMD.IE */ -#define arch_efi_call_virt_setup() +#define arch_efi_call_virt_setup() true #define arch_efi_call_virt_teardown() #define EFI_ALLOC_ALIGN SZ_64K diff --git a/arch/riscv/include/asm/efi.h b/arch/riscv/include/asm/efi.h index 46a355913b27..a7b4d719e7be 100644 --- a/arch/riscv/include/asm/efi.h +++ b/arch/riscv/include/asm/efi.h @@ -40,7 +40,7 @@ static inline unsigned long efi_get_kimg_min_align(void) #define EFI_KIMG_PREFERRED_ADDRESS efi_get_kimg_min_align() -void arch_efi_call_virt_setup(void); +bool arch_efi_call_virt_setup(void); void arch_efi_call_virt_teardown(void); unsigned long stext_offset(void); diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h index f227a70ac91f..879c8402e024 100644 --- a/arch/x86/include/asm/efi.h +++ b/arch/x86/include/asm/efi.h @@ -140,7 +140,7 @@ extern void efi_delete_dummy_variable(void); extern void efi_crash_gracefully_on_page_fault(unsigned long phys_addr); extern void efi_free_boot_services(void); -void arch_efi_call_virt_setup(void); +bool arch_efi_call_virt_setup(void); void arch_efi_call_virt_teardown(void); extern u64 efi_setup; diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c index b2cc7b4552a1..215f16ce84ab 100644 --- a/arch/x86/platform/efi/efi_32.c +++ b/arch/x86/platform/efi/efi_32.c @@ -141,10 +141,11 @@ void __init efi_runtime_update_mappings(void) } } -void arch_efi_call_virt_setup(void) +bool arch_efi_call_virt_setup(void) { efi_fpu_begin(); firmware_restrict_branch_speculation_start(); + return true; } void arch_efi_call_virt_teardown(void) diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index ac57259a432b..023368e9698a 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c @@ -445,12 +445,13 @@ static void efi_leave_mm(void) switch_mm(&efi_mm, efi_prev_mm, NULL); } -void arch_efi_call_virt_setup(void) +bool arch_efi_call_virt_setup(void) { efi_sync_low_kernel_mappings(); efi_fpu_begin(); firmware_restrict_branch_speculation_start(); efi_enter_mm(); + return true; } void arch_efi_call_virt_teardown(void) diff --git a/drivers/firmware/efi/riscv-runtime.c b/drivers/firmware/efi/riscv-runtime.c index fa71cd898120..07e04b8f982a 100644 --- a/drivers/firmware/efi/riscv-runtime.c +++ b/drivers/firmware/efi/riscv-runtime.c @@ -142,10 +142,11 @@ static void efi_virtmap_unload(void) preempt_enable(); } -void arch_efi_call_virt_setup(void) +bool arch_efi_call_virt_setup(void) { sync_kernel_mappings(efi_mm.pgd); efi_virtmap_load(); + return true; } void arch_efi_call_virt_teardown(void) From patchwork Wed May 14 17:43:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 889980 Received: from mail-wm1-f73.google.com (mail-wm1-f73.google.com [209.85.128.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B95CE28032E for ; Wed, 14 May 2025 17:44:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747244646; cv=none; b=R6ru33AwQuzYdaeZuTeF3vG2i5+w5B3m4FeOR29Sh1lyb5+55f+r7pwBY3HQK0s10crvm1riNfnSnaYKMTFV1kiYJw+Yl6ZGPdvdFeyqMD81cfiC+nVJZ0/Out5wBSamtl75D9Qz5eycDhAQI5a5C2m16tZ9fPAJpo78iC38w7E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747244646; c=relaxed/simple; bh=QCcKltXdUiS6ZvAwHQnUpG+n3tVeHgTvAF4dJYxbvu4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=tkXGxQiiybmT6LBGB8k+e7RwODogjZ/tv4YzcTcHzvy7J0g5CxW3tUlVGM8Vzkk88qRI6Gwf7d22WTmS1WSXO4aLVb+b/0SUzDUoR7rKuRl9QsFTwBa+G/sNbodZJzlHS4AeIepKFiCAm1MOaJFtFoiwJrZGHMnqVG7ojhpsls4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=b88Ke3xx; arc=none smtp.client-ip=209.85.128.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="b88Ke3xx" Received: by mail-wm1-f73.google.com with SMTP id 5b1f17b1804b1-43f251dc364so463965e9.2 for ; Wed, 14 May 2025 10:44:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747244643; x=1747849443; darn=vger.kernel.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=D3joKKQQeIZmQE4kJSA51zMSWECAKvTydbD+tuMEGFg=; b=b88Ke3xxCNTe82Z3RoZjUOoLZY+4W5sXVY9mD7oGDeudxLES1VqB1nht6+6CaS/f/A P+wrmA1QAIVAb1oODE05mkQBuTNJ0PQQcKDmY55Kh/7KH9xKCSNqBi5GOVrd62N92V+i 1dVSbJ8t7ljsa/PiVtet2dauQ8Ky/o8A49a3DIFiilas88pHKU6vNswU9LA2e6+hwPa4 QOOHCL3NBDuoyEirTUHZwKdB+ZPvMkbHiAfmEZDmBm809SExB3r+9pML6wdzfY12h9TA 2qQhJEffpIVlxBEdS8b0dUtZvKqUbBu5zwxakoQR6xNLkeerp8D8vSaJQiBUFt/UzdQR Jizw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747244643; x=1747849443; 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=D3joKKQQeIZmQE4kJSA51zMSWECAKvTydbD+tuMEGFg=; b=fDnTzGrznh/k9RgrsAncdZZPAroif7v6F5jCO8qI2WbBx7u+v2p5m+DOrtGf9M7dBm IrqwcmRhsYAMnkiWZlEhRrvg2K0suoeCKHz6nPBXxphu6ncke0EAZGSxPZ2Y5HB2zi95 IqH8ULCBGPfVcu3xja31u3KrYM6AVYq3q1cxkg4QYv5/grLkqSP7XLXvSV5rM18JGvR4 dfPTxBqioCNgLhMSKXrOFwIf39bK/Bmw925dHgYdjmqywaLZkxTDqC/5tWjeMN9WaBOp xhAnvKetGRI7oK7sfR0w8OuA5FCOkmebw2DZpRh4m9oCidNLeF8NP8/B5d4j4NIlPvvx srFw== X-Gm-Message-State: AOJu0YwuzZ5gT11yZK1UMjGmXLt57rJVH6hCmzY+K/k1Bczfo0UWO5Va RPuPDsBmwFK1OS2PxvGHd7b+QMkx8vyC/BkaCsJ+2gyvCj+S+oYHqzRuhiq9H4UV5Zr/oGu2Mf+ g1/STOUZ7WLZzcVjehelIIe70DIooyspk4t0GtmdMuftDbGWgsm9CEh5n/V35Vch0oOcrR924nD KG1hNTI3wXQtcnHfmYslk9zH8HJg== X-Google-Smtp-Source: AGHT+IEb+8/c9BiVGl1VreAZ1QbOIrYHfFd06gIJ4WYvdQgg+dQ9aQ2nVaMRaSnJ1H83VLXljFnK3HOA X-Received: from wrgb2.prod.google.com ([2002:a05:6000:3c2:b0:39d:7be5:b8fa]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:420c:b0:3a1:fcd9:f300 with SMTP id ffacd0b85a97d-3a3499224cbmr4177122f8f.39.1747244643209; Wed, 14 May 2025 10:44:03 -0700 (PDT) Date: Wed, 14 May 2025 19:43:44 +0200 In-Reply-To: <20250514174339.1834871-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-efi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250514174339.1834871-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=902; i=ardb@kernel.org; h=from:subject; bh=B/kHgdOpjuIm/yGgjP0zTXGcP6XnGaz+vciWyr3djVs=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUPlWkj9BO3u3gnr2ypE5E2uvsxuvTddxnHDnQ7TowlXD uj/FmPqKGVhEONgkBVTZBGY/ffdztMTpWqdZ8nCzGFlAhnCwMUpABOZo83wT9ddzsGtYhv3rz/7 NOWs9zVYcR/I3iEhJNXOMquLS2aWN8P/rHDfI4ztPNuVmsOTZFLuFfz8f7KhK/XA42jhh4384g+ ZAQ== X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250514174339.1834871-13-ardb+git@google.com> Subject: [RFC PATCH 4/7] arm64/fpsimd: Don't warn when EFI execution context is preemptible From: Ard Biesheuvel To: linux-efi@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Ard Biesheuvel , Will Deacon , Mark Rutland , Sebastian Andrzej Siewior , Peter Zijlstra From: Ard Biesheuvel Kernel mode FP/SIMD no longer requires preemption to be disabled, so only warn on uses of FP/SIMD from preemptible context if the fallback path is taken for cases where kernel mode NEON would not be allowed otherwise. Signed-off-by: Ard Biesheuvel --- arch/arm64/kernel/fpsimd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c index ae2ea0196030..47a8706e26b7 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -1975,11 +1975,11 @@ void __efi_fpsimd_begin(void) if (!system_supports_fpsimd()) return; - WARN_ON(preemptible()); - if (may_use_simd()) { kernel_neon_begin(); } else { + WARN_ON(preemptible()); + /* * If !efi_sve_state, SVE can't be in use yet and doesn't need * preserving: From patchwork Wed May 14 17:43:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 889979 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CCCB12882B4 for ; Wed, 14 May 2025 17:44:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747244650; cv=none; b=c3ev1dVEfmFZ1KjnQP4vuj3rO9WmyY0QPc0KdKrM7NlDIsxWB7ZBra889dpr6+f+muKWRDh96/sy7n6W5HcuZKXloE7/PoTjHH+8P82hoadJ8t6vjETd+lMqb3LF2Hu3oszWBeTwJNpr/pcNZGvHMluGIRz++URLXLWa5Asv+Q4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747244650; c=relaxed/simple; bh=2pTyG7a78PYxDJeFo/V+utVWoYoeAwSEDNzrtnCQ2TU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=if+g8DHa6UHXh/jxLWS9uS27IyJeLo0Qaxc4BnLPO8iItsWmmrtOuJTg5huy+xxDKyFxkiq7qErpO97sqIfDslMA8f8Djaz8FnrSj7euDdPRnhmWzwTqzRKASmAkO4Zqvp00PGU+LRWkmTzowZbeKRca00OOjcUEMSxUI/vGry8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=VbheYpyu; arc=none smtp.client-ip=209.85.221.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="VbheYpyu" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-3a0adce033bso17354f8f.2 for ; Wed, 14 May 2025 10:44:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747244647; x=1747849447; darn=vger.kernel.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=rPT2qHs8nb8woLd8l62ZcLF4l1Hy/juOm4dBzovnmEc=; b=VbheYpyuZmTK32ENushkLvqdzvpvoiit4idGHh9MdglHqz1lvUXEB2847hJHOF9Kbw hWOXB4DYvjwJrRweLh7k+TzdI20fOa/AhsziP5gnMLSr6jqbL5fgDIGlw77ijzPdPPNq Se11b3y6kIsyLnJVFkOEqGs2AG2sNYIKwiJLrRyqPqnk9b2ctzwAFIknOVQqZQ0Dl2Lj VBiqCYyY7jS4c87RQo/pPYOV2uFrxG2/f0xEgJ/3JEggshaYGr8mEOOPqVOMBQ8prSkn 8DDSkI2yWWUyri2aP1qP/zK5VbGt6gcBS61Bx9InhqkeFKhn2fsjccZ54Ug8Sg8lGxkf d/ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747244647; x=1747849447; 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=rPT2qHs8nb8woLd8l62ZcLF4l1Hy/juOm4dBzovnmEc=; b=QMbNvT1MQWxcIAFxFX6rl5pDhM4O+L+lRpZMVkUHRr6Z4aGQa/PW8Pop6t0hBP8zOl XIo+WJz27NbRjEuGXPCnmRgoi445k5R44Xl17XPa0hFdoPJEDeoikDCJzLdSW21caihz lfkPGiNEOh+jWsfY/UoxGCKJCV0icUZaHJkC4aW+p88UTrzY2qX4iVKVjZ+3zoGMbb9Y Q7CImImFXIODNt/TKtH8eFBJ1gyd1M4hPLXe5R8qZUEabGH0BIvGAZ1KPFfIouSbxIKM aeGlyPh4ok9B05EtGOI8UU7nsMb0NT2JSqdTkURszdpje7KaAwfgeAxv/pJ8Mx8G+vO8 bkcw== X-Gm-Message-State: AOJu0YzFbCtnjlSII5ZKedljHU1pd6NzFQkMq3CnaHGF/y855fEP13br l1oxOOcAa61Jzhxc3dS2Gups+aFJdlkEhZPHfjmRVg3wL18FmQVvN05o1tjwQlvOJ+Dk6DmqERz y+shPAJHRJEG16Ar6VmgbX20XGlhEkiza2doIrf/dnl4lD11k2hzJFUb98MN1ghORz+c1SA3Fs1 anrkV10Ad4An+7IYaKiwSBK/FJjg== X-Google-Smtp-Source: AGHT+IGbwcdtxYzq8nDG7XB20QQ6m24gl78kM2NUn0+FEJqLZ7BDo2egTQqnLcfij6k5NsW+zWNEgZ3T X-Received: from wmrs6.prod.google.com ([2002:a05:600c:3846:b0:43d:1c63:a630]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:adf:fc11:0:b0:3a2:2586:581e with SMTP id ffacd0b85a97d-3a3499532e2mr3010019f8f.53.1747244647113; Wed, 14 May 2025 10:44:07 -0700 (PDT) Date: Wed, 14 May 2025 19:43:46 +0200 In-Reply-To: <20250514174339.1834871-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-efi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250514174339.1834871-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1727; i=ardb@kernel.org; h=from:subject; bh=JhAXBUO5lApwzqV0/zxSwFWazHc5G4mQ1by8+P/Uv/8=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUPlWljMtpUJVZ80e6ZI9Ra1zHxSJWYQVOd6b1nCEvHUX 3qhQjkdpSwMYhwMsmKKLAKz/77beXqiVK3zLFmYOaxMIEMYuDgFYCJyqQz/Q+7ZXWWb8qPRVdt3 3hqpZOWCDNay+XfdD6woEZAwjeRxZPjvHl77hpX3uNb8PJNws+OinS7mV6NZXMOPe5wSm1kYncI CAA== X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250514174339.1834871-15-ardb+git@google.com> Subject: [RFC PATCH 6/7] arm64/efi: Move uaccess en/disable out of efi_set_pgd() From: Ard Biesheuvel To: linux-efi@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Ard Biesheuvel , Will Deacon , Mark Rutland , Sebastian Andrzej Siewior , Peter Zijlstra From: Ard Biesheuvel efi_set_pgd() will no longer be called when invoking EFI runtime services via the efi_rts_wq work queue, but the uaccess en/disable are still needed when using PAN emulation using TTBR0 switching. So move these into the callers. Signed-off-by: Ard Biesheuvel --- arch/arm64/include/asm/efi.h | 3 --- arch/arm64/kernel/efi.c | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm64/include/asm/efi.h b/arch/arm64/include/asm/efi.h index decf87777f57..abe9176a3a23 100644 --- a/arch/arm64/include/asm/efi.h +++ b/arch/arm64/include/asm/efi.h @@ -132,15 +132,12 @@ static inline void efi_set_pgd(struct mm_struct *mm) * exception when invoking the EFI run-time services. */ update_saved_ttbr0(current, mm); - uaccess_ttbr0_enable(); - post_ttbr_update_workaround(); } else { /* * Defer the switch to the current thread's TTBR0_EL1 * until uaccess_enable(). Restore the current * thread's saved ttbr0 corresponding to its active_mm */ - uaccess_ttbr0_disable(); update_saved_ttbr0(current, current->active_mm); } } diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c index d01ae156bb63..5d188c6c44d7 100644 --- a/arch/arm64/kernel/efi.c +++ b/arch/arm64/kernel/efi.c @@ -177,6 +177,8 @@ bool arch_efi_call_virt_setup(void) return false; efi_virtmap_load(); + uaccess_ttbr0_enable(); + post_ttbr_update_workaround(); __efi_fpsimd_begin(); return true; } @@ -185,6 +187,7 @@ void arch_efi_call_virt_teardown(void) { __efi_fpsimd_end(); efi_virtmap_unload(); + uaccess_ttbr0_disable(); up(&efi_rt_lock); }