38 lines
1.3 KiB
Diff
38 lines
1.3 KiB
Diff
From 3e6558b693dd1e69e3177bc248977f067a769f14 Mon Sep 17 00:00:00 2001
|
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
|
Date: Sun, 20 Jul 2008 08:59:24 -0700
|
|
Subject: [PATCH] fastboot: hold the BKL over the async init call sequence
|
|
|
|
Regular init calls are called with the BKL held; make sure
|
|
the async init calls are also called with the BKL held.
|
|
While this reduces parallelism a little, it does provide
|
|
lock-for-lock compatibility. The hit to prallelism isn't too
|
|
bad, most of the init calls are done immediately or actually
|
|
block for their delays.
|
|
|
|
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
|
|
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
|
---
|
|
init/main.c | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
Index: linux-2.6.27/init/main.c
|
|
===================================================================
|
|
--- linux-2.6.27.orig/init/main.c 2008-10-14 17:00:59.000000000 +0200
|
|
+++ linux-2.6.27/init/main.c 2008-10-14 17:01:38.000000000 +0200
|
|
@@ -751,8 +751,14 @@ static void __init do_async_initcalls(st
|
|
{
|
|
initcall_t *call;
|
|
|
|
+ /*
|
|
+ * For compatibility with normal init calls... take the BKL
|
|
+ * not pretty, not desirable, but compatibility first
|
|
+ */
|
|
+ lock_kernel();
|
|
for (call = __async_initcall_start; call < __async_initcall_end; call++)
|
|
do_one_initcall(*call);
|
|
+ unlock_kernel();
|
|
}
|
|
|
|
static struct workqueue_struct *async_init_wq;
|