diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-08-19 07:56:42 (GMT) |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-05-14 18:37:58 (GMT) |
commit | d91d3eed3e280bc9fc567781d6291a5ae989bd12 (patch) | |
tree | ddd57a818326693ed9676e1362dce88876d43ffa /mm/page_cgroup.c | |
parent | 0d758b5e66a94de6a6ccc333a64563b10b610677 (diff) | |
download | linux-fsl-qoriq-d91d3eed3e280bc9fc567781d6291a5ae989bd12.tar.xz |
mm: Replace cgroup_page bit spinlock
Bit spinlocks are not working on RT. Replace them.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'mm/page_cgroup.c')
-rw-r--r-- | mm/page_cgroup.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c index 6d757e3a..98caeee 100644 --- a/mm/page_cgroup.c +++ b/mm/page_cgroup.c @@ -13,6 +13,14 @@ static unsigned long total_usage; +static void page_cgroup_lock_init(struct page_cgroup *pc, int nr_pages) +{ +#ifdef CONFIG_PREEMPT_RT_BASE + for (; nr_pages; nr_pages--, pc++) + spin_lock_init(&pc->pcg_lock); +#endif +} + #if !defined(CONFIG_SPARSEMEM) @@ -60,6 +68,7 @@ static int __init alloc_node_page_cgroup(int nid) return -ENOMEM; NODE_DATA(nid)->node_page_cgroup = base; total_usage += table_size; + page_cgroup_lock_init(base, nr_pages); return 0; } @@ -150,6 +159,8 @@ static int __meminit init_section_page_cgroup(unsigned long pfn, int nid) return -ENOMEM; } + page_cgroup_lock_init(base, PAGES_PER_SECTION); + /* * The passed "pfn" may not be aligned to SECTION. For the calculation * we need to apply a mask. |