terminatorul/NvStrapsReBar

UEFI DXE driver status: Ambiguous Setup variable (0x00000000000000A5)

Opened this issue · 2 comments

System

  • Motherboard: Clevo PB50RF
  • BIOS Version:1.07.18
  • CPU: i7-9750H
  • GPU: RTX2070 Mobile
  • CSM is turned off.
  • 4G decoding is enabled.
  • UEFIPatch is applied
  • I have read [Common issues (and fixes)]
    屏幕截图 2024-05-26 164555
    What does Ambiguous Setup variable mean? Did I set some options worng? I Inserted the NvStrapsReBar module into the BIOS, and I put it at the end of the volume that has the DXE driver. Then, I successfully flashed the BIOS. I used NvStrapsReBar.exe to set the bar size and then restarted the computer and I got this status.

You motherboard firmware exposes (publishes) a number of EFI variables with some internal bits of information about the system configuration and the firmware capabilities. The format of these variables is internal to the motherboard firmware, they are not meant to be accessed by end-users directly.

One of these variables, called "Setup", holds all the choices you can make in UEFI Setup (UEFI Setup opens if you press Delete key during POST, or sometimes F2 key instead).

Because multiple vendors contribute to the motherboard firmware, EFI variables are identified by both their name and a numberic identifier with many hexadecimal digits (a GUID). This is because multiple vendors could create a variable with a simple name like "Setup". Without a numerical ID to distinguish them, variables from different vendors, with the same name, would conflict.

So the Setup variable is really named something like "Setup-f0556cb5-84e3-4a95-8fcc-480d8a202162"

Your motherboard firmware already has multiple variables named Setup (with different numerical IDs to distinguish them). You can see these variables in Linux, or if you just boot a Linux installer, under /sys/firmware/efi/efivars/ directory

NvStrapsReBar wants to use the Setup variable to compute the CRC-64 of the contents (all the choices from UEFI Setup). This is later used to detect changes made to UEFI Setup options, and automatically disable ReBAR after such changes. This is a safety measure, as there is a chance ReBAR will not work properly after some changes in UEFI Setup. In this case users will have to manually re-enable ReBAR after such changes.

However when there are multiple Setup variables, NvStrapsReBar does not know which one of them holds UEFI Setup options, and which are additional variables from other vendors, that happen to use the same name "Setup".

You did nothing wrong, this is all about the firmware of your motherboad, and the vendors that contribute to this firmware.

The solution is simple: use R in the main menu to disable the CRC-64 for Setup variable altogether. But remember to disable and re-enable ReBAR when you make changes to UEFI Setup.

屏幕截图 2024-05-28 002856
Thank you so much for your detailed answer, I disabled that thing, now I got the correct status.