On 01/06/2016 14:26, Laszlo Ersek wrote:
> On 06/01/16 13:30, Paolo Bonzini wrote:
>>
>>
>> On 01/06/2016 12:50, Laszlo Ersek wrote:
>>> In other words, the fault is raised and delivered (== the handler is
>>> entered) entirely within non-root operation, inside the VM. I find
>>> this amazing. (Amazingly annoying.)
>>
>> It is indeed.  You can try using ept=0 to see the page faults.
> 
> Given that it reproduces with TCG, I added the following option to the
> QEMU command line:
> 
>   -d int,pcall
> 
> It absolutely spams the output, but the last two state dumps preceding
> the fault are:
> 
> RIP (7feee48d) and CR2 (ffe00020) are consistent with the guest's own
> report:
> 
>> ~SmiPFHandler: PFAddress=0xFFE00020 Rip=0x7FEEE48D
>> PageTable = 7FFA7000, PTIndex = 1FF, PageTable[PTIndex] = 7FFF31BD
>> New page table overlapped with old page table!
>> ASSERT .../UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c(618): ((BOOLEAN)(0==1))
> 
> Is this useful information?

Yes, it is.  If the PT address is constant, perhaps you can attach gdb
to QEMU and set a hardware watchpoint on the PTE?

Paolo

> Error code 0xe is EXCP0E_PAGE, right? Maybe I can investigate it a bit
> more.
> 
> Hm, according to <http://wiki.osdev.org/Exceptions#Page_Fault> -- hey,
> why consult the Intel SDM when you can read wiki pages on the net,
> right? :) --, and assuming that "e=0009" is the error code, it seems we
> have:
> 
> - Present (bit #0, value 1): "When set, the page fault was caused by a
>   page-protection violation. When not set, it was caused by a
>   non-present page."
> 
> - Reserved write  (bit #3, value 8): "When set, the page fault was
>   caused by reading a 1 in a reserved field."
> 
> Does this imply that the (various level) page table entries that cover
> the varstore pflash chip get corrupted at some point? (How else would
> those "reserved bits" get set?)
> 
> This would be consistent with Jeff's statement
> 
>> PageTable[PTIndex] = 7FFF2251 is not one valid page entry.
>> Usually, we encountered the similar issue due to SMM page table room
>> was crashed.
> 
> (NB: this is the only invocation of SmiPFHandler() that I see in the
> OVMF log. Also, in this case, the PTE is 7FFF31BD.)
> 
> Thanks,
> Laszlo
> 
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to