[rt] Refresh "Split IRQ-off and zone->lock while freeing pages from PCP list #1" for context changes in 4.19.142

This commit is contained in:
Salvatore Bonaccorso 2020-08-28 12:51:20 +02:00
parent 2f6b3a464a
commit 510a9081a9
2 changed files with 11 additions and 14 deletions

2
debian/changelog vendored
View File

@ -618,6 +618,8 @@ linux (4.19.142-1) UNRELEASED; urgency=medium
context changes in 4.19.141 context changes in 4.19.141
* Refresh "net: ena: fix crash during ena_remove()" for context changes in * Refresh "net: ena: fix crash during ena_remove()" for context changes in
4.19.142 4.19.142
* [rt] Refresh "Split IRQ-off and zone->lock while freeing pages from PCP
list #1" for context changes in 4.19.142
-- Salvatore Bonaccorso <carnil@debian.org> Tue, 04 Aug 2020 16:33:40 +0200 -- Salvatore Bonaccorso <carnil@debian.org> Tue, 04 Aug 2020 16:33:40 +0200

View File

@ -20,11 +20,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
mm/page_alloc.c | 82 +++++++++++++++++++++++++++++++------------------ mm/page_alloc.c | 82 +++++++++++++++++++++++++++++++------------------
1 file changed, 52 insertions(+), 30 deletions(-) 1 file changed, 52 insertions(+), 30 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 7181dfe76440..bab65ef53eda 100644
--- a/mm/page_alloc.c --- a/mm/page_alloc.c
+++ b/mm/page_alloc.c +++ b/mm/page_alloc.c
@@ -1095,7 +1095,7 @@ static inline void prefetch_buddy(struct page *page) @@ -1095,7 +1095,7 @@
} }
/* /*
@ -33,7 +31,7 @@ index 7181dfe76440..bab65ef53eda 100644
* Assumes all pages on list are in same zone, and of same order. * Assumes all pages on list are in same zone, and of same order.
* count is the number of pages to free. * count is the number of pages to free.
* *
@@ -1106,14 +1106,41 @@ static inline void prefetch_buddy(struct page *page) @@ -1106,14 +1106,41 @@
* pinned" detection logic. * pinned" detection logic.
*/ */
static void free_pcppages_bulk(struct zone *zone, int count, static void free_pcppages_bulk(struct zone *zone, int count,
@ -77,9 +75,9 @@ index 7181dfe76440..bab65ef53eda 100644
- LIST_HEAD(head); - LIST_HEAD(head);
+ struct page *page; + struct page *page;
while (count) { /*
struct list_head *list; * Ensure proper count is passed which otherwise would stuck in the
@@ -1145,7 +1172,7 @@ static void free_pcppages_bulk(struct zone *zone, int count, @@ -1150,7 +1177,7 @@
if (bulkfree_pcp_prepare(page)) if (bulkfree_pcp_prepare(page))
continue; continue;
@ -88,7 +86,7 @@ index 7181dfe76440..bab65ef53eda 100644
/* /*
* We are going to put the page back to the global * We are going to put the page back to the global
@@ -1160,26 +1187,6 @@ static void free_pcppages_bulk(struct zone *zone, int count, @@ -1165,26 +1192,6 @@
prefetch_buddy(page); prefetch_buddy(page);
} while (--count && --batch_free && !list_empty(list)); } while (--count && --batch_free && !list_empty(list));
} }
@ -115,7 +113,7 @@ index 7181dfe76440..bab65ef53eda 100644
} }
static void free_one_page(struct zone *zone, static void free_one_page(struct zone *zone,
@@ -2540,13 +2547,18 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) @@ -2545,13 +2552,18 @@
{ {
unsigned long flags; unsigned long flags;
int to_drain, batch; int to_drain, batch;
@ -135,7 +133,7 @@ index 7181dfe76440..bab65ef53eda 100644
} }
#endif #endif
@@ -2562,14 +2574,21 @@ static void drain_pages_zone(unsigned int cpu, struct zone *zone) @@ -2567,14 +2579,21 @@
unsigned long flags; unsigned long flags;
struct per_cpu_pageset *pset; struct per_cpu_pageset *pset;
struct per_cpu_pages *pcp; struct per_cpu_pages *pcp;
@ -159,7 +157,7 @@ index 7181dfe76440..bab65ef53eda 100644
} }
/* /*
@@ -2791,7 +2810,10 @@ static void free_unref_page_commit(struct page *page, unsigned long pfn) @@ -2796,7 +2815,10 @@
pcp->count++; pcp->count++;
if (pcp->count >= pcp->high) { if (pcp->count >= pcp->high) {
unsigned long batch = READ_ONCE(pcp->batch); unsigned long batch = READ_ONCE(pcp->batch);
@ -171,6 +169,3 @@ index 7181dfe76440..bab65ef53eda 100644
} }
} }
--
2.17.1