[GIT PULL] EFI changes for v5.6

From: Ingo Molnar
Date: Tue Jan 28 2020 - 02:48:58 EST


Linus,

Please pull the latest efi-core-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git efi-core-for-linus

# HEAD: ac6119e7f25b842fc061e8aec88c4f32d3bc28ef efi/x86: Disable instrumentation in the EFI runtime handling code

The main changes in this cycle were:

- Cleanup of the GOP [graphics output] handling code in the EFI stub
- Complete refactoring of the mixed mode handling in the x86 EFI stub
- Overhaul of the x86 EFI boot/runtime code
- Increase robustness for mixed mode code
- Add the ability to disable DMA at the root port level in the EFI stub
- Get rid of RWX mappings in the EFI memory map and page tables, where possible
- Move the support code for the old EFI memory mapping style into its only
user, the SGI UV1+ support code.
- plus misc fixes, updates, smaller cleanups.

- And due to interactions with the RWX changes, another round of PAT
cleanups make a guest appearance via the EFI tree - with no side
effects intended.

Thanks,

Ingo

------------------>
Anshuman Khandual (1):
efi: Fix comment for efi_mem_type() wrt absent physical addresses

Ard Biesheuvel (46):
efi/libstub: Remove unused __efi_call_early() macro
efi/x86: Rename efi_is_native() to efi_is_mixed()
efi/libstub: Use a helper to iterate over a EFI handle array
efi/libstub: Extend native protocol definitions with mixed_mode aliases
efi/libstub: Distinguish between native/mixed not 32/64 bit
efi/libstub: Drop explicit 32/64-bit protocol definitions
efi/libstub: Use stricter typing for firmware function pointers
efi/libstub: Annotate firmware routines as __efiapi
efi/libstub/x86: Avoid thunking for native firmware calls
efi/libstub: Avoid protocol wrapper for file I/O routines
efi/libstub: Get rid of 'sys_table_arg' macro parameter
efi/libstub: Unify the efi_char16_printk implementations
efi/libstub/x86: Drop __efi_early() export and efi_config struct
efi/libstub: Drop sys_table_arg from printk routines
efi/libstub: Remove 'sys_table_arg' from all function prototypes
efi/libstub/x86: Work around page freeing issue in mixed mode
efi/libstub: Drop protocol argument from efi_call_proto() macro
efi/libstub: Drop 'table' argument from efi_table_attr() macro
efi/libstub: Rename efi_call_early/_runtime macros to be more intuitive
efi/libstub: Tidy up types and names of global cmdline variables
efi/libstub/x86: Avoid globals to store context during mixed mode calls
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()
efi/libstub/x86: Use const attribute for efi_is_64bit()
efi/libstub/x86: Use mandatory 16-byte stack alignment in mixed 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
efi/x86: Limit EFI old memory map to SGI UV machines
efi/arm: Defer probe of PCIe backed efifb on DT systems
efi/x86: avoid KASAN false positives when accessing the 1: 1 mapping
x86/boot/compressed: Relax sed symbol type regex for LLVM ld.lld
efi/x86: Disallow efi=old_map in mixed mode
efi/x86: Disable instrumentation in the EFI runtime handling code

Arnd Bergmann (1):
efi/libstub/x86: Fix unused-variable warning

Arvind Sankar (6):
efi/gop: Remove bogus packed attribute from GOP structures
efi/gop: Remove unused typedef
efi/gop: Convert GOP structures to typedef and clean up some types
efi/gop: Unify 32/64-bit functions
efi/x86: Check number of arguments to variadic functions
efi/x86: Allow translating 64-bit arguments for mixed mode calls

Dan Williams (4):
efi: Add a flags parameter to efi_memory_map
efi: Add tracking for dynamically allocated memmaps
efi: Fix efi_memmap_alloc() leaks
efi: Fix handling of multiple efi_fake_mem= entries

Ingo Molnar (16):
x86/setup: Clean up the header portion of setup.c
x86/setup: Enhance the comments
x86/mm/pat: Update the comments in pat.c and pat_interval.c and refresh the code a bit
x86/mm/pat: Disambiguate PAT-disabled boot messages
x86/mm/pat: Create fixed width output in /sys/kernel/debug/x86/pat_memtype_list, similar to the E820 debug printouts
x86/mm/pat: Simplify the free_memtype() control flow
x86/mm/pat: Harmonize 'struct memtype *' local variable and function parameter use
x86/mm/pat: Clean up PAT initialization flags
x86/mm/pat: Move the memtype related files to arch/x86/mm/pat/
x86/mm/pat: Standardize on memtype_*() prefix for APIs
x86/mm/pat: Rename <asm/pat.h> => <asm/memtype.h>
x86/mm/pat: Clean up <asm/memtype.h> externs
x86/mm/pat: Fix typo in the Kconfig help text
x86/mm: Tabulate the page table encoding definitions
mm/vmalloc: Add empty <asm/vmalloc.h> headers and use them from <linux/vmalloc.h>
mm, x86/mm: Untangle address space layout definitions from basic pgtable type definitions

Matthew Garrett (1):
efi: Allow disabling PCI busmastering on bridges during boot

Qian Cai (1):
efi/libstub/x86: Fix EFI server boot failure

kbuild test robot (1):
x86/mm/pat: Mark __cpa_flush_tlb() as static


Documentation/admin-guide/kernel-parameters.txt | 10 +-
arch/alpha/include/asm/vmalloc.h | 4 +
arch/arc/include/asm/vmalloc.h | 4 +
arch/arm/include/asm/efi.h | 17 +-
arch/arm/include/asm/vmalloc.h | 4 +
arch/arm64/include/asm/efi.h | 16 +-
arch/arm64/include/asm/vmalloc.h | 4 +
arch/c6x/include/asm/vmalloc.h | 4 +
arch/csky/include/asm/vmalloc.h | 4 +
arch/h8300/include/asm/vmalloc.h | 4 +
arch/hexagon/include/asm/vmalloc.h | 4 +
arch/ia64/include/asm/vmalloc.h | 4 +
arch/m68k/include/asm/vmalloc.h | 4 +
arch/microblaze/include/asm/vmalloc.h | 4 +
arch/mips/include/asm/vmalloc.h | 4 +
arch/nds32/include/asm/vmalloc.h | 4 +
arch/nios2/include/asm/vmalloc.h | 4 +
arch/openrisc/include/asm/vmalloc.h | 4 +
arch/parisc/include/asm/vmalloc.h | 4 +
arch/powerpc/include/asm/vmalloc.h | 4 +
arch/riscv/include/asm/vmalloc.h | 4 +
arch/s390/include/asm/vmalloc.h | 4 +
arch/sh/include/asm/vmalloc.h | 4 +
arch/sparc/include/asm/vmalloc.h | 4 +
arch/um/include/asm/vmalloc.h | 4 +
arch/unicore32/include/asm/vmalloc.h | 4 +
arch/x86/Kconfig | 13 +-
arch/x86/boot/Makefile | 2 +-
arch/x86/boot/compressed/Makefile | 2 +-
arch/x86/boot/compressed/eboot.c | 278 ++++-----
arch/x86/boot/compressed/eboot.h | 30 +-
arch/x86/boot/compressed/efi_stub_32.S | 87 ---
arch/x86/boot/compressed/efi_stub_64.S | 5 -
arch/x86/boot/compressed/efi_thunk_64.S | 65 +-
arch/x86/boot/compressed/head_32.S | 64 +-
arch/x86/boot/compressed/head_64.S | 97 +--
arch/x86/include/asm/cpu_entry_area.h | 10 +-
arch/x86/include/asm/efi.h | 244 +++++---
arch/x86/include/asm/memtype.h | 27 +
arch/x86/include/asm/mmu_context.h | 86 +--
arch/x86/include/asm/mtrr.h | 4 +-
arch/x86/include/asm/pat.h | 27 -
arch/x86/include/asm/pci.h | 2 +-
arch/x86/include/asm/pgtable_32_areas.h | 53 ++
arch/x86/include/asm/pgtable_32_types.h | 57 +-
arch/x86/include/asm/pgtable_areas.h | 16 +
arch/x86/include/asm/pgtable_types.h | 143 ++---
arch/x86/include/asm/vmalloc.h | 6 +
arch/x86/kernel/cpu/common.c | 2 +-
arch/x86/kernel/cpu/mtrr/generic.c | 2 +-
arch/x86/kernel/cpu/mtrr/mtrr.c | 2 +-
arch/x86/kernel/cpu/scattered.c | 2 +-
arch/x86/kernel/cpu/topology.c | 2 +-
arch/x86/kernel/kexec-bzimage64.c | 2 +-
arch/x86/kernel/ldt.c | 83 +++
arch/x86/kernel/setup.c | 164 ++---
arch/x86/kernel/x86_init.c | 2 +-
arch/x86/kvm/mmu/mmu.c | 2 +-
arch/x86/mm/Makefile | 8 +-
arch/x86/mm/fault.c | 1 +
arch/x86/mm/init_32.c | 1 +
arch/x86/mm/iomap_32.c | 6 +-
arch/x86/mm/ioremap.c | 12 +-
arch/x86/mm/pat/Makefile | 5 +
arch/x86/mm/{pageattr-test.c => pat/cpa-test.c} | 0
arch/x86/mm/{pat.c => pat/memtype.c} | 203 ++++---
arch/x86/mm/{pat_internal.h => pat/memtype.h} | 12 +-
arch/x86/mm/pat/memtype_interval.c | 194 ++++++
arch/x86/mm/{pageattr.c => pat/set_memory.c} | 32 +-
arch/x86/mm/pat_interval.c | 185 ------
arch/x86/mm/pgtable_32.c | 1 +
arch/x86/mm/physaddr.c | 1 +
arch/x86/pci/i386.c | 2 +-
arch/x86/platform/efi/Makefile | 3 +-
arch/x86/platform/efi/efi.c | 398 ++++--------
arch/x86/platform/efi/efi_32.c | 22 +-
arch/x86/platform/efi/efi_64.c | 317 ++++------
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/efi/quirks.c | 46 +-
arch/x86/platform/uv/bios_uv.c | 169 +++++-
arch/x86/xen/efi.c | 2 +-
arch/x86/xen/mmu_pv.c | 2 +-
arch/xtensa/include/asm/vmalloc.h | 4 +
drivers/firmware/efi/Kconfig | 22 +
drivers/firmware/efi/arm-init.c | 107 +++-
drivers/firmware/efi/efi.c | 2 +-
drivers/firmware/efi/fake_mem.c | 43 +-
drivers/firmware/efi/libstub/Makefile | 2 +-
drivers/firmware/efi/libstub/arm-stub.c | 110 ++--
drivers/firmware/efi/libstub/arm32-stub.c | 70 +--
drivers/firmware/efi/libstub/arm64-stub.c | 32 +-
drivers/firmware/efi/libstub/efi-stub-helper.c | 290 +++++----
drivers/firmware/efi/libstub/efistub.h | 48 +-
drivers/firmware/efi/libstub/fdt.c | 53 +-
drivers/firmware/efi/libstub/gop.c | 163 +----
drivers/firmware/efi/libstub/pci.c | 114 ++++
drivers/firmware/efi/libstub/random.c | 77 ++-
drivers/firmware/efi/libstub/secureboot.c | 11 +-
drivers/firmware/efi/libstub/tpm.c | 48 +-
drivers/firmware/efi/memmap.c | 95 ++-
drivers/infiniband/hw/mlx5/main.c | 2 +-
drivers/media/pci/ivtv/ivtvfb.c | 2 +-
include/linux/efi.h | 772 ++++++++++--------------
include/linux/mm.h | 15 +-
include/linux/vmalloc.h | 2 +
mm/highmem.c | 2 +-
mm/vmalloc.c | 8 +
109 files changed, 2697 insertions(+), 3008 deletions(-)
create mode 100644 arch/alpha/include/asm/vmalloc.h
create mode 100644 arch/arc/include/asm/vmalloc.h
create mode 100644 arch/arm/include/asm/vmalloc.h
create mode 100644 arch/arm64/include/asm/vmalloc.h
create mode 100644 arch/c6x/include/asm/vmalloc.h
create mode 100644 arch/csky/include/asm/vmalloc.h
create mode 100644 arch/h8300/include/asm/vmalloc.h
create mode 100644 arch/hexagon/include/asm/vmalloc.h
create mode 100644 arch/ia64/include/asm/vmalloc.h
create mode 100644 arch/m68k/include/asm/vmalloc.h
create mode 100644 arch/microblaze/include/asm/vmalloc.h
create mode 100644 arch/mips/include/asm/vmalloc.h
create mode 100644 arch/nds32/include/asm/vmalloc.h
create mode 100644 arch/nios2/include/asm/vmalloc.h
create mode 100644 arch/openrisc/include/asm/vmalloc.h
create mode 100644 arch/parisc/include/asm/vmalloc.h
create mode 100644 arch/powerpc/include/asm/vmalloc.h
create mode 100644 arch/riscv/include/asm/vmalloc.h
create mode 100644 arch/s390/include/asm/vmalloc.h
create mode 100644 arch/sh/include/asm/vmalloc.h
create mode 100644 arch/sparc/include/asm/vmalloc.h
create mode 100644 arch/um/include/asm/vmalloc.h
create mode 100644 arch/unicore32/include/asm/vmalloc.h
delete mode 100644 arch/x86/boot/compressed/efi_stub_32.S
delete mode 100644 arch/x86/boot/compressed/efi_stub_64.S
create mode 100644 arch/x86/include/asm/memtype.h
delete mode 100644 arch/x86/include/asm/pat.h
create mode 100644 arch/x86/include/asm/pgtable_32_areas.h
create mode 100644 arch/x86/include/asm/pgtable_areas.h
create mode 100644 arch/x86/include/asm/vmalloc.h
create mode 100644 arch/x86/mm/pat/Makefile
rename arch/x86/mm/{pageattr-test.c => pat/cpa-test.c} (100%)
rename arch/x86/mm/{pat.c => pat/memtype.c} (84%)
rename arch/x86/mm/{pat_internal.h => pat/memtype.h} (81%)
create mode 100644 arch/x86/mm/pat/memtype_interval.c
rename arch/x86/mm/{pageattr.c => pat/set_memory.c} (98%)
delete mode 100644 arch/x86/mm/pat_interval.c
create mode 100644 arch/xtensa/include/asm/vmalloc.h
create mode 100644 drivers/firmware/efi/libstub/pci.c