Unverified Commit ec9df4f5 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!335 efi: fix crash due to EFI runtime service page faults

Merge Pull Request from: @ch-cityhunter 
 
Fix bugzilla: https://gitee.com/openeuler/kernel/issues/I67RIP

For both arm64 and x86, handle and recovery from page faults due to
EFI runtime service, and disable subsequent invoking, we can avoid
crash the whole system when running on buggy EFI firmware, and get
log like this:

kernel: [Firmware Bug]: Unable to handle paging request in EFI runtime service
kernel: CPU: 54 PID: 8 Comm: kworker/u256:0 Kdump: loaded Tainted: G          IOE     4.19.90-2112.8.0.0131.oe1.aarch64.debug #66
kernel: Hardware name: O.D.M     FT-2500 Platform/T1DMFT-E4 , BIOS KL4.26.ODM.S.032.210904.R 09/04/21 13:28:40
kernel: Workqueue: efi_rts_wq efi_call_rts
kernel: Call trace:
kernel:  dump_backtrace+0x0/0x170
kernel:  show_stack+0x24/0x30
kernel:  dump_stack+0xa4/0xe8
kernel:  efi_runtime_fixup_exception+0x74/0x8c
kernel:  __do_kernel_fault+0x8c/0x150
kernel:  do_page_fault+0x78/0x4c8
kernel:  do_translation_fault+0xa8/0xbc
kernel:  do_mem_abort+0x50/0xe0
kernel:  el1_da+0x20/0x94
kernel:  0x213f0c24
kernel:  0x213f0d64
kernel:  0x213f044c
kernel:  0x213f04b4
kernel:  0x213f0178
kernel:  0x212e0664
kernel:  __efi_rt_asm_wrapper+0x50/0x6c
kernel:  efi_call_rts+0x414/0x430
kernel:  process_one_work+0x1f8/0x490
kernel:  worker_thread+0x50/0x4b8
kernel:  kthread+0x134/0x138
kernel:  ret_from_fork+0x10/0x18
kernel: [Firmware Bug]: Synchronous exception occurred in EFI runtime service get_time()
kernel: rtc-efi rtc-efi: can't read time
kernel: efi: EFI Runtime Services are disabled!

Anders Roxell (1):
  efi: Fix build error due to enum collision between efi.h and ima.h

Ard Biesheuvel (3):
  arm64: efi: Execute runtime services from a dedicated stack
  arm64: efi: Recover from synchronous exceptions occurring in firmware
  efi: rt-wrapper: Add missing include

Ding Hui (1):
  efi: fix userspace infinite retry read efivars after EFI runtime
    services page fault

Pierre Gondois (1):
  arm64: efi: Make efi_rt_lock a raw_spinlock

Qian Cai (1):
  x86/efi: fix a -Wtype-limits compilation warning

Sai Praneeth (2):
  efi: Make efi_rts_work accessible to efi page fault handler
  efi/x86: Handle page faults occurring while running EFI runtime
    services

Sami Tolvanen (1):
  arm64: efi: Restore register x18 if it was corrupted

Waiman Long (1):
  efi: Fix debugobjects warning on 'efi_rts_work' 
 
Link:https://gitee.com/openeuler/kernel/pulls/335

 

Reviewed-by: default avatarWei Li <liwei391@huawei.com>
Signed-off-by: default avatarZhang Changzhong <zhangchangzhong@huawei.com>
parents 1c944d2d 213aa9a9
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment