[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>
This commit is contained in:
committed by
Paul Mackerras
parent
01263e88c3
commit
418ef2094e
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
|
||||||
#include <asm/lmb.h>
|
#include <asm/lmb.h>
|
||||||
|
|
||||||
@@ -186,6 +187,28 @@ static int __init verify_header(const struct os_area_header *header)
|
|||||||
return 0;
|
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.
|
* ps3_os_area_save_params - Copy data from os area mirror to @saved_params.
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user