1. 18 Mar, 2019 1 commit
    • Jan Kiszka's avatar
      cobalt: Add sched-quota tracepoints · 4f0f067a
      Jan Kiszka authored
      
      
      This instruments the sched-quota scheduling policy to track which groups
      exit, with which settings, and which threads belong to them.
      
      As trace_cobalt_schedquota_add_thread may be invoked before a thread is
      fully initialized, we need to trace also the thread address.
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      4f0f067a
  2. 04 Feb, 2019 1 commit
  3. 16 Jan, 2019 2 commits
  4. 09 Jan, 2019 1 commit
  5. 20 Dec, 2018 1 commit
  6. 06 Dec, 2018 1 commit
  7. 30 Nov, 2018 5 commits
  8. 28 Nov, 2018 1 commit
  9. 23 Nov, 2018 1 commit
    • Jan Kiszka's avatar
      cobalt/sched-quota: Account for already consumed time on limit update · f116e7eb
      Jan Kiszka authored
      
      
      If we change the quota value of thread group, we should take its already
      consumed time during the current cycle into account. So far, we refilled
      the budget blindly, which could have given the group an uncontrolled
      "peak".
      
      This commit first update the run_budget_ns of an active group and kills
      its limit timer. Then it refills run_budget_ns only with the remaining
      budget of the current cycle, taking the new quota as limit.
      
      Accumulated credits are still dropped - not worth to deal with their
      complexity in this scenario.
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      f116e7eb
  10. 17 Oct, 2018 1 commit
  11. 10 Oct, 2018 1 commit
    • Jan Kiszka's avatar
      cobalt/posix/mqueue: Fix crash after failing registration · 697679b7
      Jan Kiszka authored
      
      
      If xnregistry_enter in mq_open fails, the new entry will not be added to
      cobalt_mqq. But the cleanup path taken afterwards will nevertheless try
      to remove it from there. That will cause a crash because the mq->link is
      uninitialized. Fix that by initializing it as list head so that list
      removal becomes harmless, even when the entry is not on any list..
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      697679b7
  12. 02 Oct, 2018 3 commits
  13. 24 Sep, 2018 1 commit
  14. 17 Sep, 2018 4 commits
  15. 06 Sep, 2018 3 commits
    • Jan Kiszka's avatar
      cobalt/posix/signal: Fix return code on siginfo copy errors · 09b207f9
      Jan Kiszka authored
      
      
      The put_siginfo functions return a non-zero value on error. We have to
      convert that into proper -EFAULT before returning.
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      09b207f9
    • Philippe Gerum's avatar
      cobalt/sched: improve watchdog accuracy · f5a67a24
      Philippe Gerum authored and Jan Kiszka's avatar Jan Kiszka committed
      
      
      The original watchdog mechanism was based on a sampling method: every
      second (built-in value), it used to check the runtime mode of the
      current task preempted on the ticking CPU. A per-cpu counter was
      increased by one every time rt/primary mode was detected, then checked
      against the trigger limit (CONFIG_XENO_OPT_WATCHDOG_TIMEOUT).
      Otherwise, the counter was reset to zero.
      
      With this fairly naive approach, it only takes a single hit with
      CONFIG_XENO_OPT_WATCHDOG_TIMEOUT=1 to trigger the watchdog, i.e. if
      the system-fixed 1s watchdog tick preempts any Xenomai task when it is
      running in primary mode on the current CPU, the watchdog fires.
      
      The default value of 4s papered over the inherent imprecision of such
      a coarse-grained method, lengthening the odds of observing false
      positive triggers.
      
      To improve the accuracy of the watchdog, arm the watchdog timer to
      fire at the final trigger date directly, right before switching the
      CPU to primary mode (leave_root()), disarming it when the CPU is about
      to switch back to secondary mode (enter_root()).
      
      Better accuracy comes at the expense of slightly more overhead when
      transitioning between primary and secondary modes, which should be
      acceptable for a debug feature which is not affecting the hot path
      anyway (i.e. there is no added cost for strictly rt context switches).
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      f5a67a24
    • Philippe Gerum's avatar
      cobalt/intr: drop last #if XENO_DEBUG() conditional · b4cd0f72
      Philippe Gerum authored and Jan Kiszka's avatar Jan Kiszka committed
      
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      b4cd0f72
  16. 04 Sep, 2018 1 commit
  17. 03 Sep, 2018 4 commits
  18. 28 Aug, 2018 1 commit
    • Philippe Gerum's avatar
      cobalt/arm64: calibrate: prevent excessive delay of next host tick · abd64d98
      Philippe Gerum authored
      The calibration procedure overwrites the current value of the timer
      counter for a pending oneshot tick event, which is admittedly ok in
      the context of initializing Cobalt. However, the previous
      implementation maxed the counter value, potentially causing excessive
      delay to the host waiting for the overwritten timer event.
      
      Use a shorter delay value when calibrating so that the next shot does
      not occur later than one jiffy after we left the calibration
      routine. One jiffy is also long enough for preventing the timer to
      ever fire while running the calibration loop.
      abd64d98
  19. 22 Aug, 2018 1 commit
    • Philippe Gerum's avatar
      cobalt/arm: calibrate: prevent excessive delay of next host tick · 630f0a33
      Philippe Gerum authored
      The calibration procedure overwrites the current value of the timer
      counter for a pending oneshot tick event, which is admittedly ok in
      the context of initializing Cobalt. However, the previous
      implementation maxed the counter value, potentially causing excessive
      delay to the host waiting for the overwritten timer event.
      
      Use a shorter delay value when calibrating so that the next shot does
      not occur later than one jiffy after we left the calibration
      routine. One jiffy is also long enough for preventing the timer to
      ever fire while running the calibration loop.
      630f0a33
  20. 01 Aug, 2018 4 commits
  21. 14 Jul, 2018 1 commit
  22. 03 Jul, 2018 1 commit