Re: [PATCH 4/4] x86, efi: Map runtime services 1:1

Borislav Petkov
2013-06-06T15:58:22Z

On Thu, Jun 06, 2013 at 03:29:08PM +0200, Borislav Petkov wrote:
> On Thu, Jun 06, 2013 at 02:14:39PM +0100, Matt Fleming wrote:
> > This patch makes my TunnelMountain machine spin in handle_pte_fault()
> > when triggering one of the "firmware makes references to physical
> > addresses" code paths.
> >
> > I'll try and dig into this tomorrow to figure out what's going on.
>
> Hmmm, looks like we have forgotten to map an EFI region and we do a #PF
> when executing the EFI code.

How about this one - I don't know whether it would flood dmesg, I guess
you'll have to try.

We could try using blockconsole to catch dmesg to an usb drive, though,
even if you don't have serial or netconsole or such. :-).

--
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 654be4ae3047..7a6129afdff1 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -1021,6 +1021,9 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code)
/* Get the faulting address: */
address = read_cr2();

+ if (read_cr3() == (unsigned long)real_mode_header->trampoline_pgd)
+ pr_err("%s: #PF addr: 0x%lx\n", __func__, address);
+
/*
* Detect and handle instructions that would cause a page fault for
* both a tracked kernel page and a userspace page.

--
Regards/Gruss,
Boris.

Sent from a fat crate under my desk. Formatting is fine.
--