blob: 0dad84a56454008bdbe3530e0903e869dc1fc859 [file] [log] [blame]
From a2dad7e3d65db0e4eecdc89794d845e2ccef2f33 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 19 Aug 2009 09:56:42 +0200
Subject: [PATCH] mm: Replace cgroup_page bit spinlock
commit e3cf1fe8ff341a026b2128bb5c06dfbfd218df11 in tip.
Bit spinlocks are not working on RT. Replace them.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
include/linux/page_cgroup.h | 5 +++--
mm/page_cgroup.c | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h
index aef22ae..f725d58 100644
--- a/include/linux/page_cgroup.h
+++ b/include/linux/page_cgroup.h
@@ -12,6 +12,7 @@
*/
struct page_cgroup {
unsigned long flags;
+ spinlock_t lock;
struct mem_cgroup *mem_cgroup;
struct page *page;
struct list_head lru; /* per cgroup LRU list */
@@ -91,12 +92,12 @@ static inline enum zone_type page_cgroup_zid(struct page_cgroup *pc)
static inline void lock_page_cgroup(struct page_cgroup *pc)
{
- bit_spin_lock(PCG_LOCK, &pc->flags);
+ spin_lock(&pc->lock);
}
static inline void unlock_page_cgroup(struct page_cgroup *pc)
{
- bit_spin_unlock(PCG_LOCK, &pc->flags);
+ spin_unlock(&pc->lock);
}
#else /* CONFIG_CGROUP_MEM_RES_CTLR */
diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c
index 6c00814..d1a0982 100644
--- a/mm/page_cgroup.c
+++ b/mm/page_cgroup.c
@@ -14,6 +14,7 @@ static void __meminit
__init_page_cgroup(struct page_cgroup *pc, unsigned long pfn)
{
pc->flags = 0;
+ spin_lock_init(&pc->lock);
pc->mem_cgroup = NULL;
pc->page = pfn_to_page(pfn);
INIT_LIST_HEAD(&pc->lru);
--
1.7.0.4