Ingo, Thomas, This is the second batch of EFI updates for v5.6. Two things are still under discussion, so I'll probably have a few more changes for this cycle in a week or so. The following changes since commit 0679715e714345d273c0e1eb78078535ffc4b2a1: efi/libstub/x86: Avoid globals to store context during mixed mode calls (2019-12-25 10:49:26 +0100) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git tags/efi-next for you to fetch changes up to d95e4feae5368a91775c4597a8f298ba84f31535: efi/x86: avoid RWX mappings for all of DRAM (2020-01-03 11:46:15 +0100) ---------------------------------------------------------------- Second batch of EFI updates for v5.6: - Some followup fixes for the EFI stub changes that have been queued up already. - Overhaul of the x86 EFI boot/runtime code, to peel off layers of pointer casting and type mangling via variadic macros and asm wrappers that made the code fragile and ugly. - Increase robustness for mixed mode code, by using argmaps to annotate and translate function prototypes that are not mixed mode safe. (Arvind) - Add the ability to disable DMA at the root port level in the EFI stub, to avoid booting into the kernel proper with IOMMUs in pass through and DMA enabled (suggested by Matthew) - Get rid of RWX mappings in the EFI memory map, where possible. ---------------------------------------------------------------- Ard Biesheuvel (17): efi/libstub: fix boot argument handling in mixed mode entry code efi/libstub/x86: force 'hidden' visibility for extern declarations efi/x86: re-disable RT services for 32-bit kernels running on 64-bit EFI efi/x86: map the entire EFI vendor string before copying it efi/x86: avoid redundant cast of EFI firmware service pointer efi/x86: split off some old memmap handling into separate routines efi/x86: split SetVirtualAddresMap() wrappers into 32 and 64 bit versions efi/x86: simplify i386 efi_call_phys() firmware call wrapper efi/x86: simplify 64-bit EFI firmware call wrapper efi/x86: simplify mixed mode call wrapper efi/x86: drop two near identical versions of efi_runtime_init() efi/x86: clean up efi_systab_init() routine for legibility efi/x86: don't panic or BUG() on non-critical error conditions efi/x86: remove unreachable code in kexec_enter_virtual_mode() x86/mm: fix NX bit clearing issue in kernel_map_pages_in_pgd efi/x86: don't map the entire kernel text RW for mixed mode efi/x86: avoid RWX mappings for all of DRAM Arvind Sankar (2): efi/x86: Check number of arguments to variadic functions efi/x86: Allow translating 64-bit arguments for mixed mode calls Matthew Garrett (1): efi: Allow disabling PCI busmastering on bridges during boot Documentation/admin-guide/kernel-parameters.txt | 7 +- arch/x86/boot/compressed/eboot.c | 18 +- arch/x86/boot/compressed/efi_thunk_64.S | 4 +- arch/x86/boot/compressed/head_64.S | 17 +- arch/x86/include/asm/efi.h | 169 ++++++++--- arch/x86/mm/pageattr.c | 8 +- arch/x86/platform/efi/Makefile | 1 - arch/x86/platform/efi/efi.c | 354 ++++++++---------------- arch/x86/platform/efi/efi_32.c | 22 +- arch/x86/platform/efi/efi_64.c | 157 +++++++---- arch/x86/platform/efi/efi_stub_32.S | 109 ++------ arch/x86/platform/efi/efi_stub_64.S | 43 +-- arch/x86/platform/efi/efi_thunk_64.S | 121 ++------ arch/x86/platform/uv/bios_uv.c | 7 +- drivers/firmware/efi/Kconfig | 22 ++ drivers/firmware/efi/libstub/Makefile | 2 +- drivers/firmware/efi/libstub/efi-stub-helper.c | 20 +- drivers/firmware/efi/libstub/pci.c | 114 ++++++++ include/linux/efi.h | 29 +- 19 files changed, 597 insertions(+), 627 deletions(-) create mode 100644 drivers/firmware/efi/libstub/pci.c