Open
Conversation
Signed-off-by: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Defers clearing the VM’s pending TLB flush flag until after run() completes, aiming to avoid losing the flush request when the guest is cancelled before executing the flush stub.
Changes:
- Stop clearing
pending_tlb_flushwhen setting ZF in RFLAGS. - Capture
run()result and clearpending_tlb_flushafterrun()returns.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Defer clearing TLB flush flag until after
runto prevent losing it if the guest is cancelled before executing the flush. This can happen on windows for example. I noticed this on AMD cpus where guest would sometimes read old/stale memory.Note: if
runreturnsOk, the guest hit HLT, meaning it ran through the stub which checks ZF and did the flush. IfrunreturnsErrthe flush may not have happened but doesn't matter since caller is required to store the sandbox before next dispatch anyway (sandbox is poisoned), which will set the tlb flush flag to true again.