Notice: We have migrated to GitLab launching 2024-05-01 see here: https://gitlab.rtems.org/

#4545 closed defect (fixed)

The SMP EDF scheduler can only support more restricted affinity sets of a thread

Reported by: Sebastian Huber Owned by: Sebastian Huber
Priority: normal Milestone: 6.1
Component: score Version: 5
Severity: normal Keywords: SMP, qualification
Cc: Blocked By:
Blocking:

Description (last modified by Sebastian Huber)

The SMP EDF scheduler supports a one-to-one and one-to-all thread to processor affinity. Currently it accepts affinity sets which are a proper subset of the online processors containing at least two processors owned by the scheduler. In this case it sets a one-to-one thread to processor affinity. This leads to undefined behaviour if a processor is removed since the higher level check in rtems_scheduler_remove_processor() does not account for this implementation detail.

Change History (2)

comment:1 Changed on 11/10/21 at 08:29:06 by Sebastian Huber

Description: modified (diff)
Summary: The SMP EDF scheduler has to better check the affinity set of a threadThe SMP EDF scheduler can only support more restricted affinity sets of a thread

comment:2 Changed on 11/23/21 at 13:36:33 by Sebastian Huber <sebastian.huber@…>

Resolution: fixed
Status: assignedclosed

In [changeset:"834a86fe212719735fd7ede8c60f78fedf70a758/rtems" 834a86fe/rtems]:

score: Restrict affinity for EDF SMP scheduler

The SMP EDF scheduler supports a one-to-one and one-to-all thread to
processor affinity. It accepted affinity sets which are a proper
subset of the online processor containing at least two processors owned by
the scheduler. In this case it used a one-to-one thread to processor
affinity. This leads to undefined behaviour if a processor is removed
since the higher level check in rtems_scheduler_remove_processor() does
not account for this implementation detail.

Restrict the affinity set accepted by the SMP EDF scheduler to

  1. all online processors, or
  1. exactly one processor owned by the scheduler.

Close #4545.

Note: See TracTickets for help on using tickets.