[LITMUS^RT] Announcing 5.4.108-Based LITMUS^RT Release Candidate 1

Joshua Bakita jbakita at cs.unc.edu
Fri Apr 16 22:53:14 CEST 2021


Hello LITMUS^RT developers and users,

I'm excited to announce that the first release candidate of LITMUS^RT
rebased
on Linux 5.4.108 is now available for testing! The sources are available in
the
linux-5.4-litmus branch on https://github.com/JoshuaJB/litmus-rt.git.

Changes made during the rebase onto Linux 5.4.108:
- Miscellaneous whitespace cleanup and include fixes
- Correct for minor changes in type and function names
- Switch from sys_kill() to send_sig()
- Add _HARD postfix to relevant LITMUS^RT hrtimers for PREEMPT-RT support
- Add a dummy balance function to kernel/sched/litmus.c
- set_curr_task() was renamed set_next_task() upstream. Reflect here.
- Adjust pick_next_task_litmus() to use rq->curr instead of prev since we no
  longer get a valid version of prev. Our logic cannot be moved to the new
  balance function, as that's not called when CONFIG_SMP is disabled.
- Remove put_prev_task() call from pick_next_task_litmus(), as this is now
  automatically invoked by our caller. This implies that put_prev_task() is
now
  called more often than before, but there's nothing that can be done about
  that without adding special-case logic in kernel/sched/core.c.
- Remove lockdep_unpin_lock() and lockdep_repin_lock() invocations from
  litmus_pick_next_task() as that function is no longer passed a non-NULL
  rf->cookie. See earlier note about why we can't move the logic of this
  function to balance_litmus(). These calls are merely annotations which
  validate lock state, and are not strictly necessary (see
  doc/Documention/locking/lockdep-design.txt)
- Adjust for restructure of smp_reschedule_interrupt()
- set_next_task() in every scheduling class now takes a `first` parameter.
This
  seems to be safe to ignore in SCHED_LITMUS.
- The mutex owner field is now atomic (see upstream commit
  3ca0ff571b092ee4d807f1168caa428d95b0173b), so we no longer need to handle
the
  preemption case and check for is_realtime().
- Conditionally set the next-lowest-priority scheduling class in
SCHED_LITMUS
  as stop_sched_class is now only used if CONFIG_SMP.
- Stop requesting the tv64 field from ktime_t, as ktime_t is now a s64.
- Replace set_task_state() with set_current_state() as the former no longer
  exists.
- Use cpus_ptr instead of cpus_allowed (see upstream commit
  3bd3706251ee8ab67e69d9340ac2abdca217e733).
- Rework how we handle namespace clutter from debug_trace.h. Instead of
using a
  macro to control this, stop including debug_trace.h from preempt.h and
  instead include the new file debug_trace_common.h which provides
  sched_trace_log_message() for both debug_trace.h and preempt.h.
- Fix a stack frame overflow issue in pfair_activate_plugin().
- Squash most of the bug and typo fix commits.

An earlier variant of these changes onto Linux 5.4-rc7 has been in testing
at
UNC for over a year now, and has already been used for several publications.
This rebase has not been as thoroughly tested, and departs from our earlier
rebase by assuming that rq->curr is always non-NULL in
pick_next_task_litmus().
This assumption has not been comprehensively tested, but substantially
reduces
the scope of changes required and has proved robust under limited testing.

Please test and let me know if you encounter any problems. Assuming no major
issues, I anticipate that the final release should be able to be made in
just
a few weeks.

Best regards,

Joshua Bakita
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20210416/6c567c6d/attachment.html>


More information about the litmus-dev mailing list