avr32: Fix broken pte dump code in do_page_fault()
authorHaavard Skinnemoen <hskinnemoen@atmel.com>
Wed, 13 Feb 2008 11:32:34 +0000 (12:32 +0100)
committerHaavard Skinnemoen <hskinnemoen@atmel.com>
Wed, 13 Feb 2008 13:44:04 +0000 (14:44 +0100)
The per-task page tables only cover the first 2GiB of the address
space. For kernel addresses, we need to do the lookup in init's page
tables.

This is a temporary workaround until we modify the per-task page
tables to cover the whole 4GiB address space.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
arch/avr32/mm/fault.c

index 6560cb18b4e3403e498cb9076ea7025b61cbb2d0..ce4e4296b95467f3e0b715a9ec953398917be8f7 100644 (file)
@@ -189,6 +189,8 @@ no_context:
 
        page = sysreg_read(PTBR);
        printk(KERN_ALERT "ptbr = %08lx", page);
+       if (address >= TASK_SIZE)
+               page = (unsigned long)swapper_pg_dir;
        if (page) {
                page = ((unsigned long *)page)[address >> 22];
                printk(" pgd = %08lx", page);