Skip to content

Comments

MigTD: Fix REPORTSTATUS_FLAGS overwrite for in-flight requests#714

Open
haitaohuang wants to merge 1 commit intointel:mainfrom
haitaohuang:fix
Open

MigTD: Fix REPORTSTATUS_FLAGS overwrite for in-flight requests#714
haitaohuang wants to merge 1 commit intointel:mainfrom
haitaohuang:fix

Conversation

@haitaohuang
Copy link
Contributor

When a duplicate mig_request_id arrives while a request is in-flight and report_status has not yet polled the flag after the interrupt:

  1. Request 42 accepted: FLAGS[42] = AtomicBool(false), REQUESTS adds 42
  2. Request 42 calls report_status, which issues vmcall then yields
  3. VMM responds with interrupt, callback sets FLAGS[42] to true
  4. Async runtime polls wait_for_request before report_status: duplicate request 42 overwrites FLAGS[42] = AtomicBool(false)
  5. report_status polls FLAGS[42], sees false, returns Pending
  6. No further interrupt will fire for this vmcall — poll hangs forever

Fix by moving FLAGS insertion inside the new-request-only path. Also consolidate repeated contains()+insert() into try_accept_request() helper for consistency.

@haitaohuang haitaohuang requested a review from jyao1 as a code owner February 22, 2026 06:05
When a duplicate mig_request_id arrives while a request is in-flight
and report_status has not yet polled the flag after the interrupt:
1. Request 42 accepted: FLAGS[42] = AtomicBool(false), REQUESTS adds 42
2. Request 42 calls report_status, which issues vmcall then yields
3. VMM responds with interrupt, callback sets FLAGS[42] to true
4. Async runtime polls wait_for_request before report_status:
   duplicate request 42 overwrites FLAGS[42] = AtomicBool(false)
5. report_status polls FLAGS[42], sees false, returns Pending
6. No further interrupt will fire for this vmcall — poll hangs forever

Fix by moving FLAGS insertion inside the new-request-only path. Also
consolidate repeated contains()+insert() into try_accept_request()
helper for consistency.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Haitao Huang <haitaohuang@microsoft.com>
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

Successfully merging this pull request may close these issues.

1 participant