From 5c1d800a8210a2f6161f272428388b70e6b5044f Mon Sep 17 00:00:00 2001 From: Paul Gortmaker 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 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 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 --- init/main.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/init/main.c b/init/main.c index 36649af..be970e7 100644 --- a/init/main.c +++ b/init/main.c @@ -640,7 +640,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.0.4