[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <158223005640.13786.3830245021041569703.tip-bot2@tip-bot2>
Date: Thu, 20 Feb 2020 20:20:56 -0000
From: "tip-bot2 for Thomas Gleixner" <tip-bot2@...utronix.de>
To: linux-tip-commits@...r.kernel.org
Cc: Thomas Gleixner <tglx@...utronix.de>, x86 <x86@...nel.org>,
LKML <linux-kernel@...r.kernel.org>
Subject: [tip: sched/rt] sched: Provide cant_migrate()
The following commit has been merged into the sched/rt branch of tip:
Commit-ID: 4e139c7711633365ebb52fbb63905395522a8413
Gitweb: https://git.kernel.org/tip/4e139c7711633365ebb52fbb63905395522a8413
Author: Thomas Gleixner <tglx@...utronix.de>
AuthorDate: Fri, 14 Feb 2020 14:39:19 +01:00
Committer: Thomas Gleixner <tglx@...utronix.de>
CommitterDate: Thu, 20 Feb 2020 21:17:24 +01:00
sched: Provide cant_migrate()
Some code pathes rely on preempt_disable() to prevent migration on a non RT
enabled kernel. These preempt_disable/enable() pairs are substituted by
migrate_disable/enable() pairs or other forms of RT specific protection. On
RT these protections prevent migration but not preemption. Obviously a
cant_sleep() check in such a section will trigger on RT because preemption
is not disabled.
Provide a cant_migrate() macro which maps to cant_sleep() on a non RT
kernel and an empty placeholder for RT for now. The placeholder will be
changed to a proper debug check along with the RT specific migration
protection mechanism.
Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
Link: https://lkml.kernel.org/r/20200214161503.070487511@linutronix.de
---
include/linux/kernel.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 0d9db2a..9b7a8d7 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -257,6 +257,13 @@ extern void __cant_sleep(const char *file, int line, int preempt_offset);
#define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
+#ifndef CONFIG_PREEMPT_RT
+# define cant_migrate() cant_sleep()
+#else
+ /* Placeholder for now */
+# define cant_migrate() do { } while (0)
+#endif
+
/**
* abs - return absolute value of an argument
* @x: the value. If it is unsigned type, it is converted to signed type first.
Powered by blists - more mailing lists