- mars 12, 2021
-
-
Raphael TENAUD a rédigé
-
- mars 06, 2021
-
-
Jan Kiszka a rédigé
A missing volatile caused some compiler versions (e.g. gcc-8) to skip updating the variable inside the loop. At this chance, drop the pointless and misleading usage of atomic_t for this variable. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
- fév. 16, 2021
-
-
Jan Kiszka a rédigé
Internal header, broken for mercury and not used anymore. Reported-by: Florian Bezdeka <florian.bezdeka@siemens.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
- fév. 15, 2021
-
-
Jan Kiszka a rédigé
As optimization can shrink __do_work to just two instruction, the calibration loop needs to run longer. At this chance, drop the pthread_kill to stop the thread and rely in both cases on the throttle mechanism. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
- fév. 10, 2021
-
-
Jan Kiszka a rédigé
More recent, and now also the one carrying a required build fix. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
- fév. 08, 2021
-
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> [Jan: style tweak in detach_current] Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Dovetail enables irq_work for deferring the execution of a routine until the in-band stage is active again on the current CPU, we don't need to provide for any additional mechanism. Therefore we just need to wrap the pipeline interface calls to the irq_work API. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Jan Kiszka a rédigé
Allows filtering on 'dovetail/master' e.g. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
- fév. 05, 2021
-
-
Jan Kiszka a rédigé
In preparation of adding dovetail as pipeline flavor. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Jan Kiszka a rédigé
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Greg Gallagher a rédigé
5.4 kernels do not have compiler.h, only include this header file for kernels older than 5.4. The file resurfaced in 5.7, but that is not in scope for I-pipe Signed-off-by: Greg Gallagher <greg@embeddedgreg.com> [Jan: ported over next and adjusted commit message] Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
- fév. 03, 2021
-
-
Greg Gallagher via Xenomai a rédigé
Update to use ELF_HWCAP instead of elf_hwcap directly. Signed-off-by: Greg Gallagher <greg@embeddedgreg.com> [Jan: rebased] Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
As its name suggests, TODO() can be added to the code in order to highlight a place where some implementation bits are known to be missing. Turning on CONFIG_XENO_TODO reveals the places where such markers might linger by triggering a build time assertion, so that they don't go unnoticed. We may drop this helper when the port to Dovetail is complete. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Regarding the frequency of the clock hardware, the kernel knows better. This parameter dates back to the dark ages when the kernel might not have detected variations in (per-CPU) clock frequency, which is no more an issue nowadays. Actually, we do want to rely on the non-trivial logic the kernel has to figure out that value dynamically for us. So let's drop the user override for this parameter. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
The only user of the timer frequency setting was the machine-specific timer calibration handler, which is now gone. Therefore we don't need to know the timer frequency anymore. As a consequence, we don't care about overriding its value as determined by the I-pipe either. Let's drop all of these antiquated bits. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
The calibrated timer setup time is currently accounted for in the timer gravity triplet (.user, also used as default .irq latency), exclusively. This forces in a dynamically calculated parameter with no way to override it. Meanwhile, this value would be already included in every gravity value which autotune may determine, so this setting is pretty much redundant. Drop nktimerlat and the requirement for the machine section to provide a timer calibration handler, we don't need these. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Cobalt over Dovetail represents time values as counts of nanoseconds, dismissing the legacy (hardware) TSC representation entirely. For this reason, we can move any code which implements TSC/nanosecs conversion to the I-pipe specific section. This includes the handler applying CPU frequency updates (xnclock_update_freq()) which has no purpose over Dovetail, since these events are transparently dealt with for the proxy device by the generic clockevent framework. No functional change is introduced. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
The Cobalt architecture code is overwhelmingly specific to a pipeline flavour, most of it for interfacing with the I-pipe. We may still need very little arch-specific code in the Dovetail set up though, specifically for implementing Cobalt's built-in FPU tests. Let's move the existing architecture code under the ipipe/ hierarchy, fixing up the kernel prep script accordingly. No functional change is introduced. Signed-off-by: Philippe Gerum <rpm@xenomai.org> [Jan: fix pipeline type probing, resolve two whitespace warnings] Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Dovetail enables applications to get timestamps from the CLOCK_MONOTONIC and CLOCK_REALTIME clocks via the regular vDSO by calling clock_gettime(), including from the out-of-band stage (i.e. primary mode). Legacy support involving IPIPE_HOSTRT can move to the I-pipe specific section. No functional change is introduced. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Although the synchronous single-stepping code has moved to the I-pipe section, we should be able to reuse the current logic nearly as is on top of Dovetail, with only minor adjustments. However, compared to the previous implementation, the single-stepping status (XNCONTHI) and the user return notifier are armed _after_ the personality handlers have run, in the relaxing path for the current thread (see xnthread_relax()). This change should not affect the overall logic, assuming no custom relax handler was depending on the original sequence of actions (which they should definitely not anyway). We keep this commit which does introduce a small functional change separated from the other scheduler-related modifications, as a convenience for chasing regressions if need be. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Implement an abstract API for the low-level context switching code, moving the legacy open coded support to the I-pipe specific section (e.g. fpu management, register file switching, root context tracking). Dovetail provides built-in support for all these nitty-gritty details, which we may tap into for the same purpose instead. The changes have been introduced in a way which properly maps to the Dovetail interface, while remaining compatible with the interface to the legacy code. No functional change is introduced. Signed-off-by: Philippe Gerum <rpm@xenomai.org> [Jan: make giveup_fpu static] Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
- jan. 25, 2021
-
-
Ronny Meeus a rédigé
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: Ronny Meeus <ronny.meeus@gmail.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
- jan. 19, 2021
-
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
Add wrappers to create "synthetic IRQs" the I-pipe way (used to be called "virtual IRQs" there). Those interrupt channels can only be triggered by software, with per-CPU semantics. We use them to schedule handlers to be run on the in-band execution stage, meaning "secondary mode" in the Cobalt jargon. We don't provide for executing handlers on the out-of-band stage, because Cobalt does not need this. Signed-off-by: Philippe Gerum <rpm@xenomai.org> [Jan: broke up one line in pipeline_create_inband_sirq into 2] Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
No functional change is introduced. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
No functional change is introduced. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-
Philippe Gerum a rédigé
No functional change is introduced. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-