On Wed, Apr 27, 2016 at 10:41:32AM -0500, Alex Thorlton wrote:
> A bit of digging will tell us that this is the failing line:
> 
> m_n_config.v = uv_read_local_mmr(UVH_RH_GAM_CONFIG_MMR );

That looks like

All code
========
   0:   65 48 03 05 1d b8 49    add    %gs:0x7e49b81d(%rip),%rax        # 
0x7e49b825
   7:   7e 
   8:   80 78 14 02             cmpb   $0x2,0x14(%rax)
   c:   ba 00 00 00 fa          mov    $0xfa000000,%edx
  11:   76 0b                   jbe    0x1e
  13:   48 89 c8                mov    %rcx,%rax
  16:   65 48 03 05 07 b8 49    add    %gs:0x7e49b807(%rip),%rax        # 
0x7e49b825
  1d:   7e 
  1e:   48 b8 00 00 60 01 00    movabs $0xffff880001600000,%rax
  25:   88 ff ff 
  28:   48 09 d0                or     %rdx,%rax
  2b:*  48 8b 00                mov    (%rax),%rax              <-- trapping 
instruction
  2e:   88 c3                   mov    %al,%bl
  30:   48 c1 e8 06             shr    $0x6,%rax
  34:   41 bd 01 00 00 00       mov    $0x1,%r13d
  3a:   88 c1                   mov    %al,%cl
  3c:   83 e3 3f                and    $0x3f,%ebx

but why does this have anything to do with the EFI pagetable, at all?
The MMRs should be mapped in the normal kernel page table, right?

And your dirty fix of mapping into trampoline_pgd doesn't make any
sense...

How do the MMRs get mapped on that box exactly? And why aren't they
mapped in the normal kernel page table all of a sudden?

/me is confused and goes to bed.

-- 
Regards/Gruss,
    Boris.

SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 
(AG Nürnberg)
-- 

Reply via email to