LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Fenghua Yu <fenghua.yu@intel.com> To: "Thomas Gleixner" <tglx@linutronix.de>, "Ingo Molnar" <mingo@elte.hu>, "H. Peter Anvin" <hpa@linux.intel.com>, "Ashok Raj" <ashok.raj@intel.com>, "Ravi V Shankar" <ravi.v.shankar@intel.com>, "Tony Luck" <tony.luck@intel.com>, "Dave Hansen" <dave.hansen@intel.com>, "Rafael Wysocki" <rafael.j.wysocki@intel.com>, "Arjan van de Ven" <arjan@infradead.org>, "Alan Cox" <alan@linux.intel.com> Cc: "x86" <x86@kernel.org>, "linux-kernel" <linux-kernel@vger.kernel.org>, Fenghua Yu <fenghua.yu@intel.com> Subject: [PATCH 08/15] x86/split_lock: Set split lock during EFI runtime service Date: Mon, 14 May 2018 11:52:18 -0700 [thread overview] Message-ID: <1526323945-211107-9-git-send-email-fenghua.yu@intel.com> (raw) In-Reply-To: <1526323945-211107-1-git-send-email-fenghua.yu@intel.com> If kernel enables #AC for split locked accesses, EFI runtime service may hit #AC exception, treat it as fatal fault, and cause system hang. To avoid debugging potential buggy EFI runtime service code in BIOS, restore to BIOS split lock setting before entering EFI runtime service and restore to kernel split lock setting after exiting EFI runtime service. Signed-off-by: Fenghua Yu <fenghua.yu@intel.com> --- arch/x86/include/asm/efi.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h index cec5fae23eb3..6dcd0717a3cf 100644 --- a/arch/x86/include/asm/efi.h +++ b/arch/x86/include/asm/efi.h @@ -8,6 +8,7 @@ #include <asm/tlb.h> #include <asm/nospec-branch.h> #include <asm/mmu_context.h> +#include <asm/cpu.h> /* * We map the EFI regions needed for runtime services non-contiguously, @@ -41,12 +42,14 @@ extern asmlinkage unsigned long efi_call_phys(void *, ...); #define arch_efi_call_virt_setup() \ ({ \ kernel_fpu_begin(); \ + restore_split_lock_ac_bios(NULL); \ firmware_restrict_branch_speculation_start(); \ }) #define arch_efi_call_virt_teardown() \ ({ \ firmware_restrict_branch_speculation_end(); \ + restore_split_lock_ac_kernel(NULL); \ kernel_fpu_end(); \ }) @@ -84,6 +87,7 @@ struct efi_scratch { efi_sync_low_kernel_mappings(); \ preempt_disable(); \ __kernel_fpu_begin(); \ + restore_split_lock_ac_bios(NULL); \ firmware_restrict_branch_speculation_start(); \ \ if (!efi_enabled(EFI_OLD_MEMMAP)) \ @@ -99,6 +103,7 @@ struct efi_scratch { efi_switch_mm(efi_scratch.prev_mm); \ \ firmware_restrict_branch_speculation_end(); \ + restore_split_lock_ac_kernel(NULL); \ __kernel_fpu_end(); \ preempt_enable(); \ }) -- 2.5.0
next prev parent reply other threads:[~2018-05-14 18:55 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-14 18:52 [PATCH 0/15] x86/split_lock: Enable #AC exception for split locked accesses Fenghua Yu 2018-05-14 18:52 ` [PATCH 01/15] x86/split_lock: Add CONFIG and enumerate #AC exception for split locked access feature Fenghua Yu 2018-05-15 15:36 ` Dave Hansen 2018-05-15 15:41 ` Fenghua Yu 2018-05-15 15:54 ` Dave Hansen 2018-05-14 18:52 ` [PATCH 02/15] x86/split_lock: Set up #AC exception for split locked accesses Fenghua Yu 2018-05-14 18:52 ` [PATCH 03/15] x86/split_lock: Handle #AC exception for split lock in kernel mode Fenghua Yu 2018-05-15 15:51 ` Dave Hansen 2018-05-15 16:35 ` Luck, Tony 2018-05-15 17:21 ` Fenghua Yu 2018-05-16 16:44 ` Dave Hansen 2018-05-16 21:35 ` Fenghua Yu 2018-05-14 18:52 ` [PATCH 04/15] x86/split_lock: Use non locked bit set instruction in set_cpu_cap Fenghua Yu 2018-05-14 18:52 ` [PATCH 05/15] x86/split_lock: Use non atomic set and clear bit instructions to clear cpufeature Fenghua Yu 2018-05-14 18:52 ` [PATCH 06/15] x86/split_lock: Save #AC setting for split lock in BIOS in boot time and restore the setting in reboot Fenghua Yu 2018-05-14 18:52 ` [PATCH 07/15] x86/split_lock: Handle suspend/hibernate and resume Fenghua Yu 2018-05-14 21:42 ` Rafael J. Wysocki 2018-05-14 18:52 ` Fenghua Yu [this message] 2018-05-14 18:52 ` [PATCH 09/15] x86/split_lock: Explicitly enable or disable #AC for split locked accesses Fenghua Yu 2018-05-15 16:15 ` Dave Hansen 2018-05-15 17:29 ` Fenghua Yu 2018-05-16 16:37 ` Dave Hansen 2018-05-14 18:52 ` [PATCH 10/15] x86/split_lock: Add a sysfs interface to allow user to enable or disable split lock during run time Fenghua Yu 2018-05-14 18:52 ` [PATCH 11/15] x86/split_lock: Add sysfs interface to control user mode behavior Fenghua Yu 2018-05-14 18:52 ` [PATCH 12/15] x86/split_lock: Add sysfs interface to show and control BIOS split lock setting Fenghua Yu 2018-05-14 18:52 ` [PATCH 13/15] x86/split_lock: Trace #AC exception for split lock Fenghua Yu 2018-05-14 18:52 ` [PATCH 14/15] x86/split_lock: Add CONFIG and testing sysfs interface Fenghua Yu 2018-05-14 18:52 ` [PATCH 15/15] x86/split_lock: Add split lock user space test in selftest Fenghua Yu 2018-05-15 15:10 ` [PATCH 0/15] x86/split_lock: Enable #AC exception for split locked accesses Dave Hansen 2018-05-15 16:26 ` Alan Cox 2018-05-15 16:30 ` Dave Hansen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1526323945-211107-9-git-send-email-fenghua.yu@intel.com \ --to=fenghua.yu@intel.com \ --cc=alan@linux.intel.com \ --cc=arjan@infradead.org \ --cc=ashok.raj@intel.com \ --cc=dave.hansen@intel.com \ --cc=hpa@linux.intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@elte.hu \ --cc=rafael.j.wysocki@intel.com \ --cc=ravi.v.shankar@intel.com \ --cc=tglx@linutronix.de \ --cc=tony.luck@intel.com \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).