diff options
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.27/0027-fastboot-hold-the-BKL-over-the-async-init-call-sequ.patch')
-rw-r--r-- | meta-moblin/packages/linux/linux-moblin-2.6.27/0027-fastboot-hold-the-BKL-over-the-async-init-call-sequ.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.27/0027-fastboot-hold-the-BKL-over-the-async-init-call-sequ.patch b/meta-moblin/packages/linux/linux-moblin-2.6.27/0027-fastboot-hold-the-BKL-over-the-async-init-call-sequ.patch new file mode 100644 index 0000000000..11fb34dd91 --- /dev/null +++ b/meta-moblin/packages/linux/linux-moblin-2.6.27/0027-fastboot-hold-the-BKL-over-the-async-init-call-sequ.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From 3e6558b693dd1e69e3177bc248977f067a769f14 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Sun, 20 Jul 2008 08:59:24 -0700 | ||
4 | Subject: [PATCH] fastboot: hold the BKL over the async init call sequence | ||
5 | |||
6 | Regular init calls are called with the BKL held; make sure | ||
7 | the async init calls are also called with the BKL held. | ||
8 | While this reduces parallelism a little, it does provide | ||
9 | lock-for-lock compatibility. The hit to prallelism isn't too | ||
10 | bad, most of the init calls are done immediately or actually | ||
11 | block for their delays. | ||
12 | |||
13 | Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> | ||
14 | Signed-off-by: Ingo Molnar <mingo@elte.hu> | ||
15 | --- | ||
16 | init/main.c | 6 ++++++ | ||
17 | 1 file changed, 6 insertions(+) | ||
18 | |||
19 | Index: linux-2.6.27/init/main.c | ||
20 | =================================================================== | ||
21 | --- linux-2.6.27.orig/init/main.c 2008-10-14 17:00:59.000000000 +0200 | ||
22 | +++ linux-2.6.27/init/main.c 2008-10-14 17:01:38.000000000 +0200 | ||
23 | @@ -751,8 +751,14 @@ static void __init do_async_initcalls(st | ||
24 | { | ||
25 | initcall_t *call; | ||
26 | |||
27 | + /* | ||
28 | + * For compatibility with normal init calls... take the BKL | ||
29 | + * not pretty, not desirable, but compatibility first | ||
30 | + */ | ||
31 | + lock_kernel(); | ||
32 | for (call = __async_initcall_start; call < __async_initcall_end; call++) | ||
33 | do_one_initcall(*call); | ||
34 | + unlock_kernel(); | ||
35 | } | ||
36 | |||
37 | static struct workqueue_struct *async_init_wq; | ||