]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
powerpc/64s/ptdump: Fix kernel_hash_pagetable dump for ISA v3.00 HPTE format
authorRitesh Harjani (IBM) <ritesh.list@gmail.com>
Thu, 30 Oct 2025 14:57:28 +0000 (20:27 +0530)
committerMadhavan Srinivasan <maddy@linux.ibm.com>
Tue, 18 Nov 2025 07:05:52 +0000 (12:35 +0530)
HPTE format was changed since Power9 (ISA 3.0) onwards. While dumping
kernel hash page tables, nothing gets printed on powernv P9+. This patch
utilizes the helpers added in the patch tagged as fixes, to convert new
format to old format and dump the hptes. This fix is only needed for
native_find() (powernv), since pseries continues to work fine with the
old format.

Fixes: 6b243fcfb5f1e ("powerpc/64: Simplify adaptation to new ISA v3.00 HPTE format")
Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/4c2bb9e5b3cfbc0dd80b61b67cdd3ccfc632684c.1761834163.git.ritesh.list@gmail.com
arch/powerpc/mm/ptdump/hashpagetable.c

index a6baa6166d940132ffe8fad2d3c0cd05dff80c9a..671d0dc00c6d074b736dc72363bad485d27c6156 100644 (file)
@@ -216,6 +216,8 @@ static int native_find(unsigned long ea, int psize, bool primary, u64 *v, u64
        vpn  = hpt_vpn(ea, vsid, ssize);
        hash = hpt_hash(vpn, shift, ssize);
        want_v = hpte_encode_avpn(vpn, psize, ssize);
+       if (cpu_has_feature(CPU_FTR_ARCH_300))
+               want_v = hpte_old_to_new_v(want_v);
 
        /* to check in the secondary hash table, we invert the hash */
        if (!primary)
@@ -229,6 +231,10 @@ static int native_find(unsigned long ea, int psize, bool primary, u64 *v, u64
                        /* HPTE matches */
                        *v = be64_to_cpu(hptep->v);
                        *r = be64_to_cpu(hptep->r);
+                       if (cpu_has_feature(CPU_FTR_ARCH_300)) {
+                               *v = hpte_new_to_old_v(*v, *r);
+                               *r = hpte_new_to_old_r(*r);
+                       }
                        return 0;
                }
                ++hpte_group;