Revert "temp revert apanice change"

This reverts commit 755c00cd51.
This commit is contained in:
黄涛 2011-08-01 01:49:14 +08:00
parent 41317a69e5
commit a3e3f7d57c

View File

@ -193,8 +193,13 @@ static int apanic_proc_read(char *buffer, char **start, off_t offset,
ctx->mtd->writesize,
&len, ctx->bounce);
#ifdef CONFIG_MTD_RKNAND
if (count > (ctx->mtd->writesize - page_offset))
count = ctx->mtd->writesize - page_offset;
#else
if (page_offset)
count -= page_offset;
#endif
memcpy(buffer, ctx->bounce + page_offset, count);
*start = count;
@ -209,6 +214,11 @@ static int apanic_proc_read(char *buffer, char **start, off_t offset,
static void mtd_panic_erase(void)
{
struct apanic_data *ctx = &drv_ctx;
#ifdef CONFIG_MTD_RKNAND
size_t wlen;
memset(ctx->bounce, 0, ctx->mtd->writesize);
ctx->mtd->write(ctx->mtd, 0, ctx->mtd->writesize, &wlen, ctx->bounce);
#else
struct erase_info erase;
DECLARE_WAITQUEUE(wait, current);
wait_queue_head_t wait_q;
@ -260,6 +270,7 @@ static void mtd_panic_erase(void)
schedule();
remove_wait_queue(&wait_q, &wait);
}
#endif
printk(KERN_DEBUG "apanic: %s partition erased\n",
CONFIG_APANIC_PLABEL);
out:
@ -331,14 +342,18 @@ static void mtd_panic_notify_add(struct mtd_info *mtd)
if (hdr->magic != PANIC_MAGIC) {
printk(KERN_INFO "apanic: No panic data available\n");
#ifndef CONFIG_MTD_RKNAND
mtd_panic_erase();
#endif
return;
}
if (hdr->version != PHDR_VERSION) {
printk(KERN_INFO "apanic: Version mismatch (%d != %d)\n",
hdr->version, PHDR_VERSION);
#ifndef CONFIG_MTD_RKNAND
mtd_panic_erase();
#endif
return;
}
@ -378,8 +393,10 @@ static void mtd_panic_notify_add(struct mtd_info *mtd)
}
}
#ifndef CONFIG_MTD_RKNAND
if (!proc_entry_created)
mtd_panic_erase();
#endif
return;
out_err:
@ -511,7 +528,7 @@ static int apanic(struct notifier_block *this, unsigned long event,
printk(KERN_EMERG "Crash partition in use!\n");
goto out;
}
console_offset = ctx->mtd->writesize;
console_offset = ctx->mtd->erasesize;
/*
* Write out the console