Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Apr 2026 21:42:43 +0000
From:      Jean-=?utf-8?Q?S=C3=A9bast?==?utf-8?Q?ien P=C3=A9?=dron <dumbbell@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: a95ef6503cc2 - stable/15 - linuxkpi: Define diagnostic macros like `might_resched()` or `cant_sleep()`
Message-ID:  <69f27b53.19029.10bb4ea3@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch stable/15 has been updated by dumbbell:

URL: https://cgit.FreeBSD.org/src/commit/?id=a95ef6503cc2adb2ad69f9a2d09bdd8e40ae64b9

commit a95ef6503cc2adb2ad69f9a2d09bdd8e40ae64b9
Author:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
AuthorDate: 2026-04-11 09:37:05 +0000
Commit:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
CommitDate: 2026-04-29 20:59:19 +0000

    linuxkpi: Define diagnostic macros like `might_resched()` or `cant_sleep()`
    
    They are no-ops on FreeBSD.
    
    While here, move the already defined `might_sleep*()` macros from
    <linux/wait.h> to <linux/kernel.h> where they belong.
    
    The DRM generic code started to use `might_fault()` in Linux 6.12.
    
    Reviewed by:    bz
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit ad528a6b174e7090cb06062867e9a146b017205d)
---
 sys/compat/linuxkpi/common/include/linux/kernel.h | 33 +++++++++++++++++++++++
 sys/compat/linuxkpi/common/include/linux/wait.h   |  7 -----
 2 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/kernel.h b/sys/compat/linuxkpi/common/include/linux/kernel.h
index 2430b25c6915..e3ac4a05612c 100644
--- a/sys/compat/linuxkpi/common/include/linux/kernel.h
+++ b/sys/compat/linuxkpi/common/include/linux/kernel.h
@@ -351,4 +351,37 @@ mac_pton(const char *macin, uint8_t *macout)
 #define	DECLARE_FLEX_ARRAY(_t, _n)					\
     struct { struct { } __dummy_ ## _n; _t _n[0]; }
 
+/*
+ * The following functions/macros are debug/diagnostics tools. They default to
+ * no-ops, except `might_sleep()` which uses `WITNESS_WARN()` on FreeBSD.
+ */
+static inline void
+__might_resched(const char *file, int line, unsigned int offsets)
+{
+}
+
+static inline void
+__might_sleep(const char *file, int line)
+{
+}
+
+static inline void
+might_fault(void)
+{
+}
+
+#define	might_sleep()							\
+	WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "might_sleep()")
+
+#define	might_sleep_if(cond) do { \
+	if (cond) { might_sleep(); } \
+} while (0)
+
+#define	might_resched()		do { } while (0)
+#define	cant_sleep()		do { } while (0)
+#define	cant_migrate()		do { } while (0)
+#define	sched_annotate_sleep()	do { } while (0)
+#define	non_block_start()	do { } while (0)
+#define	non_block_end()		do { } while (0)
+
 #endif	/* _LINUXKPI_LINUX_KERNEL_H_ */
diff --git a/sys/compat/linuxkpi/common/include/linux/wait.h b/sys/compat/linuxkpi/common/include/linux/wait.h
index 03ddce2c06f5..698a1056b713 100644
--- a/sys/compat/linuxkpi/common/include/linux/wait.h
+++ b/sys/compat/linuxkpi/common/include/linux/wait.h
@@ -43,13 +43,6 @@
 
 #define	SKIP_SLEEP() (SCHEDULER_STOPPED() || kdb_active)
 
-#define	might_sleep()							\
-	WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "might_sleep()")
-
-#define	might_sleep_if(cond) do { \
-	if (cond) { might_sleep(); } \
-} while (0)
-
 struct wait_queue;
 struct wait_queue_head;
 


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f27b53.19029.10bb4ea3>