Locking Protocols for Multiprocessors [GSOC’26]

Overview
This thread is a technical log for my work on Issue #4612

My goal for GSoC 2026 is to implement and verify high-performance locking protocols for the RTEMS 7 SMP SuperCore.
While I am currently starting with the Flexible Multiprocessor Locking Protocol (FMLP), I plan to use the summer to master SuperCore internals and port as many protocols from the research collective as possible.

Prerequisite Homework: MrsP Analysis
Before jumping into new code, I verified the existing MrsP implementation using the smpmrsp01 test suite on the SIS/Leon3 simulator.

  • The Experiment: I modified the init.c taskset to set the main task priority to 1 and the MrsP priority ceiling to 5.
  • The Result: This mismatch triggered a terminal assertion failure at line 1411 in the mrsp_obtain_and_release_with_help.
  • The Finding: Analyzing the switch logs showed exactly how strictly RTEMS 7 monitors task-to-processor affinity and priority elevation.
  • Why it matters: This gave me the hands-on experience needed with modern SuperCore primitives like Thread_queue and ISR_Lock before starting the FMLP port.

Current Status: Porting FMLP (MR !882)
I have a functional port of FMLP that modernizes the original research code to align with the RTEMS 7 architecture.

  • SMP Safety: All state transitions now use Thread_queue_Context for atomic operations across cores.
  • Wait Discipline: I’ve implemented strict FIFO wait queues for both Short and Long variants to ensure predictable behavior.
  • API Support: Updated the Classic API Semaphore Manager so users can select the new RTEMS_FLEXIBLE_MULTIPROCESSOR_LOCKING_SHORT and LONG attributes
  • Observability: Patched the system monitor (mon-sema.c) so FMLP semaphore types actually show up during debugging.
  • Testing: The implementation is currently green on the spfmlp01 (Long) and spfmlp02 (Short) test suites.

Recent Refinements
I’ve been working through initial community feedback to make the code upstream-ready:

  • Commit Structure: I separated the work into an “Import” commit for the original research and a “Port” commit for my RTEMS 7 adaptations.
  • Code Quality: I’ve cleared out formatting and whitespace issues across the core logic and tests.
  • Licensing: Verified that the original research authorship and copyrights are correctly preserved.

Merge Request: !882
Project Issue: #4612