Request for help understanding MemoryOverwriteRequestControl
Martyn Welch <martyn.welch@...>
Hi,
We have a number of MinnowBoards (both Turbot and Max variants) here that are used for various Linux development purposes, including having a number that are used in our LAVA farm which among other things runs Linux KernelCI jobs. The firmware on these devices is currently "MNW2MAX1.X64.0101.R01.1908071815" as downloaded from the Intel site: https://software.intel.com/content/www/us/en/develop/articles/minnowboard-maxturbot-uefi-firmware.html We are seeing the following message during boot on *some* of the boards, but not others: Clear memory in MRC per MOR request Start, Please wait for some minutes... We have "CONFIG_RESET_ATTACK_MITIGATION" set in the Linux kernel configuration, which I understand will cause the "MemoryOverwriteRequest" bit to be set during boot and hence trigger this behaviour (unless explicitly cleared before the board is reset). Some of our boards seem to only be exposing the related "MemoryOverwriteRequestControlLock" EFI variable: Shell> dmpstore -guid e20939be-32d4-41be-a150-897f85d49829 dmpstore: No matching variables found. Guid E20939BE-32D4-41BE- A150-897F85D49829 Shell> dmpstore -guid bb983ccf-151d-40e1-a07b-4a17be168292 Variable NV+RT+BS 'BB983CCF-151D-40E1-A07B- 4A17BE168292:MemoryOverwriteRequestControlLock' DataSize = 0x01 00000000: 00 *.* Thus this behaviour isn't triggered. Others expose both "MemoryOverwriteRequestControl" and "MemoryOverwriteRequestControlLock": Shell> dmpstore -guid e20939be-32d4-41be-a150-897f85d49829 Variable NV+RT+BS 'E20939BE-32D4-41BE-A150- 897F85D49829:MemoryOverwriteRequestControl' DataSize = 0x01 00000000: 01 *.* Shell> dmpstore -guid bb983ccf-151d-40e1-a07b-4a17be168292 Variable NV+RT+BS 'BB983CCF-151D-40E1-A07B- 4A17BE168292:MemoryOverwriteRequestControlLock' DataSize = 0x01 00000000: 00 *.* My understanding is that we should be seeing both these EFI variables being exposed. I'm rather unfamiliar with the EDK codebase and have not been able to work out how I would end up with "MemoryOverwriteRequestControlLock" and not "MemoryOverwriteRequestControl". I've tried using `J7` to reset the NVRAM on a board just exposing "MemoryOverwriteRequestControlLock", following the process described here to see if it would have an effect and it hasn't: https://uchan.hateblo.jp/entry/2018/01/09/075230 One of the boards in our LAVA instance was initially only exposing the lock variable, but then seemingly randomly started to expose the other variable and perform the erase at boot. I've not been able to determine what triggered this change in behaviour. Any help/pointers would be much appreciated. Thanks in advance, Martyn |
|