From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756109AbdDMGSl (ORCPT ); Thu, 13 Apr 2017 02:18:41 -0400 Received: from terminus.zytor.com ([65.50.211.136]:44527 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751400AbdDMGSj (ORCPT ); Thu, 13 Apr 2017 02:18:39 -0400 Date: Wed, 12 Apr 2017 23:13:06 -0700 From: tip-bot for Omar Sandoval Message-ID: Cc: matt@codeblueprint.co.uk, dyoung@redhat.com, mingo@kernel.org, hpa@zytor.com, tglx@linutronix.de, osandov@fb.com, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, peterz@infradead.org, pjones@redhat.com, ard.biesheuvel@linaro.org Reply-To: torvalds@linux-foundation.org, peterz@infradead.org, pjones@redhat.com, linux-kernel@vger.kernel.org, ard.biesheuvel@linaro.org, tglx@linutronix.de, osandov@fb.com, dyoung@redhat.com, matt@codeblueprint.co.uk, hpa@zytor.com, mingo@kernel.org In-Reply-To: <20170412152719.9779-2-matt@codeblueprint.co.uk> References: <20170412152719.9779-2-matt@codeblueprint.co.uk> To: linux-tip-commits@vger.kernel.org Subject: [tip:efi/urgent] x86/efi: Don't try to reserve runtime regions Git-Commit-ID: 6f6266a561306e206e0e31a5038f029b6a7b1d89 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 6f6266a561306e206e0e31a5038f029b6a7b1d89 Gitweb: http://git.kernel.org/tip/6f6266a561306e206e0e31a5038f029b6a7b1d89 Author: Omar Sandoval AuthorDate: Wed, 12 Apr 2017 16:27:19 +0100 Committer: Ingo Molnar CommitDate: Thu, 13 Apr 2017 08:09:27 +0200 x86/efi: Don't try to reserve runtime regions Reserving a runtime region results in splitting the EFI memory descriptors for the runtime region. This results in runtime region descriptors with bogus memory mappings, leading to interesting crashes like the following during a kexec: general protection fault: 0000 [#1] SMP Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.11.0-rc1 #53 Hardware name: Wiwynn Leopard-Orv2/Leopard-DDR BW, BIOS LBM05 09/30/2016 RIP: 0010:virt_efi_set_variable() ... Call Trace: efi_delete_dummy_variable() efi_enter_virtual_mode() start_kernel() ? set_init_arg() x86_64_start_reservations() x86_64_start_kernel() start_cpu() ... Kernel panic - not syncing: Fatal exception Runtime regions will not be freed and do not need to be reserved, so skip the memmap modification in this case. Signed-off-by: Omar Sandoval Signed-off-by: Matt Fleming Cc: # v4.9+ Cc: Ard Biesheuvel Cc: Dave Young Cc: Linus Torvalds Cc: Peter Jones Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: linux-efi@vger.kernel.org Fixes: 8e80632fb23f ("efi/esrt: Use efi_mem_reserve() and avoid a kmalloc()") Link: http://lkml.kernel.org/r/20170412152719.9779-2-matt@codeblueprint.co.uk Signed-off-by: Ingo Molnar --- arch/x86/platform/efi/quirks.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c index 30031d5..cdfe8c6 100644 --- a/arch/x86/platform/efi/quirks.c +++ b/arch/x86/platform/efi/quirks.c @@ -201,6 +201,10 @@ void __init efi_arch_mem_reserve(phys_addr_t addr, u64 size) return; } + /* No need to reserve regions that will never be freed. */ + if (md.attribute & EFI_MEMORY_RUNTIME) + return; + size += addr % EFI_PAGE_SIZE; size = round_up(size, EFI_PAGE_SIZE); addr = round_down(addr, EFI_PAGE_SIZE);