1. 05 Apr, 2018 1 commit
  2. 03 Apr, 2018 1 commit
  3. 01 Apr, 2018 2 commits
  4. 29 Mar, 2018 1 commit
    • Philippe Gerum's avatar
      cobalt/posix/timer: fix CPU affinity tracking · 1cdcf888
      Philippe Gerum authored
      Timers may have specific CPU affinity requirements in that their
      backing clock device might not beat on all available CPUs, but only on
      a subset of them.
      
      The CPU affinity of every timer bound to a particular thread has to be
      tracked each time such timer is started, so that no core timer is
      queued to a per-CPU list which won't receive any event from the
      backing clock device.
      
      Such tracking was missing for timerfd and POSIX timers, along with
      internal timers running the sporadic scheduling policy.
      
      At this chance, the timer affinity code was cleaned up by folding all
      the affinity selection logic into a single call,
      i.e. xntimer_set_affinity().
      1cdcf888
  5. 20 Mar, 2018 1 commit
    • Philippe Gerum's avatar
      cobalt/sched, clock: provide ipipe_enter_idle_hook() · 59560645
      Philippe Gerum authored
      Since kernel 4.9, the pipeline code may ask us whether it would be
      fine to enter the idle state on the current CPU, by mean of a probing
      hook called ipipe_enter_idle_hook().
      
      Provide this hook, considering that absence of outstanding timers
      means idleness to us.
      59560645
  6. 16 Mar, 2018 1 commit
    • Philippe Gerum's avatar
      copperplate/threadobj: fix NULL dereference in threadobj_unblock() · 945c7dbf
      Philippe Gerum authored
      threadobj_unblock() simply does not work, dereferencing a NULL pointer
      whenever it actually manages to unblock a thread waiting on a
      synchronization object.
      
      Calling syncobj_flush() on this object to wake up waiters zeroes the
      wait_sobj field in the corresponding TCBs, so don't dereference
      thobj->wait_sobj past this point.
      
      Thread 1 "main" received signal SIGSEGV, Segmentation fault.
      0x00007ffff79aeda0 in __syncobj_tag_unlocked (sobj=0x0) at include/copperplate/syncobj.h:100
      100		assert(sobj->flags & SYNCOBJ_LOCKED);
      (gdb) bt
      945c7dbf
  7. 14 Mar, 2018 1 commit
    • Jan Kiszka's avatar
      cobalt/thread: Move tcb clearing into __xnthread_init · 05019431
      Jan Kiszka authored
      This both de-duplicates the code and ensures that all fields are zeroed
      prior to calling one of the actual tcb initialization functions.
      Specifically if host_task is not properly cleaned, we may cause a bug
      when using the field earlier, e.g.
      
      general protection fault: 0000 [#1] PREEMPT SMP
      [...]
      RIP: 0010:[<ffffffff81185a3c>]  [<ffffffff81185a3c>] xnthread_host_pid+0x1c/0x30
      [..]
      Call Trace:
       [<ffffffff8117c987>] trace_event_raw_event_cobalt_thread_set_current_prio+0x57/0xa0
       [<ffffffff8117f33d>] xnsched_set_effective_priority+0x8d/0xc0
       [<ffffffff8117a1e4>] xnsched_rt_setparam+0x14/0x30
       [<ffffffff8117e700>] xnsched_set_policy+0xc0/0x170
       [<ffffffff81185687>] __xnthread_init+0x317/0x3d0
       [<ffffffff8114a3e8>] ? trace_buffer_unlock_commit+0x58/0x70
       [<ffffffff811857bb>] xnthread_init+0x7b/0x110
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      05019431
  8. 10 Mar, 2018 2 commits
  9. 08 Mar, 2018 25 commits
  10. 27 Feb, 2018 1 commit
  11. 26 Feb, 2018 1 commit
  12. 20 Feb, 2018 3 commits