summaryrefslogtreecommitdiff
path: root/meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0028-fastboot-sync-the-async-execution-before-late_initc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0028-fastboot-sync-the-async-execution-before-late_initc.patch')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0028-fastboot-sync-the-async-execution-before-late_initc.patch95
1 files changed, 0 insertions, 95 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0028-fastboot-sync-the-async-execution-before-late_initc.patch b/meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0028-fastboot-sync-the-async-execution-before-late_initc.patch
deleted file mode 100644
index 0700fb318..000000000
--- a/meta-moblin/packages/linux/linux-moblin-2.6.27-rc6/0028-fastboot-sync-the-async-execution-before-late_initc.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 660625fb93f2fc0e633da9cb71d13d895b385f64 Mon Sep 17 00:00:00 2001
-From: Arjan van de Ven <arjan@linux.intel.com>
-Date: Sun, 20 Jul 2008 09:00:41 -0700
-Subject: [PATCH] fastboot: sync the async execution before late_initcall and move level 6s (sync) first
-
-Rene Herman points out several cases where it's basically needed to have
-all level 6/6a/6s calls done before the level 7 (late_initcall) code
-runs. This patch adds a sync point in the transition from the 6's to the
-7's.
-
-Second, this patch makes sure that level 6s (sync) happens before the
-async code starts, and puts a user in driver/pci in this category that
-needs to happen before device init.
-
-Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
-Signed-off-by: Ingo Molnar <mingo@elte.hu>
----
- drivers/pci/pci.c | 2 +-
- include/asm-generic/vmlinux.lds.h | 3 ++-
- init/main.c | 14 +++++++++++++-
- 3 files changed, 16 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
-index 44a46c9..d75295d 100644
---- a/drivers/pci/pci.c
-+++ b/drivers/pci/pci.c
-@@ -1889,7 +1889,7 @@ static int __devinit pci_setup(char *str)
- }
- early_param("pci", pci_setup);
-
--device_initcall(pci_init);
-+device_initcall_sync(pci_init);
-
- EXPORT_SYMBOL(pci_reenable_device);
- EXPORT_SYMBOL(pci_enable_device_io);
-diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
-index 39c1afc..020c641 100644
---- a/include/asm-generic/vmlinux.lds.h
-+++ b/include/asm-generic/vmlinux.lds.h
-@@ -372,11 +372,12 @@
- *(.initcall5.init) \
- *(.initcall5s.init) \
- *(.initcallrootfs.init) \
-+ *(.initcall6s.init) \
- __async_initcall_start = .; \
- *(.initcall6a.init) \
- __async_initcall_end = .; \
- *(.initcall6.init) \
-- *(.initcall6s.init) \
-+ __device_initcall_end = .; \
- *(.initcall7.init) \
- *(.initcall7s.init)
-
-diff --git a/init/main.c b/init/main.c
-index 9e2aee8..6be1756 100644
---- a/init/main.c
-+++ b/init/main.c
-@@ -739,6 +739,7 @@ static void __init do_one_initcall(initcall_t fn)
-
- extern initcall_t __initcall_start[], __initcall_end[];
- extern initcall_t __async_initcall_start[], __async_initcall_end[];
-+extern initcall_t __device_initcall_end[];
-
- static void __init do_async_initcalls(struct work_struct *dummy)
- {
-@@ -762,7 +763,13 @@ static void __init do_initcalls(void)
- {
- initcall_t *call;
- static DECLARE_WORK(async_work, do_async_initcalls);
-- int phase = 0; /* 0 = levels 0 - 6, 1 = level 6a, 2 = after level 6a */
-+ /*
-+ * 0 = levels 0 - 6,
-+ * 1 = level 6a,
-+ * 2 = after level 6a,
-+ * 3 = after level 6
-+ */
-+ int phase = 0;
-
- async_init_wq = create_singlethread_workqueue("kasyncinit");
-
-@@ -773,6 +780,11 @@ static void __init do_initcalls(void)
- }
- if (phase == 1 && call >= __async_initcall_end)
- phase = 2;
-+ if (phase == 2 && call >= __device_initcall_end) {
-+ phase = 3;
-+ /* make sure all async work is done before level 7 */
-+ flush_workqueue(async_init_wq);
-+ }
- if (phase != 1)
- do_one_initcall(*call);
- }
---
-1.5.4.3
-