xen/arch/x86: fix TXT AP gate placement and MONITOR/MWAIT race#27
Open
accek-itl wants to merge 2 commits intoTrenchBoot:aem-staging-2026-03-13from
Open
xen/arch/x86: fix TXT AP gate placement and MONITOR/MWAIT race#27accek-itl wants to merge 2 commits intoTrenchBoot:aem-staging-2026-03-13from
accek-itl wants to merge 2 commits intoTrenchBoot:aem-staging-2026-03-13from
Conversation
The gate needs to be before non-target APs attempt to access (uninitialized) per-cpu data, which is a save to cpu_info.cr4 field in .L_after_stack_setup. Signed-off-by: Szymon Acedański <accek@invisiblethingslab.com> Assisted-by: Claude:claude-opus-4-6
The wait condition needs to be re-checked after MONITOR and before MWAIT to avoid the deadlock when the trigger happens between an earlier condition check and the MONITOR instruction. Signed-off-by: Szymon Acedański <accek@invisiblethingslab.com> Assisted-by: Claude:claude-opus-4-6
|
Tested on DELL Optiplex 7010 (UEFI), Xen + Trenchboot works and boots, PCRs 17 and 18 are extended |
|
I think for upstreaming these changes could be squashed into this commit: 8b76786, though this commit message part will no longer hold: |
| * __high_start in parallel, so we gate non-target APs. | ||
| * | ||
| * In non-TXT boot APs wake one-by-one via SIPI. | ||
| */ |
Member
There was a problem hiding this comment.
I would explain that this serializes APs initialization to force them waking up in accordance with the order in which BSP expects them to wake up. Could also mention STACK_CPUINFO_FIELD() below which necessitates doing it here.
| cpu_relax(); | ||
| } | ||
|
|
||
| unsigned int txt_booting_apicid; |
Member
There was a problem hiding this comment.
This data is int in other places and I think it can be static.
Suggested change
| unsigned int txt_booting_apicid; | |
| static int txt_booting_apicid; |
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.
Two fixes for the TXT AP gate needed after upstream changes:
Tested by booting Trenchboot-XEN on Asus LCL laptop (aem-staging-2026-03-13-accek branch which included these commits) and verifying PCRs 17, 18 are non-zero.
Related issue: TrenchBoot/trenchboot-issues#82