| From cd33eb9b76a7fdbe81b75c92b50fd407e44faed8 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> |
| |
| diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h |
| index b0e4eb1..491e776 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 */ |
| @@ -85,12 +86,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 3d535d5..54facf0 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.1.1 |
| |