Commit 32019828 authored by Haavard Skinnemoen's avatar Haavard Skinnemoen

avr32: Fix broken pte dump code in do_page_fault()

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: default avatarHaavard Skinnemoen <hskinnemoen@atmel.com>
parent e48a411f
...@@ -189,6 +189,8 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs) ...@@ -189,6 +189,8 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
page = sysreg_read(PTBR); page = sysreg_read(PTBR);
printk(KERN_ALERT "ptbr = %08lx", page); printk(KERN_ALERT "ptbr = %08lx", page);
if (address >= TASK_SIZE)
page = (unsigned long)swapper_pg_dir;
if (page) { if (page) {
page = ((unsigned long *)page)[address >> 22]; page = ((unsigned long *)page)[address >> 22];
printk(" pgd = %08lx", page); printk(" pgd = %08lx", page);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment