diff options
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/fault.c | 17 | ||||
-rw-r--r-- | arch/powerpc/mm/hash_utils_64.c | 10 | ||||
-rw-r--r-- | arch/powerpc/mm/init_64.c | 1 | ||||
-rw-r--r-- | arch/powerpc/mm/mem.c | 2 | ||||
-rw-r--r-- | arch/powerpc/mm/numa.c | 1 | ||||
-rw-r--r-- | arch/powerpc/mm/pgtable_64.c | 1 |
6 files changed, 22 insertions, 10 deletions
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 841d8b6323a8..93d4fbfdb724 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -389,5 +389,22 @@ void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig) | |||
389 | } | 389 | } |
390 | 390 | ||
391 | /* kernel has accessed a bad area */ | 391 | /* kernel has accessed a bad area */ |
392 | |||
393 | printk(KERN_ALERT "Unable to handle kernel paging request for "); | ||
394 | switch (regs->trap) { | ||
395 | case 0x300: | ||
396 | case 0x380: | ||
397 | printk("data at address 0x%08lx\n", regs->dar); | ||
398 | break; | ||
399 | case 0x400: | ||
400 | case 0x480: | ||
401 | printk("instruction fetch\n"); | ||
402 | break; | ||
403 | default: | ||
404 | printk("unknown fault\n"); | ||
405 | } | ||
406 | printk(KERN_ALERT "Faulting instruction address: 0x%08lx\n", | ||
407 | regs->nip); | ||
408 | |||
392 | die("Kernel access of bad area", regs, sig); | 409 | die("Kernel access of bad area", regs, sig); |
393 | } | 410 | } |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index f15dfb92dec0..22e474876133 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/init.h> | 33 | #include <linux/init.h> |
34 | #include <linux/signal.h> | 34 | #include <linux/signal.h> |
35 | 35 | ||
36 | #include <asm/ppcdebug.h> | ||
37 | #include <asm/processor.h> | 36 | #include <asm/processor.h> |
38 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
39 | #include <asm/mmu.h> | 38 | #include <asm/mmu.h> |
@@ -409,12 +408,6 @@ void __init htab_initialize(void) | |||
409 | htab_size_bytes = htab_get_table_size(); | 408 | htab_size_bytes = htab_get_table_size(); |
410 | pteg_count = htab_size_bytes >> 7; | 409 | pteg_count = htab_size_bytes >> 7; |
411 | 410 | ||
412 | /* For debug, make the HTAB 1/8 as big as it normally would be. */ | ||
413 | ifppcdebug(PPCDBG_HTABSIZE) { | ||
414 | pteg_count >>= 3; | ||
415 | htab_size_bytes = pteg_count << 7; | ||
416 | } | ||
417 | |||
418 | htab_hash_mask = pteg_count - 1; | 411 | htab_hash_mask = pteg_count - 1; |
419 | 412 | ||
420 | if (systemcfg->platform & PLATFORM_LPAR) { | 413 | if (systemcfg->platform & PLATFORM_LPAR) { |
@@ -514,6 +507,9 @@ unsigned int hash_page_do_lazy_icache(unsigned int pp, pte_t pte, int trap) | |||
514 | { | 507 | { |
515 | struct page *page; | 508 | struct page *page; |
516 | 509 | ||
510 | if (!pfn_valid(pte_pfn(pte))) | ||
511 | return pp; | ||
512 | |||
517 | page = pte_page(pte); | 513 | page = pte_page(pte); |
518 | 514 | ||
519 | /* page is dirty */ | 515 | /* page is dirty */ |
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index dfe7fa37b41a..ce974c83d88a 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -57,7 +57,6 @@ | |||
57 | #include <asm/processor.h> | 57 | #include <asm/processor.h> |
58 | #include <asm/mmzone.h> | 58 | #include <asm/mmzone.h> |
59 | #include <asm/cputable.h> | 59 | #include <asm/cputable.h> |
60 | #include <asm/ppcdebug.h> | ||
61 | #include <asm/sections.h> | 60 | #include <asm/sections.h> |
62 | #include <asm/system.h> | 61 | #include <asm/system.h> |
63 | #include <asm/iommu.h> | 62 | #include <asm/iommu.h> |
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 7faa46b71f21..6f55efd9be95 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -358,7 +358,7 @@ void __init mem_init(void) | |||
358 | } | 358 | } |
359 | 359 | ||
360 | codesize = (unsigned long)&_sdata - (unsigned long)&_stext; | 360 | codesize = (unsigned long)&_sdata - (unsigned long)&_stext; |
361 | datasize = (unsigned long)&__init_begin - (unsigned long)&_sdata; | 361 | datasize = (unsigned long)&_edata - (unsigned long)&_sdata; |
362 | initsize = (unsigned long)&__init_end - (unsigned long)&__init_begin; | 362 | initsize = (unsigned long)&__init_end - (unsigned long)&__init_begin; |
363 | bsssize = (unsigned long)&__bss_stop - (unsigned long)&__bss_start; | 363 | bsssize = (unsigned long)&__bss_stop - (unsigned long)&__bss_start; |
364 | 364 | ||
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index 4035cad8d7f1..da09ba03c424 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <asm/machdep.h> | 21 | #include <asm/machdep.h> |
22 | #include <asm/abs_addr.h> | 22 | #include <asm/abs_addr.h> |
23 | #include <asm/system.h> | 23 | #include <asm/system.h> |
24 | #include <asm/smp.h> | ||
24 | 25 | ||
25 | static int numa_enabled = 1; | 26 | static int numa_enabled = 1; |
26 | 27 | ||
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c index 51b786940971..900842451bd3 100644 --- a/arch/powerpc/mm/pgtable_64.c +++ b/arch/powerpc/mm/pgtable_64.c | |||
@@ -59,7 +59,6 @@ | |||
59 | #include <asm/processor.h> | 59 | #include <asm/processor.h> |
60 | #include <asm/mmzone.h> | 60 | #include <asm/mmzone.h> |
61 | #include <asm/cputable.h> | 61 | #include <asm/cputable.h> |
62 | #include <asm/ppcdebug.h> | ||
63 | #include <asm/sections.h> | 62 | #include <asm/sections.h> |
64 | #include <asm/system.h> | 63 | #include <asm/system.h> |
65 | #include <asm/iommu.h> | 64 | #include <asm/iommu.h> |