1. 28 Oct, 2018 1 commit
    • Philippe Gerum's avatar
      net/stack: export services to switch interface up/down · 05cc9c99
      Philippe Gerum authored
      
      
      We may want to force a rtnet interface up, and more likely down before
      unloading a driver module.
      
      Export the ioctl() code which handles the IOC_RT_IFUP/IFDOWN core
      ioctl requests as standalone routines. The locking model remains
      unchanged, with ioctl() requests and direct service calls serializing
      on the per-device lock.
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      05cc9c99
  2. 17 Oct, 2018 1 commit
  3. 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
  4. 02 Oct, 2018 3 commits
  5. 27 Sep, 2018 1 commit
  6. 24 Sep, 2018 2 commits
    • Philippe Gerum's avatar
      cobalt: use generic linux/uaccess.h header · bae753be
      Philippe Gerum authored
      
      
      asm/uaccess.h is an arch-local, partial header which may cause build
      issues if included directly.
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      bae753be
    • Philippe Gerum's avatar
      drivers/can: flexcan: rebase on mainline v4.14.58 · c6f278d6
      Philippe Gerum authored
      
      
      Usable with latest Flexcan controller revisions available from recent
      i.MX series. The older driver would break when initializing the chip
      (FIFO activation), e.g.:
      
      [  957.052272] rtcan0: real bitrate 1000000, sampling point 75.0%
      [  957.058325] rtcan0: writing ctrl=0x011a2003
      [  957.062670] rtcan0: flexcan_set_bit_time: mcr=0x5980000f ctrl=0x011a2003
      [  957.069403] rtcan0: flexcan_chip_start: writing mcr=0x79a2020f
      [  957.069421] rtcan0: flexcan_chip_start: writing ctrl=0x011aac53
      [  957.075359] Unhandled fault: imprecise external abort (0x1c06) at 0xaec71a2c
      [  957.088371] pgd = cae8c000
      [  957.091106] [aec71a2c] *pgd=9d843835, *pte=ba49d75f, *ppte=ba49dc7f
      [  957.097447] Internal error: : 1c06 [#1] SMP ARM
      [  957.108324] CPU: 1 PID: 843 Comm: rtcanconfig Not tainted 4.14.34 #1
      [  957.115391] Hardware name: Freescale i.MX7 Dual (Device Tree)
      [  957.121155] I-pipe domain: Linux
      [  957.124404] task: caee1900 task.stack: ca5d0000
      [  957.128968] PC is at flexcan_chip_start+0x180/0x34c
      [  957.133869] LR is at flexcan_chip_start+0x178/0x34c
      
      As a bonus, the latest work arounds addressing silicon bugs are now
      included (e.g. use of timestamp-based offloading when the FIFO
      ordering does not match the time of arrival).
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      c6f278d6
  7. 17 Sep, 2018 4 commits
  8. 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
      
      
      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
      b4cd0f72
  9. 04 Sep, 2018 1 commit
  10. 03 Sep, 2018 5 commits
  11. 31 Aug, 2018 2 commits
    • Philippe Gerum's avatar
      drivers/autotune: fix computation of gravity limit · 553881db
      Philippe Gerum authored
      A wrongly computed gravity limit value caused the calibration to end
      too early on some platforms (e.g. arm64).
      
      This value should be the max. among the set of min. latencies observed
      while running the warmup steps. In the same move, run more warmup
      steps to increase the likeliness of reaching such max.
      553881db
    • Philippe Gerum's avatar
      drivers/autotune: fix calibration with low frequency timers · 262cdf25
      Philippe Gerum authored
      When a single timer tick last less than the adjustment step time
      (i.e. < 500 ns), we end up with a zero adjustment value which either
      leads to a spurious early shot detection due to a rounding error, or a
      null gravity value at the end of a lengthy but useless calibration
      process.
      
      Make sure to adjust by at least one timer tick, and mitigate rounding
      errors when checking for early shots when the timer frequency is lower
      than 1e9 / ADJUSTMENT_STEP.
      262cdf25
  12. 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
  13. 25 Aug, 2018 1 commit
  14. 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
  15. 20 Aug, 2018 1 commit
  16. 01 Aug, 2018 4 commits
  17. 14 Jul, 2018 1 commit
  18. 03 Jul, 2018 7 commits