]> www.infradead.org Git - users/hch/dma-mapping.git/commitdiff
mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point
authorYang Shi <yang@os.amperecomputing.com>
Sat, 12 Oct 2024 01:17:02 +0000 (18:17 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 17 Oct 2024 07:28:09 +0000 (00:28 -0700)
The "addr" and "is_shmem" arguments have different order in TP_PROTO and
TP_ARGS.  This resulted in the incorrect trace result:

text-hugepage-644429 [276] 392092.878683: mm_khugepaged_collapse_file:
mm=0xffff20025d52c440, hpage_pfn=0x200678c00, index=512, addr=1, is_shmem=0,
filename=text-hugepage, nr=512, result=failed

The value of "addr" is wrong because it was treated as bool value, the
type of is_shmem.

Fix the order in TP_PROTO to keep "addr" is before "is_shmem" since the
original patch review suggested this order to achieve best packing.

And use "lx" for "addr" instead of "ld" in TP_printk because address is
typically shown in hex.

After the fix, the trace result looks correct:

text-hugepage-7291  [004]   128.627251: mm_khugepaged_collapse_file:
mm=0xffff0001328f9500, hpage_pfn=0x20016ea00, index=512, addr=0x400000,
is_shmem=0, filename=text-hugepage, nr=512, result=failed

Link: https://lkml.kernel.org/r/20241012011702.1084846-1-yang@os.amperecomputing.com
Fixes: 4c9473e87e75 ("mm/khugepaged: add tracepoint to collapse_file()")
Signed-off-by: Yang Shi <yang@os.amperecomputing.com>
Cc: Gautam Menghani <gautammenghani201@gmail.com>
Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
Cc: <stable@vger.kernel.org> [6.2+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/trace/events/huge_memory.h
mm/khugepaged.c

index b5f5369b63009fd03d395027b40b1e0b867697b6..9d5c00b0285c3483d4aefde12fb24172678e9381 100644 (file)
@@ -208,7 +208,7 @@ TRACE_EVENT(mm_khugepaged_scan_file,
 
 TRACE_EVENT(mm_khugepaged_collapse_file,
        TP_PROTO(struct mm_struct *mm, struct folio *new_folio, pgoff_t index,
-                       bool is_shmem, unsigned long addr, struct file *file,
+                       unsigned long addr, bool is_shmem, struct file *file,
                        int nr, int result),
        TP_ARGS(mm, new_folio, index, addr, is_shmem, file, nr, result),
        TP_STRUCT__entry(
@@ -233,7 +233,7 @@ TRACE_EVENT(mm_khugepaged_collapse_file,
                __entry->result = result;
        ),
 
-       TP_printk("mm=%p, hpage_pfn=0x%lx, index=%ld, addr=%ld, is_shmem=%d, filename=%s, nr=%d, result=%s",
+       TP_printk("mm=%p, hpage_pfn=0x%lx, index=%ld, addr=%lx, is_shmem=%d, filename=%s, nr=%d, result=%s",
                __entry->mm,
                __entry->hpfn,
                __entry->index,
index f9c39898eaff6563a4aae6274b2cc7fdb5dc22d0..a420eff92011e878da441d92299bb9b9e1457c52 100644 (file)
@@ -2227,7 +2227,7 @@ rollback:
        folio_put(new_folio);
 out:
        VM_BUG_ON(!list_empty(&pagelist));
-       trace_mm_khugepaged_collapse_file(mm, new_folio, index, is_shmem, addr, file, HPAGE_PMD_NR, result);
+       trace_mm_khugepaged_collapse_file(mm, new_folio, index, addr, is_shmem, file, HPAGE_PMD_NR, result);
        return result;
 }