Skip to content

Commit

Permalink
m68k/amiga: Fix "debug=mem"
Browse files Browse the repository at this point in the history
`debug=mem' on Amiga has been broken for a while.
early_param() processing is done very/too early, i.e. before
amiga_identify() / amiga_chip_init(), causing amiga_savekmsg_setup() not
to find any Chip RAM.

As we don't plan to free this memory anyway, just steal it from the initial
Chip RAM memory block instead.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
  • Loading branch information
Geert Uytterhoeven committed Jan 23, 2011
1 parent de339e4 commit 5df1abd
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions arch/m68k/amiga/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -610,26 +610,24 @@ static void amiga_mem_console_write(struct console *co, const char *s,

static int __init amiga_savekmsg_setup(char *arg)
{
static struct resource debug_res = { .name = "Debug" };

if (!MACH_IS_AMIGA || strcmp(arg, "mem"))
goto done;
return 0;

if (!AMIGAHW_PRESENT(CHIP_RAM)) {
printk("Warning: no chipram present for debugging\n");
goto done;
if (amiga_chip_size < SAVEKMSG_MAXMEM) {
pr_err("Not enough chipram for debugging\n");
return -ENOMEM;
}

savekmsg = amiga_chip_alloc_res(SAVEKMSG_MAXMEM, &debug_res);
/* Just steal the block, the chipram allocator isn't functional yet */
amiga_chip_size -= SAVEKMSG_MAXMEM;
savekmsg = (void *)ZTWO_VADDR(CHIP_PHYSADDR + amiga_chip_size);
savekmsg->magic1 = SAVEKMSG_MAGIC1;
savekmsg->magic2 = SAVEKMSG_MAGIC2;
savekmsg->magicptr = ZTWO_PADDR(savekmsg);
savekmsg->size = 0;

amiga_console_driver.write = amiga_mem_console_write;
register_console(&amiga_console_driver);

done:
return 0;
}

Expand Down

0 comments on commit 5df1abd

Please sign in to comment.