* [PATCH 0/4] Dovetail prep work, cleanup series
@ 2020-12-05 12:00 Philippe Gerum
2020-12-05 12:00 ` [PATCH 1/4] cobalt/arm: disable unlocked context switching Philippe Gerum
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Philippe Gerum @ 2020-12-05 12:00 UTC (permalink / raw)
To: xenomai
From: Philippe Gerum <rpm@xenomai.org>
This series contains prep work to the addition of a pipeline
abstraction layer towards Xenomai 3.2 supporting Dovetail, cleaning up
obsolete code. Based on the -next branch.
Philippe Gerum (4):
cobalt/arm: disable unlocked context switching
cobalt/kernel: drop support for preemptible context switching
cobalt/syscall: use raw_printk() for serial debug output
cobalt/clock: drop xnclock_get_host_time()
include/cobalt/kernel/clock.h | 2 -
include/cobalt/kernel/sched.h | 34 ---------------
include/cobalt/kernel/thread.h | 2 +-
include/cobalt/uapi/kernel/thread.h | 1 -
kernel/cobalt/arch/arm/Kconfig | 22 ----------
kernel/cobalt/clock.c | 6 ---
kernel/cobalt/posix/syscall.c | 2 +-
kernel/cobalt/sched.c | 66 ++---------------------------
kernel/cobalt/thread.c | 23 +---------
kernel/cobalt/timer.c | 2 +-
10 files changed, 7 insertions(+), 153 deletions(-)
--
2.26.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/4] cobalt/arm: disable unlocked context switching
2020-12-05 12:00 [PATCH 0/4] Dovetail prep work, cleanup series Philippe Gerum
@ 2020-12-05 12:00 ` Philippe Gerum
2020-12-05 12:00 ` [PATCH 2/4] cobalt/kernel: drop support for preemptible " Philippe Gerum
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Philippe Gerum @ 2020-12-05 12:00 UTC (permalink / raw)
To: xenomai
From: Philippe Gerum <rpm@xenomai.org>
Allowing the task context switching code to be preempted by local
interrupts was an optimization targeted at low-end ARM armv4/5 cores
with sluggish VIVT caches, at the expense of significant complexity in
the IRQ pipeline and Cobalt scheduler. Support for armv4/5 is long
gone for Xenomai, and maintaining such feature is not worth the burden
with the VIPT caches exhibited by current micro-architectures such as
armv7.
Dovetail provides some form of preemptible context switching of
in-band tasks specifically, which requires no support from Cobalt.
So we may disable this Cobalt-specific feature entirely for ARM.
Signed-off-by: Philippe Gerum <rpm@xenomai.org>
---
kernel/cobalt/arch/arm/Kconfig | 22 ----------------------
1 file changed, 22 deletions(-)
diff --git a/kernel/cobalt/arch/arm/Kconfig b/kernel/cobalt/arch/arm/Kconfig
index 0c4e0aa82..d81ff4c59 100644
--- a/kernel/cobalt/arch/arm/Kconfig
+++ b/kernel/cobalt/arch/arm/Kconfig
@@ -1,28 +1,6 @@
source "kernel/xenomai/Kconfig"
source "drivers/xenomai/Kconfig"
-menu "Machine/platform-specific options"
-
-config XENO_ARCH_UNLOCKED_SWITCH
- bool "Unlocked context switch"
- default y
- help
- The Cobalt core may allow non-atomic execution of the
- machine-dependent context switching code, so that other CPUs
- and/or local interrupts may execute concurrently.
-
- This option reduces interrupt latency when costly cache and
- TLB flushes are required to switch context.
-
- You definitely want to enable that option on low-end ARM
- platforms.
-endmenu
-
-config IPIPE_WANT_PREEMPTIBLE_SWITCH
- bool
- default y if XENO_ARCH_UNLOCKED_SWITCH
- default n if !XENO_ARCH_UNLOCKED_SWITCH
-
config XENO_ARCH_FPU
def_bool VFP
--
2.26.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/4] cobalt/kernel: drop support for preemptible context switching
2020-12-05 12:00 [PATCH 0/4] Dovetail prep work, cleanup series Philippe Gerum
2020-12-05 12:00 ` [PATCH 1/4] cobalt/arm: disable unlocked context switching Philippe Gerum
@ 2020-12-05 12:00 ` Philippe Gerum
2020-12-05 12:00 ` [PATCH 3/4] cobalt/syscall: use raw_printk() for serial debug output Philippe Gerum
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Philippe Gerum @ 2020-12-05 12:00 UTC (permalink / raw)
To: xenomai
From: Philippe Gerum <rpm@xenomai.org>
We have no architecture enabling this feature anymore.
Signed-off-by: Philippe Gerum <rpm@xenomai.org>
---
include/cobalt/kernel/sched.h | 34 ---------------
include/cobalt/kernel/thread.h | 2 +-
include/cobalt/uapi/kernel/thread.h | 1 -
kernel/cobalt/sched.c | 66 ++---------------------------
kernel/cobalt/thread.c | 23 +---------
5 files changed, 5 insertions(+), 121 deletions(-)
diff --git a/include/cobalt/kernel/sched.h b/include/cobalt/kernel/sched.h
index 1f5714fe0..5d278838f 100644
--- a/include/cobalt/kernel/sched.h
+++ b/include/cobalt/kernel/sched.h
@@ -94,9 +94,6 @@ struct xnsched {
struct xntimer rrbtimer;
/*!< Root thread control block. */
struct xnthread rootcb;
-#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
- struct xnthread *last;
-#endif
#ifdef CONFIG_XENO_ARCH_FPU
/*!< Thread owning the current FPU context. */
struct xnthread *fpuholder;
@@ -351,37 +348,6 @@ static inline int xnsched_primary_p(void)
return !xnsched_unblockable_p();
}
-#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
-
-struct xnsched *xnsched_finish_unlocked_switch(struct xnsched *sched);
-
-#define xnsched_resched_after_unlocked_switch() xnsched_run()
-
-static inline
-int xnsched_maybe_resched_after_unlocked_switch(struct xnsched *sched)
-{
- return sched->status & XNRESCHED;
-}
-
-#else /* !CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
-
-static inline struct xnsched *
-xnsched_finish_unlocked_switch(struct xnsched *sched)
-{
- XENO_BUG_ON(COBALT, !hard_irqs_disabled());
- return xnsched_current();
-}
-
-static inline void xnsched_resched_after_unlocked_switch(void) { }
-
-static inline int
-xnsched_maybe_resched_after_unlocked_switch(struct xnsched *sched)
-{
- return 0;
-}
-
-#endif /* !CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
-
bool xnsched_set_effective_priority(struct xnthread *thread,
int prio);
diff --git a/include/cobalt/kernel/thread.h b/include/cobalt/kernel/thread.h
index 03adb2529..21a8603b4 100644
--- a/include/cobalt/kernel/thread.h
+++ b/include/cobalt/kernel/thread.h
@@ -38,7 +38,7 @@
* @addtogroup cobalt_core_thread
* @{
*/
-#define XNTHREAD_BLOCK_BITS (XNSUSP|XNPEND|XNDELAY|XNDORMANT|XNRELAX|XNMIGRATE|XNHELD|XNDBGSTOP)
+#define XNTHREAD_BLOCK_BITS (XNSUSP|XNPEND|XNDELAY|XNDORMANT|XNRELAX|XNHELD|XNDBGSTOP)
#define XNTHREAD_MODE_BITS (XNRRB|XNWARN|XNTRAPLB)
struct xnthread;
diff --git a/include/cobalt/uapi/kernel/thread.h b/include/cobalt/uapi/kernel/thread.h
index 0802a16dc..664def08e 100644
--- a/include/cobalt/uapi/kernel/thread.h
+++ b/include/cobalt/uapi/kernel/thread.h
@@ -37,7 +37,6 @@
#define XNZOMBIE 0x00000020 /**< Zombie thread in deletion process */
#define XNMAPPED 0x00000040 /**< Thread is mapped to a linux task */
#define XNRELAX 0x00000080 /**< Relaxed shadow thread (blocking bit) */
-#define XNMIGRATE 0x00000100 /**< Thread is currently migrating to another CPU. */
#define XNHELD 0x00000200 /**< Thread is held to process emergency. */
#define XNBOOST 0x00000400 /**< PI/PP boost undergoing */
#define XNSSTEP 0x00000800 /**< Single-stepped by debugger */
diff --git a/kernel/cobalt/sched.c b/kernel/cobalt/sched.c
index 75adbc49e..7ff8a6c82 100644
--- a/kernel/cobalt/sched.c
+++ b/kernel/cobalt/sched.c
@@ -345,34 +345,6 @@ struct xnthread *xnsched_pick_next(struct xnsched *sched)
#endif /* CONFIG_XENO_OPT_SCHED_CLASSES */
}
-#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
-
-struct xnsched *xnsched_finish_unlocked_switch(struct xnsched *sched)
-{
- struct xnthread *last;
- spl_t s;
-
- xnlock_get_irqsave(&nklock, s);
-
-#ifdef CONFIG_SMP
- /* If current thread migrated while suspended */
- sched = xnsched_current();
-#endif /* CONFIG_SMP */
-
- last = sched->last;
- sched->status &= ~XNINSW;
-
- /* Detect a thread which has migrated. */
- if (last->sched != sched) {
- xnsched_putback(last);
- xnthread_clear_state(last, XNMIGRATE);
- }
-
- return sched;
-}
-
-#endif /* CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
-
void xnsched_lock(void)
{
struct xnsched *sched = xnsched_current();
@@ -628,17 +600,8 @@ void xnsched_migrate(struct xnthread *thread, struct xnsched *sched)
{
xnsched_set_resched(thread->sched);
migrate_thread(thread, sched);
-
-#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
- /*
- * Mark the thread in flight, xnsched_finish_unlocked_switch()
- * will put the thread on the remote runqueue.
- */
- xnthread_set_state(thread, XNMIGRATE);
-#else
/* Move thread to the remote run queue. */
xnsched_putback(thread);
-#endif
}
/*
@@ -840,18 +803,6 @@ struct xnthread *xnsched_rt_pick(struct xnsched *sched)
#endif /* !CONFIG_XENO_OPT_SCALABLE_SCHED */
-static inline void switch_context(struct xnsched *sched,
- struct xnthread *prev, struct xnthread *next)
-{
-#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
- sched->last = prev;
- sched->status |= XNINSW;
- xnlock_clear_irqon(&nklock);
-#endif
-
- xnarch_switch_to(prev, next);
-}
-
/**
* @fn int xnsched_run(void)
* @brief The rescheduling procedure.
@@ -920,15 +871,9 @@ static inline int test_resched(struct xnsched *sched)
static inline void enter_root(struct xnthread *root)
{
- struct xnarchtcb *rootcb __maybe_unused = xnthread_archtcb(root);
-
#ifdef CONFIG_XENO_OPT_WATCHDOG
xntimer_stop(&root->sched->wdtimer);
#endif
-#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
- if (rootcb->core.mm == NULL)
- set_ti_thread_flag(rootcb->core.tip, TIF_MMSWITCH_INT);
-#endif
}
static inline void leave_root(struct xnthread *root)
@@ -984,7 +929,7 @@ int ___xnsched_run(struct xnsched *sched)
* "current" for disambiguating.
*/
xntrace_pid(task_pid_nr(current), xnthread_current_priority(curr));
-reschedule:
+
if (xnthread_test_state(curr, XNUSER))
do_lazy_user_work(curr);
@@ -1030,8 +975,7 @@ reschedule:
xnstat_exectime_switch(sched, &next->stat.account);
xnstat_counter_inc(&next->stat.csw);
-
- switch_context(sched, prev, next);
+ xnarch_switch_to(prev, next);
/*
* Test whether we transitioned from primary mode to secondary
@@ -1043,7 +987,7 @@ reschedule:
goto shadow_epilogue;
switched = 1;
- sched = xnsched_finish_unlocked_switch(sched);
+ sched = xnsched_current();
/*
* Re-read the currently running thread, this is needed
* because of relaxed/hardened transitions.
@@ -1052,10 +996,6 @@ reschedule:
xnthread_switch_fpu(sched);
xntrace_pid(task_pid_nr(current), xnthread_current_priority(curr));
out:
- if (switched &&
- xnsched_maybe_resched_after_unlocked_switch(sched))
- goto reschedule;
-
xnlock_put_irqrestore(&nklock, s);
return switched;
diff --git a/kernel/cobalt/thread.c b/kernel/cobalt/thread.c
index 5260fb1e7..49f749f1c 100644
--- a/kernel/cobalt/thread.c
+++ b/kernel/cobalt/thread.c
@@ -406,22 +406,6 @@ void xnthread_prepare_wait(struct xnthread_wait_context *wc)
}
EXPORT_SYMBOL_GPL(xnthread_prepare_wait);
-static inline int moving_target(struct xnsched *sched, struct xnthread *thread)
-{
- int ret = 0;
-#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
- /*
- * When deleting a thread in the course of a context switch or
- * in flight to another CPU with nklock unlocked on a distant
- * CPU, do nothing, this case will be caught in
- * xnsched_finish_unlocked_switch.
- */
- ret = (sched->status & XNINSW) ||
- xnthread_test_state(thread, XNMIGRATE);
-#endif
- return ret;
-}
-
#ifdef CONFIG_XENO_ARCH_FPU
static inline void giveup_fpu(struct xnsched *sched,
@@ -494,10 +478,6 @@ static inline void cleanup_tcb(struct xnthread *curr) /* nklock held, irqs off *
release_all_ownerships(curr);
giveup_fpu(sched, curr);
-
- if (moving_target(sched, curr))
- return;
-
xnsched_forget(curr);
xnthread_deregister(curr);
}
@@ -1954,11 +1934,10 @@ int xnthread_harden(void)
}
/* "current" is now running into the Xenomai domain. */
- sched = xnsched_finish_unlocked_switch(thread->sched);
+ sched = xnsched_current();
xnthread_switch_fpu(sched);
xnlock_clear_irqon(&nklock);
- xnsched_resched_after_unlocked_switch();
xnthread_test_cancel();
trace_cobalt_shadow_hardened(thread);
--
2.26.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/4] cobalt/syscall: use raw_printk() for serial debug output
2020-12-05 12:00 [PATCH 0/4] Dovetail prep work, cleanup series Philippe Gerum
2020-12-05 12:00 ` [PATCH 1/4] cobalt/arm: disable unlocked context switching Philippe Gerum
2020-12-05 12:00 ` [PATCH 2/4] cobalt/kernel: drop support for preemptible " Philippe Gerum
@ 2020-12-05 12:00 ` Philippe Gerum
2020-12-05 12:00 ` [PATCH 4/4] cobalt/clock: drop xnclock_get_host_time() Philippe Gerum
2020-12-11 6:58 ` [PATCH 0/4] Dovetail prep work, cleanup series Jan Kiszka
4 siblings, 0 replies; 7+ messages in thread
From: Philippe Gerum @ 2020-12-05 12:00 UTC (permalink / raw)
To: xenomai
From: Philippe Gerum <rpm@xenomai.org>
__ipipe_serial_debug() is a legacy wrapper to the current raw_printk()
service. Drop the last in-tree reference to this obsolete call.
No functional change is introduced.
Signed-off-by: Philippe Gerum <rpm@xenomai.org>
---
kernel/cobalt/posix/syscall.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c
index a9c979903..0a09322be 100644
--- a/kernel/cobalt/posix/syscall.c
+++ b/kernel/cobalt/posix/syscall.c
@@ -262,7 +262,7 @@ static COBALT_SYSCALL(serialdbg, current,
n = sizeof(buf);
if (cobalt_copy_from_user(buf, u_msg, n))
return -EFAULT;
- __ipipe_serial_debug("%.*s", n, buf);
+ raw_printk("%.*s", n, buf);
u_msg += n;
len -= n;
}
--
2.26.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/4] cobalt/clock: drop xnclock_get_host_time()
2020-12-05 12:00 [PATCH 0/4] Dovetail prep work, cleanup series Philippe Gerum
` (2 preceding siblings ...)
2020-12-05 12:00 ` [PATCH 3/4] cobalt/syscall: use raw_printk() for serial debug output Philippe Gerum
@ 2020-12-05 12:00 ` Philippe Gerum
2020-12-11 6:58 ` [PATCH 0/4] Dovetail prep work, cleanup series Jan Kiszka
4 siblings, 0 replies; 7+ messages in thread
From: Philippe Gerum @ 2020-12-05 12:00 UTC (permalink / raw)
To: xenomai
From: Philippe Gerum <rpm@xenomai.org>
No point in abstracting xnclock_get_host_time() and actually
counter-intuitive since it refers to the host-managed wallclock time,
not to any Xenomai-controlled clock device. Fix the single in-tree
user and drop this call.
Signed-off-by: Philippe Gerum <rpm@xenomai.org>
---
include/cobalt/kernel/clock.h | 2 --
kernel/cobalt/clock.c | 6 ------
kernel/cobalt/timer.c | 2 +-
3 files changed, 1 insertion(+), 9 deletions(-)
diff --git a/include/cobalt/kernel/clock.h b/include/cobalt/kernel/clock.h
index c26776a0b..94dfd2f99 100644
--- a/include/cobalt/kernel/clock.h
+++ b/include/cobalt/kernel/clock.h
@@ -330,8 +330,6 @@ static inline xnticks_t xnclock_read_realtime(struct xnclock *clock)
unsigned long long xnclock_divrem_billion(unsigned long long value,
unsigned long *rem);
-xnticks_t xnclock_get_host_time(void);
-
#ifdef CONFIG_XENO_OPT_VFILE
void xnclock_init_proc(void);
diff --git a/kernel/cobalt/clock.c b/kernel/cobalt/clock.c
index f8291b006..2a5b61760 100644
--- a/kernel/cobalt/clock.c
+++ b/kernel/cobalt/clock.c
@@ -348,12 +348,6 @@ void xnclock_adjust(struct xnclock *clock, xnsticks_t delta)
}
EXPORT_SYMBOL_GPL(xnclock_adjust);
-xnticks_t xnclock_get_host_time(void)
-{
- return ktime_to_ns(ktime_get_real());
-}
-EXPORT_SYMBOL_GPL(xnclock_get_host_time);
-
xnticks_t xnclock_core_read_monotonic(void)
{
return xnclock_core_ticks_to_ns(xnclock_core_read_raw());
diff --git a/kernel/cobalt/timer.c b/kernel/cobalt/timer.c
index b8b60c4e5..ccd3c3b70 100644
--- a/kernel/cobalt/timer.c
+++ b/kernel/cobalt/timer.c
@@ -853,7 +853,7 @@ int xntimer_grab_hardware(void)
#endif /* CONFIG_XENO_OPT_STATS_IRQS */
nkclock.wallclock_offset =
- xnclock_get_host_time() - xnclock_read_monotonic(&nkclock);
+ ktime_to_ns(ktime_get_real()) - xnclock_read_monotonic(&nkclock);
ret = xntimer_setup_ipi();
if (ret)
--
2.26.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/4] Dovetail prep work, cleanup series
2020-12-05 12:00 [PATCH 0/4] Dovetail prep work, cleanup series Philippe Gerum
` (3 preceding siblings ...)
2020-12-05 12:00 ` [PATCH 4/4] cobalt/clock: drop xnclock_get_host_time() Philippe Gerum
@ 2020-12-11 6:58 ` Jan Kiszka
2020-12-14 15:47 ` Jan Kiszka
4 siblings, 1 reply; 7+ messages in thread
From: Jan Kiszka @ 2020-12-11 6:58 UTC (permalink / raw)
To: Philippe Gerum, xenomai
On 05.12.20 13:00, Philippe Gerum wrote:
> From: Philippe Gerum <rpm@xenomai.org>
>
> This series contains prep work to the addition of a pipeline
> abstraction layer towards Xenomai 3.2 supporting Dovetail, cleaning up
> obsolete code. Based on the -next branch.
>
> Philippe Gerum (4):
> cobalt/arm: disable unlocked context switching
> cobalt/kernel: drop support for preemptible context switching
> cobalt/syscall: use raw_printk() for serial debug output
> cobalt/clock: drop xnclock_get_host_time()
>
> include/cobalt/kernel/clock.h | 2 -
> include/cobalt/kernel/sched.h | 34 ---------------
> include/cobalt/kernel/thread.h | 2 +-
> include/cobalt/uapi/kernel/thread.h | 1 -
> kernel/cobalt/arch/arm/Kconfig | 22 ----------
> kernel/cobalt/clock.c | 6 ---
> kernel/cobalt/posix/syscall.c | 2 +-
> kernel/cobalt/sched.c | 66 ++---------------------------
> kernel/cobalt/thread.c | 23 +---------
> kernel/cobalt/timer.c | 2 +-
> 10 files changed, 7 insertions(+), 153 deletions(-)
>
These changes are a good branching point for stable/v3.1.x. Preparing
that now...
Jan
--
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/4] Dovetail prep work, cleanup series
2020-12-11 6:58 ` [PATCH 0/4] Dovetail prep work, cleanup series Jan Kiszka
@ 2020-12-14 15:47 ` Jan Kiszka
0 siblings, 0 replies; 7+ messages in thread
From: Jan Kiszka @ 2020-12-14 15:47 UTC (permalink / raw)
To: Philippe Gerum, xenomai
On 11.12.20 07:58, Jan Kiszka via Xenomai wrote:
> On 05.12.20 13:00, Philippe Gerum wrote:
>> From: Philippe Gerum <rpm@xenomai.org>
>>
>> This series contains prep work to the addition of a pipeline
>> abstraction layer towards Xenomai 3.2 supporting Dovetail, cleaning up
>> obsolete code. Based on the -next branch.
>>
>> Philippe Gerum (4):
>> cobalt/arm: disable unlocked context switching
>> cobalt/kernel: drop support for preemptible context switching
>> cobalt/syscall: use raw_printk() for serial debug output
>> cobalt/clock: drop xnclock_get_host_time()
>>
>> include/cobalt/kernel/clock.h | 2 -
>> include/cobalt/kernel/sched.h | 34 ---------------
>> include/cobalt/kernel/thread.h | 2 +-
>> include/cobalt/uapi/kernel/thread.h | 1 -
>> kernel/cobalt/arch/arm/Kconfig | 22 ----------
>> kernel/cobalt/clock.c | 6 ---
>> kernel/cobalt/posix/syscall.c | 2 +-
>> kernel/cobalt/sched.c | 66 ++---------------------------
>> kernel/cobalt/thread.c | 23 +---------
>> kernel/cobalt/timer.c | 2 +-
>> 10 files changed, 7 insertions(+), 153 deletions(-)
>>
>
> These changes are a good branching point for stable/v3.1.x. Preparing
> that now...
>
All 4 pushed to next now.
Thanks
Jan
--
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-12-14 15:47 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-05 12:00 [PATCH 0/4] Dovetail prep work, cleanup series Philippe Gerum
2020-12-05 12:00 ` [PATCH 1/4] cobalt/arm: disable unlocked context switching Philippe Gerum
2020-12-05 12:00 ` [PATCH 2/4] cobalt/kernel: drop support for preemptible " Philippe Gerum
2020-12-05 12:00 ` [PATCH 3/4] cobalt/syscall: use raw_printk() for serial debug output Philippe Gerum
2020-12-05 12:00 ` [PATCH 4/4] cobalt/clock: drop xnclock_get_host_time() Philippe Gerum
2020-12-11 6:58 ` [PATCH 0/4] Dovetail prep work, cleanup series Jan Kiszka
2020-12-14 15:47 ` Jan Kiszka
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.