Merge branch 'core-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 EFI update from Peter Anvin: "EFI tree, from Matt Fleming. Most of the patches are the new efivarfs filesystem by Matt Garrett & co. The balance are support for EFI wallclock in the absence of a hardware-specific driver, and various fixes and cleanups." * 'core-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits) efivarfs: Make efivarfs_fill_super() static x86, efi: Check table header length in efi_bgrt_init() efivarfs: Use query_variable_info() to limit kmalloc() efivarfs: Fix return value of efivarfs_file_write() efivarfs: Return a consistent error when efivarfs_get_inode() fails efivarfs: Make 'datasize' unsigned long efivarfs: Add unique magic number efivarfs: Replace magic number with sizeof(attributes) efivarfs: Return an error if we fail to read a variable efi: Clarify GUID length calculations efivarfs: Implement exclusive access for {get,set}_variable efivarfs: efivarfs_fill_super() ensure we clean up correctly on error efivarfs: efivarfs_fill_super() ensure we free our temporary name efivarfs: efivarfs_fill_super() fix inode reference counts efivarfs: efivarfs_create() ensure we drop our reference on inode on error efivarfs: efivarfs_file_read ensure we free data in error paths x86-64/efi: Use EFI to deal with platform wall clock (again) x86/kernel: remove tboot 1:1 page table creation code x86, efi: 1:1 pagetable mapping for virtual EFI calls x86, mm: Include the entire kernel memory map in trampoline_pgd ...
This commit is contained in:
@@ -69,23 +69,37 @@ extern u64 efi_call6(void *fp, u64 arg1, u64 arg2, u64 arg3,
|
||||
efi_call6((void *)(f), (u64)(a1), (u64)(a2), (u64)(a3), \
|
||||
(u64)(a4), (u64)(a5), (u64)(a6))
|
||||
|
||||
extern unsigned long efi_call_virt_prelog(void);
|
||||
extern void efi_call_virt_epilog(unsigned long);
|
||||
|
||||
#define efi_callx(x, func, ...) \
|
||||
({ \
|
||||
efi_status_t __status; \
|
||||
unsigned long __pgd; \
|
||||
\
|
||||
__pgd = efi_call_virt_prelog(); \
|
||||
__status = efi_call##x(func, __VA_ARGS__); \
|
||||
efi_call_virt_epilog(__pgd); \
|
||||
__status; \
|
||||
})
|
||||
|
||||
#define efi_call_virt0(f) \
|
||||
efi_call0((void *)(efi.systab->runtime->f))
|
||||
efi_callx(0, (void *)(efi.systab->runtime->f))
|
||||
#define efi_call_virt1(f, a1) \
|
||||
efi_call1((void *)(efi.systab->runtime->f), (u64)(a1))
|
||||
efi_callx(1, (void *)(efi.systab->runtime->f), (u64)(a1))
|
||||
#define efi_call_virt2(f, a1, a2) \
|
||||
efi_call2((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2))
|
||||
efi_callx(2, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2))
|
||||
#define efi_call_virt3(f, a1, a2, a3) \
|
||||
efi_call3((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
efi_callx(3, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
(u64)(a3))
|
||||
#define efi_call_virt4(f, a1, a2, a3, a4) \
|
||||
efi_call4((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
efi_callx(4, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
(u64)(a3), (u64)(a4))
|
||||
#define efi_call_virt5(f, a1, a2, a3, a4, a5) \
|
||||
efi_call5((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
efi_callx(5, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
(u64)(a3), (u64)(a4), (u64)(a5))
|
||||
#define efi_call_virt6(f, a1, a2, a3, a4, a5, a6) \
|
||||
efi_call6((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
efi_callx(6, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
(u64)(a3), (u64)(a4), (u64)(a5), (u64)(a6))
|
||||
|
||||
extern void __iomem *efi_ioremap(unsigned long addr, unsigned long size,
|
||||
|
Reference in New Issue
Block a user