diff options
author | Sasha Levin <sasha.levin@oracle.com> | 2015-04-14 18:44:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-14 19:49:00 -0400 |
commit | 28b24c1fc8c22cabe5b8a16ffe6a61dfce51a1f2 (patch) | |
tree | 2a6127decc749a3aea6a50123855ba73013fd082 /mm/cma.c | |
parent | 19c07d5e0414261bd7ec3d8419dd26f468ef69d9 (diff) |
mm: cma: debugfs interface
I've noticed that there is no interfaces exposed by CMA which would let me
fuzz what's going on in there.
This small patchset exposes some information out to userspace, plus adds
the ability to trigger allocation and freeing from userspace.
This patch (of 3):
Implement a simple debugfs interface to expose information about CMA areas
in the system.
Useful for testing/sanity checks for CMA since it was impossible to
previously retrieve this information in userspace.
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Acked-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Laura Abbott <lauraa@codeaurora.org>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/cma.c')
-rw-r--r-- | mm/cma.c | 19 |
1 files changed, 4 insertions, 15 deletions
@@ -35,16 +35,10 @@ | |||
35 | #include <linux/highmem.h> | 35 | #include <linux/highmem.h> |
36 | #include <linux/io.h> | 36 | #include <linux/io.h> |
37 | 37 | ||
38 | struct cma { | 38 | #include "cma.h" |
39 | unsigned long base_pfn; | 39 | |
40 | unsigned long count; | 40 | struct cma cma_areas[MAX_CMA_AREAS]; |
41 | unsigned long *bitmap; | 41 | unsigned cma_area_count; |
42 | unsigned int order_per_bit; /* Order of pages represented by one bit */ | ||
43 | struct mutex lock; | ||
44 | }; | ||
45 | |||
46 | static struct cma cma_areas[MAX_CMA_AREAS]; | ||
47 | static unsigned cma_area_count; | ||
48 | static DEFINE_MUTEX(cma_mutex); | 42 | static DEFINE_MUTEX(cma_mutex); |
49 | 43 | ||
50 | phys_addr_t cma_get_base(struct cma *cma) | 44 | phys_addr_t cma_get_base(struct cma *cma) |
@@ -77,11 +71,6 @@ static unsigned long cma_bitmap_aligned_offset(struct cma *cma, int align_order) | |||
77 | - cma->base_pfn) >> cma->order_per_bit; | 71 | - cma->base_pfn) >> cma->order_per_bit; |
78 | } | 72 | } |
79 | 73 | ||
80 | static unsigned long cma_bitmap_maxno(struct cma *cma) | ||
81 | { | ||
82 | return cma->count >> cma->order_per_bit; | ||
83 | } | ||
84 | |||
85 | static unsigned long cma_bitmap_pages_to_bits(struct cma *cma, | 74 | static unsigned long cma_bitmap_pages_to_bits(struct cma *cma, |
86 | unsigned long pages) | 75 | unsigned long pages) |
87 | { | 76 | { |