diff options
author | Stefan Strogin <s.strogin@partner.samsung.com> | 2015-04-15 19:14:50 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-15 19:35:19 -0400 |
commit | 99e8ea6cd2210cf2271f922384b483cd83f0f8f3 (patch) | |
tree | 78a467028c10e54cf24ed0062e5abdf52b1f63b1 /mm | |
parent | cdd7875e0c4db5c41e28b645d3bf7d41bd2cbb45 (diff) |
mm: cma: add trace events for CMA allocations and freeings
Add trace events for cma_alloc() and cma_release().
The cma_alloc tracepoint is used both for successful and failed allocations,
in case of allocation failure pfn=-1UL is stored and printed.
Signed-off-by: Stefan Strogin <stefan.strogin@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Michal Nazarewicz <mpn@google.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: Thierry Reding <treding@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/cma.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -23,6 +23,7 @@ | |||
23 | # define DEBUG | 23 | # define DEBUG |
24 | #endif | 24 | #endif |
25 | #endif | 25 | #endif |
26 | #define CREATE_TRACE_POINTS | ||
26 | 27 | ||
27 | #include <linux/memblock.h> | 28 | #include <linux/memblock.h> |
28 | #include <linux/err.h> | 29 | #include <linux/err.h> |
@@ -34,6 +35,7 @@ | |||
34 | #include <linux/cma.h> | 35 | #include <linux/cma.h> |
35 | #include <linux/highmem.h> | 36 | #include <linux/highmem.h> |
36 | #include <linux/io.h> | 37 | #include <linux/io.h> |
38 | #include <trace/events/cma.h> | ||
37 | 39 | ||
38 | #include "cma.h" | 40 | #include "cma.h" |
39 | 41 | ||
@@ -414,6 +416,8 @@ struct page *cma_alloc(struct cma *cma, unsigned int count, unsigned int align) | |||
414 | start = bitmap_no + mask + 1; | 416 | start = bitmap_no + mask + 1; |
415 | } | 417 | } |
416 | 418 | ||
419 | trace_cma_alloc(page ? pfn : -1UL, page, count, align); | ||
420 | |||
417 | pr_debug("%s(): returned %p\n", __func__, page); | 421 | pr_debug("%s(): returned %p\n", __func__, page); |
418 | return page; | 422 | return page; |
419 | } | 423 | } |
@@ -446,6 +450,7 @@ bool cma_release(struct cma *cma, const struct page *pages, unsigned int count) | |||
446 | 450 | ||
447 | free_contig_range(pfn, count); | 451 | free_contig_range(pfn, count); |
448 | cma_clear_bitmap(cma, pfn, count); | 452 | cma_clear_bitmap(cma, pfn, count); |
453 | trace_cma_release(pfn, pages, count); | ||
449 | 454 | ||
450 | return true; | 455 | return true; |
451 | } | 456 | } |