Hello Mike,

our virt-QE team reported an interesting issue:

https://bugzilla.redhat.com/show_bug.cgi?id=1308678#c14

We have a small UEFI_APPLICATION ((open source, of course) that enrolls
a set of fixed certificates into PK / KEK / DB.

In the course of the gRT->SetVariable() call, using the SMM driver
stack, the fault handler function that is used in SMM is invoked:
SmiDefaultPFHandler() in "UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c".

Now, I have no clue about any situation when this fault handler should
be invoked as part of normal operation -- perhaps there are such cases.
But, in this instance, the function seems to walk the page tables, find
the PTE, and realize that the Present bit is set in the PTE. Then it prints:

  PageTable = 7FFA6000, PTIndex = 1FF, PageTable[PTIndex] = 7FFF2251
  New page table overlapped with old page table!

The code that prints this has a comment (rewrapped here for readability):

//
// Check if the entry has already existed, this issue may occur when the
// different size page entries created under the same entry
//

Can you please help me interpret this? Is it related to 2MB / 1GB pages,
as opposed to 4KB pages? Or should I be looking for a genuine fault in
the variable driver?

I've never seen this issue, and in my normal work environment I can't
reproduce it. In the report linked above, I noticed

  -cpu IvyBridge

which makes QEMU emulate "Intel Xeon E3-12xx v2 (Ivy Bridge)".

Whereas my laptop has a Haswell CPU ("i7-4810MQ"), and with the virtual
machines I use for testing, I (or rather libvirtd) doesn't pass any
particular -cpu switch to QEMU. That seems to imply "qemu64" ("QEMU
Virtual CPU version 2.5+").

... I've now tried with "-cpu IvyBridge" myself; I still can't reproduce it.

Thanks!
Laszlo
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to