powerpc: print both base and actual page size on hash failure
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Sun, 28 Apr 2013 09:37:37 +0000 (09:37 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 30 Apr 2013 06:00:22 +0000 (16:00 +1000)
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/mmu-hash64.h
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/hugetlbpage-hash64.c

index 18171a86bff61522c7cd6540f3f650d08c316f26..2accc9611248ff9a36357b9bcc9078f00743af4c 100644 (file)
@@ -342,7 +342,8 @@ int __hash_page_huge(unsigned long ea, unsigned long access, unsigned long vsid,
                     unsigned int shift, unsigned int mmu_psize);
 extern void hash_failure_debug(unsigned long ea, unsigned long access,
                               unsigned long vsid, unsigned long trap,
-                              int ssize, int psize, unsigned long pte);
+                              int ssize, int psize, int lpsize,
+                              unsigned long pte);
 extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
                             unsigned long pstart, unsigned long prot,
                             int psize, int ssize);
index cd75d68a730b59d74cf10ffa0f9803a32b7879c6..5f7a85d40a75b912e430facfbe758ad3c02cf42b 100644 (file)
@@ -936,14 +936,14 @@ static inline int subpage_protection(struct mm_struct *mm, unsigned long ea)
 
 void hash_failure_debug(unsigned long ea, unsigned long access,
                        unsigned long vsid, unsigned long trap,
-                       int ssize, int psize, unsigned long pte)
+                       int ssize, int psize, int lpsize, unsigned long pte)
 {
        if (!printk_ratelimit())
                return;
        pr_info("mm: Hashing failure ! EA=0x%lx access=0x%lx current=%s\n",
                ea, access, current->comm);
-       pr_info("    trap=0x%lx vsid=0x%lx ssize=%d psize=%d pte=0x%lx\n",
-               trap, vsid, ssize, psize, pte);
+       pr_info("    trap=0x%lx vsid=0x%lx ssize=%d base psize=%d psize %d pte=0x%lx\n",
+               trap, vsid, ssize, psize, lpsize, pte);
 }
 
 /* Result code is:
@@ -1116,7 +1116,7 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
         */
        if (rc == -1)
                hash_failure_debug(ea, access, vsid, trap, ssize, psize,
-                                  pte_val(*ptep));
+                                  psize, pte_val(*ptep));
 #ifndef CONFIG_PPC_64K_PAGES
        DBG_LOW(" o-pte: %016lx\n", pte_val(*ptep));
 #else
@@ -1194,7 +1194,9 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
         */
        if (rc == -1)
                hash_failure_debug(ea, access, vsid, trap, ssize,
-                                  mm->context.user_psize, pte_val(*ptep));
+                                  mm->context.user_psize,
+                                  mm->context.user_psize,
+                                  pte_val(*ptep));
 
        local_irq_restore(flags);
 }
index b913f416d97ad70f57f1de149b9f9624f654312a..0f1d94a1fb82328db2605606f8fd0e3e4354fb15 100644 (file)
@@ -110,7 +110,7 @@ int __hash_page_huge(unsigned long ea, unsigned long access, unsigned long vsid,
                if (unlikely(slot == -2)) {
                        *ptep = __pte(old_pte);
                        hash_failure_debug(ea, access, vsid, trap, ssize,
-                                          mmu_psize, old_pte);
+                                          mmu_psize, mmu_psize, old_pte);
                        return -1;
                }
 
This page took 0.032076 seconds and 5 git commands to generate.