From 2f529f9b558ca1c1bd74be7437a84e4711743404 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 01 Nov 2024 02:11:33 +0000 Subject: [PATCH] add xenomai --- kernel/fs/exec.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/kernel/fs/exec.c b/kernel/fs/exec.c index b798885..30f75c0 100644 --- a/kernel/fs/exec.c +++ b/kernel/fs/exec.c @@ -34,6 +34,7 @@ #include <linux/swap.h> #include <linux/string.h> #include <linux/init.h> +#include <linux/irq_pipeline.h> #include <linux/sched/mm.h> #include <linux/sched/coredump.h> #include <linux/sched/signal.h> @@ -68,6 +69,7 @@ #include <linux/uaccess.h> #include <asm/mmu_context.h> #include <asm/tlb.h> +#include <asm/dovetail.h> #include <trace/events/task.h> #include "internal.h" @@ -981,6 +983,7 @@ struct task_struct *tsk; struct mm_struct *old_mm, *active_mm; int ret; + unsigned long flags; /* Notify parent that we're no longer interested in the old VM */ tsk = current; @@ -1013,6 +1016,7 @@ local_irq_disable(); active_mm = tsk->active_mm; + protect_inband_mm(flags); tsk->active_mm = mm; tsk->mm = mm; /* @@ -1021,10 +1025,17 @@ * lazy tlb mm refcounting when these are updated by context * switches. Not all architectures can handle irqs off over * activate_mm yet. + * + * irq_pipeline: activate_mm() allowing irqs off context is a + * requirement. e.g. TLB shootdown must not involve IPIs. We + * make sure protect_inband_mm() is in effect while switching + * in and activating the new mm by forcing + * CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM on. */ if (!IS_ENABLED(CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM)) local_irq_enable(); activate_mm(active_mm, mm); + unprotect_inband_mm(flags); if (IS_ENABLED(CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM)) local_irq_enable(); tsk->mm->vmacache_seqnum = 0; @@ -1302,6 +1313,9 @@ if (retval) goto out_unlock; + /* Tell Dovetail about the ongoing exec(). */ + arch_dovetail_exec_prepare(); + /* * Ensure that the uaccess routines can actually operate on userspace * pointers: -- Gitblit v1.6.2