[POWERPC] PS3: os-area workqueue processing
authorGeoff Levand <geoffrey.levand@am.sony.com>
Sat, 6 Oct 2007 21:35:45 +0000 (07:35 +1000)
committerPaul Mackerras <paulus@samba.org>
Tue, 9 Oct 2007 11:01:58 +0000 (21:01 +1000)
Add a workqueue to the PS3 os-area support.  This is needed to
support writing updates to flash memory and to update the /proc
device tree entries from the timer tick interrupt context.

Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/ps3/os-area.c

index f5112248802bd808b27a5fa6070700c835d5bfc3..db311a147c2815b437475c7a4b1fb8ecc11127f9 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <linux/kernel.h>
 #include <linux/io.h>
+#include <linux/workqueue.h>
 
 #include <asm/lmb.h>
 
@@ -186,6 +187,28 @@ static int __init verify_header(const struct os_area_header *header)
        return 0;
 }
 
+/**
+ * os_area_queue_work_handler - Asynchronous write handler.
+ *
+ * An asynchronous write for flash memory and the device tree.  Do not
+ * call directly, use os_area_queue_work().
+ */
+
+static void os_area_queue_work_handler(struct work_struct *work)
+{
+       pr_debug(" -> %s:%d\n", __func__, __LINE__);
+
+       pr_debug(" <- %s:%d\n", __func__, __LINE__);
+}
+
+static void os_area_queue_work(void)
+{
+       static DECLARE_WORK(q, os_area_queue_work_handler);
+
+       wmb();
+       schedule_work(&q);
+}
+
 /**
  * ps3_os_area_save_params - Copy data from os area mirror to @saved_params.
  *