Skip to content

uefi_nvram_storage: save restore nvram contents (#1556) #1675

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

Merged

Conversation

tjones60
Copy link
Contributor

Implement save/restore for HclCompatNvram/NvramStorage/InMemoryNvram so that OpenHCL doesn't need to re-read from the VMGS file after a servicing or other save-restore operation. This will help avoid panics if the VMGS file is not accessible in certain VM teardown cases.

Implement save/restore for HclCompatNvram/NvramStorage/InMemoryNvram so
that OpenHCL doesn't need to re-read from the VMGS file after a
servicing or other save-restore operation. This will help avoid panics
if the VMGS file is not accessible in certain VM teardown cases.
@tjones60 tjones60 requested review from a team as code owners July 10, 2025 17:45
@github-actions github-actions bot added the release_2505 Targets the release/2505 branch. label Jul 10, 2025
maheeraeron
maheeraeron previously approved these changes Jul 14, 2025
@mebersol
Copy link
Collaborator

Does this work in case the 'source' VM did not save NVRAM state?

Copy link
Collaborator

@mebersol mebersol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please confirm that servicing to/from builds with this fix can work?

@tjones60
Copy link
Contributor Author

Does this work in case the 'source' VM did not save NVRAM state?

Fix here:
#1697

I'll update this PR once that goes in.

…icrosoft#1697)

Fix for a previous change that would have broken VMs that were serviced
to a new version of OpenHCL with the UEFI NVRAM saved state. The new
version would have skipped loading from storage since it was restoring,
and the saved state would have contained an empty Vec. This change
converts it to an Option<Vec<>> to distinguish between missing saved
state and no NVRAM entries. If the saved state is missing, the
HclCompatNvram will lazy load from storage like it did before.

Original PR here: microsoft#1556

This is something that should have been caught by cross-version
servicing tests, which don't exist currently. We should follow up to add
that soon.
mebersol
mebersol previously approved these changes Jul 17, 2025
Copy link
Collaborator

@mebersol mebersol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@tjones60 tjones60 enabled auto-merge (squash) July 18, 2025 00:05
@tjones60 tjones60 merged commit ed6e9b7 into microsoft:release/2505 Jul 18, 2025
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release_2505 Targets the release/2505 branch.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants