Revert "x86-64/efi: Use EFI to deal with platform wall clock (again)"
This reverts commitbd52276fa1
("x86-64/efi: Use EFI to deal with platform wall clock (again)"), and the two supporting commits:da5a108d05
: "x86/kernel: remove tboot 1:1 page table creation code"185034e72d
: "x86, efi: 1:1 pagetable mapping for virtual EFI calls") as they all depend semantically on commit53b87cf088
("x86, mm: Include the entire kernel memory map in trampoline_pgd") that got reverted earlier due to the problems it caused. This was pointed out by Yinghai Lu, and verified by me on my Macbook Air that uses EFI. Pointed-out-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
@@ -69,37 +69,23 @@ 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_callx(0, (void *)(efi.systab->runtime->f))
|
||||
efi_call0((void *)(efi.systab->runtime->f))
|
||||
#define efi_call_virt1(f, a1) \
|
||||
efi_callx(1, (void *)(efi.systab->runtime->f), (u64)(a1))
|
||||
efi_call1((void *)(efi.systab->runtime->f), (u64)(a1))
|
||||
#define efi_call_virt2(f, a1, a2) \
|
||||
efi_callx(2, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2))
|
||||
efi_call2((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2))
|
||||
#define efi_call_virt3(f, a1, a2, a3) \
|
||||
efi_callx(3, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
efi_call3((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
(u64)(a3))
|
||||
#define efi_call_virt4(f, a1, a2, a3, a4) \
|
||||
efi_callx(4, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
efi_call4((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
(u64)(a3), (u64)(a4))
|
||||
#define efi_call_virt5(f, a1, a2, a3, a4, a5) \
|
||||
efi_callx(5, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
efi_call5((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_callx(6, (void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
|
||||
efi_call6((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