blob: 228df1568d5883f7ba9f6c69f45dd63e7874a8ce [file] [log] [blame]
From b04af1be28e4f489dbf8dec6069e028af1dc1224 Mon Sep 17 00:00:00 2001
From: Paul Gortmaker <paul.gortmaker@windriver.com>
Date: Sun, 16 Jan 2011 15:37:33 -0500
Subject: [PATCH] locking selftest: add RT workarounds.
In RT space, there are some hoops to jump through to avoid warnings
at boot.
This is one of several extractions from the merge up to 33-rc8.
You can find the origin of this change in the tip merge commit:
commit 5f854cfc024622e4aae14d7cf422f6ff86278688
Merge: cc24da0 4ec62b2
Author: Thomas Gleixner <tglx@linutronix.de>
Date: Sun Feb 21 20:17:22 2010 +0100
Forward to 2.6.33-rc8
Merge branch 'linus' into rt/head with a pile of conflicts.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Normally there are not significant changes/additions in a merge commit that
are not from any other "normal" commit. But in this case there are, so
break them out into separate explicit commits.
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
diff --git a/init/main.c b/init/main.c
index 4445c08..8f95889 100644
--- a/init/main.c
+++ b/init/main.c
@@ -623,7 +623,16 @@ asmlinkage void __init start_kernel(void)
* to self-test [hard/soft]-irqs on/off lock inversion bugs
* too:
*/
- locking_selftest();
+ if (1) {
+ /*
+ * Hack around the fact that locking_selftest() destroys
+ * the lockdep state, so release the one known lock and
+ * acquire it again after the self-test is done.
+ */
+ mutex_release(&kernel_sem.dep_map, 1, _THIS_IP_);
+ locking_selftest();
+ mutex_acquire(&kernel_sem.dep_map, 0, 0, _THIS_IP_);
+ }
#ifdef CONFIG_BLK_DEV_INITRD
if (initrd_start && !initrd_below_start_ok &&
--
1.7.1.1