diff options
author | Geoff Levand <geoffrey.levand@am.sony.com> | 2007-10-07 01:35:45 +0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-10-09 15:01:58 +0400 |
commit | 418ef2094eb8b0916d6cbda10e2ab857b9f64d97 (patch) | |
tree | 8073d9d0fa612f0c725db674e7f2556966094983 /arch/powerpc/platforms/ps3/os-area.c | |
parent | 01263e88c3b8c4ec9621062a40b42814e0859e92 (diff) | |
download | linux-418ef2094eb8b0916d6cbda10e2ab857b9f64d97.tar.xz |
[POWERPC] PS3: os-area workqueue processing
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>
Diffstat (limited to 'arch/powerpc/platforms/ps3/os-area.c')
-rw-r--r-- | arch/powerpc/platforms/ps3/os-area.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/ps3/os-area.c b/arch/powerpc/platforms/ps3/os-area.c index f5112248802b..db311a147c28 100644 --- a/arch/powerpc/platforms/ps3/os-area.c +++ b/arch/powerpc/platforms/ps3/os-area.c @@ -20,6 +20,7 @@ #include <linux/kernel.h> #include <linux/io.h> +#include <linux/workqueue.h> #include <asm/lmb.h> @@ -187,6 +188,28 @@ static int __init verify_header(const struct os_area_header *header) } /** + * 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. * * For the convenience of the guest, the HV makes a copy of the os area in |