Re: [PATCH V5 2/2] x86/efi: Add efi page fault handler to recover from page faults caused by the firmware

From: kbuild test robot
Date: Tue Sep 11 2018 - 04:12:45 EST


Hi Sai,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on efi/next]
[cannot apply to v4.19-rc3 next-20180910]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Sai-Praneeth-Prakhya/efi-Make-efi_rts_work-accessible-to-efi-page-fault-handler/20180911-142222
base: https://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git next
config: i386-randconfig-s0-201836 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

All errors (new ones prefixed by >>):

arch/x86/mm/fault.o: In function `no_context':
>> arch/x86/mm/fault.c:798: undefined reference to `efi_recover_from_page_fault'

vim +798 arch/x86/mm/fault.c

776
777 /*
778 * 32-bit:
779 *
780 * Valid to do another page fault here, because if this fault
781 * had been triggered by is_prefetch fixup_exception would have
782 * handled it.
783 *
784 * 64-bit:
785 *
786 * Hall of shame of CPU/BIOS bugs.
787 */
788 if (is_prefetch(regs, error_code, address))
789 return;
790
791 if (is_errata93(regs, address))
792 return;
793
794 /*
795 * Buggy firmware could access regions which might page fault, try to
796 * recover from such faults.
797 */
> 798 if (efi_recover_from_page_fault(address))
799 return;
800
801 /*
802 * Oops. The kernel tried to access some bad page. We'll have to
803 * terminate things with extreme prejudice:
804 */
805 flags = oops_begin();
806
807 show_fault_oops(regs, error_code, address);
808
809 if (task_stack_end_corrupted(tsk))
810 printk(KERN_EMERG "Thread overran stack, or stack corrupted\n");
811
812 tsk->thread.cr2 = address;
813 tsk->thread.trap_nr = X86_TRAP_PF;
814 tsk->thread.error_code = error_code;
815
816 sig = SIGKILL;
817 if (__die("Oops", regs, error_code))
818 sig = 0;
819
820 /* Executive summary in case the body of the oops scrolled away */
821 printk(KERN_DEFAULT "CR2: %016lx\n", address);
822
823 oops_end(flags, regs, sig);
824 }
825

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip