Skip to content

Defer EE time-slice preemption while interrupts are disabled - #222

Open
GTTeancum wants to merge 1 commit into
ran-j:mainfrom
GTTeancum:fix/ee-di-timeslice-preemption
Open

Defer EE time-slice preemption while interrupts are disabled#222
GTTeancum wants to merge 1 commit into
ran-j:mainfrom
GTTeancum:fix/ee-di-timeslice-preemption

Conversation

@GTTeancum

Copy link
Copy Markdown

Summary

  • gate synthetic EE scheduler preemption on Status.IE/EIE and EXL/ERL
  • keep deferred reschedules pending so the first checkpoint after EI can service them
  • add a regression test covering a same-priority time-slice expiry across DI/EI

Why

PS2 software uses DI/EI around critical list and allocator mutations. The runtime's interrupt dispatch observes those bits, but synthetic time-slice preemption did not. That allowed a ready peer to run during an intentionally transient list state and consume partially updated pointers.

Testing

  • clean Release build from upstream main
  • ps2x_tests: 426 passed, 0 failed
  • runtime validation through 1,500 rendered frames: the previously reproducible invalid list lookup and downstream indirect-branch corruption no longer occur

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