Commit 634cd4b6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull EFI updates from Ingo Molnar:
 "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"

* 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (75 commits)
  efi/x86: Disable instrumentation in the EFI runtime handling code
  efi/libstub/x86: Fix EFI server boot failure
  efi/x86: Disallow efi=old_map in mixed mode
  x86/boot/compressed: Relax sed symbol type regex for LLVM ld.lld
  efi/x86: avoid KASAN false positives when accessing the 1: 1 mapping
  efi: Fix handling of multiple efi_fake_mem= entries
  efi: Fix efi_memmap_alloc() leaks
  efi: Add tracking for dynamically allocated memmaps
  efi: Add a flags parameter to efi_memory_map
  efi: Fix comment for efi_mem_type() wrt absent physical addresses
  efi/arm: Defer probe of PCIe backed efifb on DT systems
  efi/x86: Limit EFI old memory map to SGI UV machines
  efi/x86: Avoid RWX mappings for all of DRAM
  efi/x86: Don't map the entire kernel text RW for mixed mode
  x86/mm: Fix NX bit clearing issue in kernel_map_pages_in_pgd
  efi/libstub/x86: Fix unused-variable warning
  efi/libstub/x86: Use mandatory 16-byte stack alignment in mixed mode
  efi/libstub/x86: Use const attribute for efi_is_64bit()
  efi: Allow disabling PCI busmastering on bridges during boot
  efi/x86: Allow translating 64-bit arguments for mixed mode calls
  ...
parents d99391ec ac6119e7
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -1165,10 +1165,10 @@

	efi=		[EFI]
			Format: { "old_map", "nochunk", "noruntime", "debug",
				  "nosoftreserve" }
				  "nosoftreserve", "disable_early_pci_dma",
				  "no_disable_early_pci_dma" }
			old_map [X86-64]: switch to the old ioremap-based EFI
			runtime services mapping. 32-bit still uses this one by
			default.
			runtime services mapping. [Needs CONFIG_X86_UV=y]
			nochunk: disable reading files in "chunks" in the EFI
			boot stub, as chunking can cause problems with some
			firmware implementations.
@@ -1180,6 +1180,10 @@
			claim. Specify efi=nosoftreserve to disable this
			reservation and treat the memory by its base type
			(i.e. EFI_CONVENTIONAL_MEMORY / "System RAM").
			disable_early_pci_dma: Disable the busmaster bit on all
			PCI bridges while in the EFI boot stub
			no_disable_early_pci_dma: Leave the busmaster bit set
			on all PCI bridges while in the EFI boot stub

	efi_no_storage_paranoia [EFI; X86]
			Using this parameter you can use more than 50% of
+4 −0
Original line number Diff line number Diff line
#ifndef _ASM_ALPHA_VMALLOC_H
#define _ASM_ALPHA_VMALLOC_H

#endif /* _ASM_ALPHA_VMALLOC_H */
+4 −0
Original line number Diff line number Diff line
#ifndef _ASM_ARC_VMALLOC_H
#define _ASM_ARC_VMALLOC_H

#endif /* _ASM_ARC_VMALLOC_H */
+7 −10
Original line number Diff line number Diff line
@@ -50,19 +50,16 @@ void efi_virtmap_unload(void);

/* arch specific definitions used by the stub code */

#define efi_call_early(f, ...)		sys_table_arg->boottime->f(__VA_ARGS__)
#define __efi_call_early(f, ...)	f(__VA_ARGS__)
#define efi_call_runtime(f, ...)	sys_table_arg->runtime->f(__VA_ARGS__)
#define efi_is_64bit()			(false)
#define efi_bs_call(func, ...)	efi_system_table()->boottime->func(__VA_ARGS__)
#define efi_rt_call(func, ...)	efi_system_table()->runtime->func(__VA_ARGS__)
#define efi_is_native()		(true)

#define efi_table_attr(table, attr, instance)				\
	((table##_t *)instance)->attr
#define efi_table_attr(inst, attr)	(inst->attr)

#define efi_call_proto(protocol, f, instance, ...)			\
	((protocol##_t *)instance)->f(instance, ##__VA_ARGS__)
#define efi_call_proto(inst, func, ...) inst->func(inst, ##__VA_ARGS__)

struct screen_info *alloc_screen_info(efi_system_table_t *sys_table_arg);
void free_screen_info(efi_system_table_t *sys_table, struct screen_info *si);
struct screen_info *alloc_screen_info(void);
void free_screen_info(struct screen_info *si);

static inline void efifb_setup_from_dmi(struct screen_info *si, const char *opt)
{
+4 −0
Original line number Diff line number Diff line
#ifndef _ASM_ARM_VMALLOC_H
#define _ASM_ARM_VMALLOC_H

#endif /* _ASM_ARM_VMALLOC_H */
Loading