Asserts/checks for early RKMSG context
[akaros.git] / kern / src / smp.c
index d9feb93..fd16a42 100644 (file)
@@ -49,6 +49,8 @@ static void try_run_proc(void)
  * tell it to do something else, or perhaps to halt in another manner. */
 static void __attribute__((noinline, noreturn)) __smp_idle(void)
 {
+       struct per_cpu_info *pcpui = &per_cpu_info[core_id()];
+       clear_rkmsg(pcpui);
        /* TODO: idle, abandon_core(), and proc_restartcore() need cleaned up */
        enable_irq();   /* get any IRQs before we halt later */
        try_run_proc();
@@ -85,6 +87,8 @@ void smp_idle(void)
 void smp_percpu_init(void)
 {
        uint32_t coreid = core_id();
+       /* Don't initialize __ctx_depth here, since it is already 1 (at least on
+        * x86), since this runs in irq context. */
        /* Do this first */
        __arch_pcpu_init(coreid);
        per_cpu_info[coreid].spare = 0;