diff options
-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 @@ | |||
20 | 20 | ||
21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/workqueue.h> | ||
23 | 24 | ||
24 | #include <asm/lmb.h> | 25 | #include <asm/lmb.h> |
25 | 26 | ||
@@ -187,6 +188,28 @@ static int __init verify_header(const struct os_area_header *header) | |||
187 | } | 188 | } |
188 | 189 | ||
189 | /** | 190 | /** |
191 | * os_area_queue_work_handler - Asynchronous write handler. | ||
192 | * | ||
193 | * An asynchronous write for flash memory and the device tree. Do not | ||
194 | * call directly, use os_area_queue_work(). | ||
195 | */ | ||
196 | |||
197 | static void os_area_queue_work_handler(struct work_struct *work) | ||
198 | { | ||
199 | pr_debug(" -> %s:%d\n", __func__, __LINE__); | ||
200 | |||
201 | pr_debug(" <- %s:%d\n", __func__, __LINE__); | ||
202 | } | ||
203 | |||
204 | static void os_area_queue_work(void) | ||
205 | { | ||
206 | static DECLARE_WORK(q, os_area_queue_work_handler); | ||
207 | |||
208 | wmb(); | ||
209 | schedule_work(&q); | ||
210 | } | ||
211 | |||
212 | /** | ||
190 | * ps3_os_area_save_params - Copy data from os area mirror to @saved_params. | 213 | * ps3_os_area_save_params - Copy data from os area mirror to @saved_params. |
191 | * | 214 | * |
192 | * For the convenience of the guest, the HV makes a copy of the os area in | 215 | * For the convenience of the guest, the HV makes a copy of the os area in |