lkml.org 
[lkml]   [2015]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v4 1/5] mm: cma: add trace events to debug physically-contiguous memory allocations
    Oops... forgot to cc tracing maintainers. Sorry!

    On 16/03/15 19:06, Stefan Strogin wrote:
    > Add trace events for cma_alloc() and cma_release().
    >
    > Signed-off-by: Stefan Strogin <stefan.strogin@gmail.com>
    > ---
    > include/trace/events/cma.h | 57 ++++++++++++++++++++++++++++++++++++++++++++++
    > mm/cma.c | 5 ++++
    > 2 files changed, 62 insertions(+)
    > create mode 100644 include/trace/events/cma.h
    >
    > diff --git a/include/trace/events/cma.h b/include/trace/events/cma.h
    > new file mode 100644
    > index 0000000..d88881b
    > --- /dev/null
    > +++ b/include/trace/events/cma.h
    > @@ -0,0 +1,57 @@
    > +#undef TRACE_SYSTEM
    > +#define TRACE_SYSTEM cma
    > +
    > +#if !defined(_TRACE_CMA_H) || defined(TRACE_HEADER_MULTI_READ)
    > +#define _TRACE_CMA_H
    > +
    > +#include <linux/types.h>
    > +#include <linux/tracepoint.h>
    > +
    > +TRACE_EVENT(cma_alloc,
    > +
    > + TP_PROTO(struct cma *cma, struct page *page, int count),
    > +
    > + TP_ARGS(cma, page, count),
    > +
    > + TP_STRUCT__entry(
    > + __field(struct page *, page)
    > + __field(unsigned long, count)
    > + ),
    > +
    > + TP_fast_assign(
    > + __entry->page = page;
    > + __entry->count = count;
    > + ),
    > +
    > + TP_printk("page=%p pfn=%lu count=%lu",
    > + __entry->page,
    > + __entry->page ? page_to_pfn(__entry->page) : 0,
    > + __entry->count)
    > +);
    > +
    > +TRACE_EVENT(cma_release,
    > +
    > + TP_PROTO(struct cma *cma, unsigned long pfn, int count),
    > +
    > + TP_ARGS(cma, pfn, count),
    > +
    > + TP_STRUCT__entry(
    > + __field(unsigned long, pfn)
    > + __field(unsigned long, count)
    > + ),
    > +
    > + TP_fast_assign(
    > + __entry->pfn = pfn;
    > + __entry->count = count;
    > + ),
    > +
    > + TP_printk("pfn=%lu page=%p count=%lu",
    > + __entry->pfn,
    > + pfn_to_page(__entry->pfn),
    > + __entry->count)
    > +);
    > +
    > +#endif /* _TRACE_CMA_H */
    > +
    > +/* This part must be outside protection */
    > +#include <trace/define_trace.h>
    > diff --git a/mm/cma.c b/mm/cma.c
    > index 47203fa..63dfc0e 100644
    > --- a/mm/cma.c
    > +++ b/mm/cma.c
    > @@ -23,6 +23,7 @@
    > # define DEBUG
    > #endif
    > #endif
    > +#define CREATE_TRACE_POINTS
    >
    > #include <linux/memblock.h>
    > #include <linux/err.h>
    > @@ -34,6 +35,7 @@
    > #include <linux/cma.h>
    > #include <linux/highmem.h>
    > #include <linux/io.h>
    > +#include <trace/events/cma.h>
    >
    > #include "cma.h"
    >
    > @@ -414,6 +416,8 @@ struct page *cma_alloc(struct cma *cma, unsigned int count, unsigned int align)
    > start = bitmap_no + mask + 1;
    > }
    >
    > + trace_cma_alloc(cma, page, count);
    > +
    > pr_debug("%s(): returned %p\n", __func__, page);
    > return page;
    > }
    > @@ -446,6 +450,7 @@ bool cma_release(struct cma *cma, const struct page *pages, unsigned int count)
    >
    > free_contig_range(pfn, count);
    > cma_clear_bitmap(cma, pfn, count);
    > + trace_cma_release(cma, pfn, count);
    >
    > return true;
    > }
    >


    \
     
     \ /
      Last update: 2015-03-16 22:01    [W:3.857 / U:0.384 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site