[v5,4/4] mm,hwpoison: drop unneeded pcplist draining
diff mbox series

Message ID 20201013144447.6706-5-osalvador@suse.de
State In Next
Commit 0c7c84daa0462bfbb9ef4dbbf99051ebcbf4d076
Headers show
Series
  • HWpoison: further fixes and cleanups
Related show

Commit Message

Oscar Salvador Oct. 13, 2020, 2:44 p.m. UTC
memory_failure and soft_offline_path paths now drain pcplists by calling
get_hwpoison_page.

memory_failure flags the page as HWPoison before, so that page cannot
longer go into a pcplist, and soft_offline_page only flags a page as
HWPoison if 1) we took the page off a buddy freelist 2) the page was
in-use and we migrated it 3) was a clean pagecache.

Because of that, a page cannot longer be poisoned and be in a pcplist.

Signed-off-by: Oscar Salvador <osalvador@suse.de>
---
 mm/madvise.c | 5 -----
 1 file changed, 5 deletions(-)

Comments

HORIGUCHI NAOYA(堀口 直也) Oct. 14, 2020, 12:06 a.m. UTC | #1
On Tue, Oct 13, 2020 at 04:44:47PM +0200, Oscar Salvador wrote:
> memory_failure and soft_offline_path paths now drain pcplists by calling
> get_hwpoison_page.
> 
> memory_failure flags the page as HWPoison before, so that page cannot
> longer go into a pcplist, and soft_offline_page only flags a page as
> HWPoison if 1) we took the page off a buddy freelist 2) the page was
> in-use and we migrated it 3) was a clean pagecache.
> 
> Because of that, a page cannot longer be poisoned and be in a pcplist.
> 
> Signed-off-by: Oscar Salvador <osalvador@suse.de>

Thank you!

Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Vlastimil Babka Nov. 25, 2020, 4:38 p.m. UTC | #2
On 10/13/20 4:44 PM, Oscar Salvador wrote:
> memory_failure and soft_offline_path paths now drain pcplists by calling
> get_hwpoison_page.
> 
> memory_failure flags the page as HWPoison before, so that page cannot
> longer go into a pcplist, and soft_offline_page only flags a page as
> HWPoison if 1) we took the page off a buddy freelist 2) the page was
> in-use and we migrated it 3) was a clean pagecache.
> 
> Because of that, a page cannot longer be poisoned and be in a pcplist.
> 
> Signed-off-by: Oscar Salvador <osalvador@suse.de>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>   mm/madvise.c | 5 -----
>   1 file changed, 5 deletions(-)
> 
> diff --git a/mm/madvise.c b/mm/madvise.c
> index 416a56b8e757..c6b5524add58 100644
> --- a/mm/madvise.c
> +++ b/mm/madvise.c
> @@ -877,7 +877,6 @@ static long madvise_remove(struct vm_area_struct *vma,
>   static int madvise_inject_error(int behavior,
>   		unsigned long start, unsigned long end)
>   {
> -	struct zone *zone;
>   	unsigned long size;
>   
>   	if (!capable(CAP_SYS_ADMIN))
> @@ -922,10 +921,6 @@ static int madvise_inject_error(int behavior,
>   			return ret;
>   	}
>   
> -	/* Ensure that all poisoned pages are removed from per-cpu lists */
> -	for_each_populated_zone(zone)
> -		drain_all_pages(zone);
> -
>   	return 0;
>   }
>   #endif
>

Patch
diff mbox series

diff --git a/mm/madvise.c b/mm/madvise.c
index 416a56b8e757..c6b5524add58 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -877,7 +877,6 @@  static long madvise_remove(struct vm_area_struct *vma,
 static int madvise_inject_error(int behavior,
 		unsigned long start, unsigned long end)
 {
-	struct zone *zone;
 	unsigned long size;
 
 	if (!capable(CAP_SYS_ADMIN))
@@ -922,10 +921,6 @@  static int madvise_inject_error(int behavior,
 			return ret;
 	}
 
-	/* Ensure that all poisoned pages are removed from per-cpu lists */
-	for_each_populated_zone(zone)
-		drain_all_pages(zone);
-
 	return 0;
 }
 #endif