Instead of open coding the bit accesses uses standard style
*PageDeferred* macros.
Signed-off-by: Andi Kleen <ak@suse.de>
---
arch/i386/mm/pageattr.c | 10 +++++++---
arch/x86_64/mm/pageattr.c | 11 ++++++++---
2 files changed, 15 insertions(+), 6 deletions(-)
Index: linux/arch/x86_64/mm/pageattr.c
===================================================================
--- linux.orig/arch/x86_64/mm/pageattr.c
+++ linux/arch/x86_64/mm/pageattr.c
@@ -17,6 +17,11 @@
#define SetPageFlush(p) set_bit(PG_owner_priv_1, &(p)->flags)
#define TestClearPageFlush(p) test_and_clear_bit(PG_owner_priv_1, &(p)->flags)
+#define PageDeferred(p) test_bit(PG_arch_1, &(p)->flags)
+#define SetPageDeferred(p) set_bit(PG_arch_1, &(p)->flags)
+#define ClearPageDeferred(p) clear_bit(PG_arch_1, &(p)->flags)
+#define TestSetPageDeferred(p) test_and_set_bit(PG_arch_1, &(p)->flags)
+
pte_t *lookup_address(unsigned long address)
{
pgd_t *pgd = pgd_offset_k(address);
@@ -101,7 +106,7 @@ static inline void save_page(struct page
{
if (data && cpu_has_clflush)
SetPageFlush(fpage);
- if (test_and_set_bit(PG_arch_1, &fpage->flags))
+ if (TestSetPageDeferred(fpage))
return;
if (cpu_has_clflush || !data)
list_add(&fpage->lru, &deferred_pages);
@@ -137,7 +142,7 @@ static struct page *flush_page(unsigned
if (!(pfn_valid(__pa(address) >> PAGE_SHIFT)))
return NULL;
p = virt_to_page(address);
- if ((PageFlush(p) || PageLRU(p)) && !test_bit(PG_arch_1, &p->flags))
+ if ((PageFlush(p) || PageLRU(p)) && !PageDeferred(p))
return NULL;
return p;
}
@@ -272,7 +277,7 @@ void global_flush_tlb(void)
list_for_each_entry_safe(pg, next, &arg.l, lru) {
list_del(&pg->lru);
- clear_bit(PG_arch_1, &pg->flags);
+ ClearPageDeferred(pg);
if (TestClearPageFlush(pg))
continue;
if (page_private(pg) != 0)
Index: linux/arch/i386/mm/pageattr.c
===================================================================
--- linux.orig/arch/i386/mm/pageattr.c
+++ linux/arch/i386/mm/pageattr.c
@@ -17,6 +17,10 @@
#define PageFlush(p) test_bit(PG_owner_priv_1, &(p)->flags)
#define SetPageFlush(p) set_bit(PG_owner_priv_1, &(p)->flags)
#define TestClearPageFlush(p) test_and_clear_bit(PG_owner_priv_1, &(p)->flags)
+#define PageDeferred(p) test_bit(PG_arch_1, &(p)->flags)
+#define SetPageDeferred(p) set_bit(PG_arch_1, &(p)->flags)
+#define ClearPageDeferred(p) clear_bit(PG_arch_1, &(p)->flags)
+#define TestSetPageDeferred(p) test_and_set_bit(PG_arch_1, &(p)->flags)
static DEFINE_SPINLOCK(cpa_lock);
/* Both protected by cpa_lock */
@@ -152,7 +156,7 @@ static inline void save_page(struct page
{
if (data && cpu_has_clflush)
SetPageFlush(fpage);
- if (test_and_set_bit(PG_arch_1, &fpage->flags))
+ if (TestSetPageDeferred(fpage))
return;
if (!data || cpu_has_clflush)
list_add(&fpage->lru, &df_list);
@@ -164,7 +168,7 @@ static struct page *flush_page(unsigned
if (!(pfn_valid(__pa(address) >> PAGE_SHIFT)))
return NULL;
p = virt_to_page(address);
- if ((PageFlush(p) || PageLRU(p)) && !test_bit(PG_arch_1, &p->flags))
+ if ((PageFlush(p) || PageLRU(p)) && !PageDeferred(p))
return NULL;
return p;
}
@@ -282,7 +286,7 @@ void global_flush_tlb(void)
on_each_cpu(flush_kernel_map, &arg, 1, 1);
list_for_each_entry_safe(pg, next, &arg.l, lru) {
list_del(&pg->lru);
- clear_bit(PG_arch_1, &pg->flags);
+ ClearPageDeferred(pg);
if (TestClearPageFlush(pg))
continue;
if (PageReserved(pg) || !cpu_has_pse || page_private(pg) != 0)
-
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Martin Michlmayr | Network slowdown due to CFS |
| Ingo Molnar | Re: x86 arch updates also broke s390 |
git: | |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| David Miller | [GIT]: Networking |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Natalie Protasevich | [BUG] New Kernel Bugs |
