Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
3 of 4 tasks
RipperPix00 opened this issue May 26, 2024 · 2 comments
Open
3 of 4 tasks

Comments

@RipperPix00
Copy link

RipperPix00 commented May 26, 2024

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.
@terminatorul
Copy link
Owner

terminatorul commented May 27, 2024

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.

@RipperPix00
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants