diff options
Diffstat (limited to 'debian/patches-rt/mm-convert-swap-to-percpu-locked.patch')
-rw-r--r-- | debian/patches-rt/mm-convert-swap-to-percpu-locked.patch | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/debian/patches-rt/mm-convert-swap-to-percpu-locked.patch b/debian/patches-rt/mm-convert-swap-to-percpu-locked.patch deleted file mode 100644 index 6bf831e99..000000000 --- a/debian/patches-rt/mm-convert-swap-to-percpu-locked.patch +++ /dev/null @@ -1,200 +0,0 @@ -From: Ingo Molnar <mingo@elte.hu> -Date: Fri, 3 Jul 2009 08:29:51 -0500 -Subject: mm/swap: Convert to percpu locked -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.2/older/patches-5.2.17-rt9.tar.xz - -Replace global locks (get_cpu + local_irq_save) with "local_locks()". -Currently there is one of for "rotate" and one for "swap". - -Signed-off-by: Ingo Molnar <mingo@elte.hu> -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> - ---- - include/linux/swap.h | 2 ++ - mm/compaction.c | 6 ++++-- - mm/page_alloc.c | 3 ++- - mm/swap.c | 38 ++++++++++++++++++++++---------------- - 4 files changed, 30 insertions(+), 19 deletions(-) - ---- a/include/linux/swap.h -+++ b/include/linux/swap.h -@@ -12,6 +12,7 @@ - #include <linux/fs.h> - #include <linux/atomic.h> - #include <linux/page-flags.h> -+#include <linux/locallock.h> - #include <asm/page.h> - - struct notifier_block; -@@ -329,6 +330,7 @@ extern unsigned long nr_free_pagecache_p - - - /* linux/mm/swap.c */ -+DECLARE_LOCAL_IRQ_LOCK(swapvec_lock); - extern void lru_cache_add(struct page *); - extern void lru_cache_add_anon(struct page *page); - extern void lru_cache_add_file(struct page *page); ---- a/mm/compaction.c -+++ b/mm/compaction.c -@@ -2229,10 +2229,12 @@ compact_zone(struct compact_control *cc, - block_start_pfn(cc->migrate_pfn, cc->order); - - if (last_migrated_pfn < current_block_start) { -- cpu = get_cpu(); -+ cpu = get_cpu_light(); -+ local_lock_irq(swapvec_lock); - lru_add_drain_cpu(cpu); -+ local_unlock_irq(swapvec_lock); - drain_local_pages(cc->zone); -- put_cpu(); -+ put_cpu_light(); - /* No more flushing until we migrate again */ - last_migrated_pfn = 0; - } ---- a/mm/page_alloc.c -+++ b/mm/page_alloc.c -@@ -7572,8 +7572,9 @@ void __init free_area_init(unsigned long - - static int page_alloc_cpu_dead(unsigned int cpu) - { -- -+ local_lock_irq_on(swapvec_lock, cpu); - lru_add_drain_cpu(cpu); -+ local_unlock_irq_on(swapvec_lock, cpu); - drain_pages(cpu); - - /* ---- a/mm/swap.c -+++ b/mm/swap.c -@@ -33,6 +33,7 @@ - #include <linux/memcontrol.h> - #include <linux/gfp.h> - #include <linux/uio.h> -+#include <linux/locallock.h> - #include <linux/hugetlb.h> - #include <linux/page_idle.h> - -@@ -51,6 +52,8 @@ static DEFINE_PER_CPU(struct pagevec, lr - #ifdef CONFIG_SMP - static DEFINE_PER_CPU(struct pagevec, activate_page_pvecs); - #endif -+static DEFINE_LOCAL_IRQ_LOCK(rotate_lock); -+DEFINE_LOCAL_IRQ_LOCK(swapvec_lock); - - /* - * This path almost never happens for VM activity - pages are normally -@@ -253,11 +256,11 @@ void rotate_reclaimable_page(struct page - unsigned long flags; - - get_page(page); -- local_irq_save(flags); -+ local_lock_irqsave(rotate_lock, flags); - pvec = this_cpu_ptr(&lru_rotate_pvecs); - if (!pagevec_add(pvec, page) || PageCompound(page)) - pagevec_move_tail(pvec); -- local_irq_restore(flags); -+ local_unlock_irqrestore(rotate_lock, flags); - } - } - -@@ -307,12 +310,13 @@ void activate_page(struct page *page) - { - page = compound_head(page); - if (PageLRU(page) && !PageActive(page) && !PageUnevictable(page)) { -- struct pagevec *pvec = &get_cpu_var(activate_page_pvecs); -+ struct pagevec *pvec = &get_locked_var(swapvec_lock, -+ activate_page_pvecs); - - get_page(page); - if (!pagevec_add(pvec, page) || PageCompound(page)) - pagevec_lru_move_fn(pvec, __activate_page, NULL); -- put_cpu_var(activate_page_pvecs); -+ put_locked_var(swapvec_lock, activate_page_pvecs); - } - } - -@@ -334,7 +338,7 @@ void activate_page(struct page *page) - - static void __lru_cache_activate_page(struct page *page) - { -- struct pagevec *pvec = &get_cpu_var(lru_add_pvec); -+ struct pagevec *pvec = &get_locked_var(swapvec_lock, lru_add_pvec); - int i; - - /* -@@ -356,7 +360,7 @@ static void __lru_cache_activate_page(st - } - } - -- put_cpu_var(lru_add_pvec); -+ put_locked_var(swapvec_lock, lru_add_pvec); - } - - /* -@@ -398,12 +402,12 @@ EXPORT_SYMBOL(mark_page_accessed); - - static void __lru_cache_add(struct page *page) - { -- struct pagevec *pvec = &get_cpu_var(lru_add_pvec); -+ struct pagevec *pvec = &get_locked_var(swapvec_lock, lru_add_pvec); - - get_page(page); - if (!pagevec_add(pvec, page) || PageCompound(page)) - __pagevec_lru_add(pvec); -- put_cpu_var(lru_add_pvec); -+ put_locked_var(swapvec_lock, lru_add_pvec); - } - - /** -@@ -581,9 +585,9 @@ void lru_add_drain_cpu(int cpu) - unsigned long flags; - - /* No harm done if a racing interrupt already did this */ -- local_irq_save(flags); -+ local_lock_irqsave(rotate_lock, flags); - pagevec_move_tail(pvec); -- local_irq_restore(flags); -+ local_unlock_irqrestore(rotate_lock, flags); - } - - pvec = &per_cpu(lru_deactivate_file_pvecs, cpu); -@@ -615,11 +619,12 @@ void deactivate_file_page(struct page *p - return; - - if (likely(get_page_unless_zero(page))) { -- struct pagevec *pvec = &get_cpu_var(lru_deactivate_file_pvecs); -+ struct pagevec *pvec = &get_locked_var(swapvec_lock, -+ lru_deactivate_file_pvecs); - - if (!pagevec_add(pvec, page) || PageCompound(page)) - pagevec_lru_move_fn(pvec, lru_deactivate_file_fn, NULL); -- put_cpu_var(lru_deactivate_file_pvecs); -+ put_locked_var(swapvec_lock, lru_deactivate_file_pvecs); - } - } - -@@ -634,19 +639,20 @@ void mark_page_lazyfree(struct page *pag - { - if (PageLRU(page) && PageAnon(page) && PageSwapBacked(page) && - !PageSwapCache(page) && !PageUnevictable(page)) { -- struct pagevec *pvec = &get_cpu_var(lru_lazyfree_pvecs); -+ struct pagevec *pvec = &get_locked_var(swapvec_lock, -+ lru_lazyfree_pvecs); - - get_page(page); - if (!pagevec_add(pvec, page) || PageCompound(page)) - pagevec_lru_move_fn(pvec, lru_lazyfree_fn, NULL); -- put_cpu_var(lru_lazyfree_pvecs); -+ put_locked_var(swapvec_lock, lru_lazyfree_pvecs); - } - } - - void lru_add_drain(void) - { -- lru_add_drain_cpu(get_cpu()); -- put_cpu(); -+ lru_add_drain_cpu(local_lock_cpu(swapvec_lock)); -+ local_unlock_cpu(swapvec_lock); - } - - #ifdef CONFIG_SMP |