1. 03 Feb, 2021 9 commits
  2. 25 Jan, 2021 1 commit
    • Ronny Meeus's avatar
      copperplate/timerobj: fix corrupted timer list. · b89eacfe
      Ronny Meeus authored and Jan Kiszka's avatar Jan Kiszka committed
      
      
      We observe an issue that the timer-list gets corrupted resulting in an
      endless loop executed by the timer-server thread.
      
      During the processing of the timeout list, a pointer to the next timer
      to be handled is kept in the tmp stack variable.
      Just before calling the timer handler of the current timer the lock on
      the timer list is released giving other threads to change the list.
      If the timer currently referenced by tmp is deleted, we end up with an
      invalid node (next pointer pointing to itself) and this will result in
      an endless loop of the timer server.
      
      Test code is not available but I have seen this issue in our real
      production code and after applying this path, the issue is solved.
      
      The patch basically changes the timer server logic to always start
      from the beginning of the list since when a timer is processed, it is
      either removed (one-shot) or reinserted in a different location in the
      list.
      The processing of the list will stop anyhow if all timers that need
      to expire up to "now" are handled.
      
      Signed-off-by: default avatarRonny Meeus <ronny.meeus@gmail.com>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      b89eacfe
  3. 19 Jan, 2021 13 commits
  4. 11 Jan, 2021 8 commits
  5. 08 Jan, 2021 7 commits
  6. 17 Dec, 2020 2 commits
    • Philippe Gerum's avatar
      cobalt/intr: pipeline: IRQ management code is pipeline-specific · 38baf072
      Philippe Gerum authored and Jan Kiszka's avatar Jan Kiszka committed
      
      
      The way we request and manage interrupts depends on the underlying
      pipeline interface.
      
      As a matter of fact, Dovetail already deals with most of the logic
      implemented by the xnintr layer, such as edge/level shared IRQs, fully
      reusing the regular genirq interface for management. IRQ handlers with
      Dovetail have regular signatures as well.
      
      For the time being, let's move the entire xnintr layer to the I-pipe
      specific section created earlier. We should be able to design the
      abstract interface to IRQ management after this layer for the most
      part, which we would connect to Dovetail eventually.
      
      No functional change is introduced.
      
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      38baf072
    • Philippe Gerum's avatar
      cobalt/init: pipeline: abstract pipeline-specific inits · 6d2989b6
      Philippe Gerum authored and Jan Kiszka's avatar Jan Kiszka committed
      
      
      This is the initial step to enabling Dovetail for the Cobalt core,
      which requires to introduce an abstraction layer between such core and
      the interrupt pipeline interface, either Dovetail or the legacy
      I-pipe.
      
      Eventually, the Cobalt implementation which has to interface to the
      underlying pipeline should branch off at the following points:
      
      - kernel/cobalt/{ipipe, dovetail}/arch, the arch-specific
        implementation which overwhelmingly depends on the pipeline flavour.
      
      - kernel/cobalt/{ipipe, dovetail}, the generic Cobalt code calling
        pipeline services.
      
      - kernel/cobalt/include/{ipipe, dovetail}, the client glue types and
        definitions pulled into some basic kernel types by the pipeline
        implementation (e.g. the thread_info extension structure).
      
      - include/cobalt/kernel/{ipipe, dovetail}, the generic Cobalt headers
        depending on services and definitions the pipeline provides for.
      
      We start the process by abstracting the machine-level init code which
      depends on the pipeline flavour.
      
      No functional change is introduced.
      
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      6d2989b6