Loading drivers/mtd/mtdoops.c +21 −5 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <linux/workqueue.h> #include <linux/sched.h> #include <linux/wait.h> #include <linux/delay.h> #include <linux/spinlock.h> #include <linux/mtd/mtd.h> Loading Loading @@ -183,10 +184,8 @@ static void mtdoops_workfunc_erase(struct work_struct *work) goto badblock; } static void mtdoops_workfunc_write(struct work_struct *work) static void mtdoops_write(struct mtdoops_context *cxt, int panic) { struct mtdoops_context *cxt = container_of(work, struct mtdoops_context, work_write); struct mtd_info *mtd = cxt->mtd; size_t retlen; int ret; Loading @@ -195,6 +194,10 @@ static void mtdoops_workfunc_write(struct work_struct *work) memset(cxt->oops_buf + cxt->writecount, 0xff, OOPS_PAGE_SIZE - cxt->writecount); if (panic) ret = mtd->panic_write(mtd, cxt->nextpage * OOPS_PAGE_SIZE, OOPS_PAGE_SIZE, &retlen, cxt->oops_buf); else ret = mtd->write(mtd, cxt->nextpage * OOPS_PAGE_SIZE, OOPS_PAGE_SIZE, &retlen, cxt->oops_buf); Loading @@ -207,6 +210,15 @@ static void mtdoops_workfunc_write(struct work_struct *work) mtdoops_inc_counter(cxt); } static void mtdoops_workfunc_write(struct work_struct *work) { struct mtdoops_context *cxt = container_of(work, struct mtdoops_context, work_write); mtdoops_write(cxt, 0); } static void find_next_position(struct mtdoops_context *cxt) { struct mtd_info *mtd = cxt->mtd; Loading Loading @@ -314,6 +326,10 @@ static void mtdoops_console_sync(void) cxt->ready = 0; spin_unlock_irqrestore(&cxt->writecount_lock, flags); if (mtd->panic_write && in_interrupt()) /* Interrupt context, we're going to panic so try and log */ mtdoops_write(cxt, 1); else schedule_work(&cxt->work_write); } Loading Loading
drivers/mtd/mtdoops.c +21 −5 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <linux/workqueue.h> #include <linux/sched.h> #include <linux/wait.h> #include <linux/delay.h> #include <linux/spinlock.h> #include <linux/mtd/mtd.h> Loading Loading @@ -183,10 +184,8 @@ static void mtdoops_workfunc_erase(struct work_struct *work) goto badblock; } static void mtdoops_workfunc_write(struct work_struct *work) static void mtdoops_write(struct mtdoops_context *cxt, int panic) { struct mtdoops_context *cxt = container_of(work, struct mtdoops_context, work_write); struct mtd_info *mtd = cxt->mtd; size_t retlen; int ret; Loading @@ -195,6 +194,10 @@ static void mtdoops_workfunc_write(struct work_struct *work) memset(cxt->oops_buf + cxt->writecount, 0xff, OOPS_PAGE_SIZE - cxt->writecount); if (panic) ret = mtd->panic_write(mtd, cxt->nextpage * OOPS_PAGE_SIZE, OOPS_PAGE_SIZE, &retlen, cxt->oops_buf); else ret = mtd->write(mtd, cxt->nextpage * OOPS_PAGE_SIZE, OOPS_PAGE_SIZE, &retlen, cxt->oops_buf); Loading @@ -207,6 +210,15 @@ static void mtdoops_workfunc_write(struct work_struct *work) mtdoops_inc_counter(cxt); } static void mtdoops_workfunc_write(struct work_struct *work) { struct mtdoops_context *cxt = container_of(work, struct mtdoops_context, work_write); mtdoops_write(cxt, 0); } static void find_next_position(struct mtdoops_context *cxt) { struct mtd_info *mtd = cxt->mtd; Loading Loading @@ -314,6 +326,10 @@ static void mtdoops_console_sync(void) cxt->ready = 0; spin_unlock_irqrestore(&cxt->writecount_lock, flags); if (mtd->panic_write && in_interrupt()) /* Interrupt context, we're going to panic so try and log */ mtdoops_write(cxt, 1); else schedule_work(&cxt->work_write); } Loading