Skip to content

Commit

Permalink
mm/memory-failure: convert free_raw_hwp_pages() to folios
Browse files Browse the repository at this point in the history
Change free_raw_hwp_pages() to folio_free_raw_hwp(), converts two users of
hugetlb specific page macro users to their folio equivalents.

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Sidhartha Kumar <[email protected]>
Acked-by: Naoya Horiguchi <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Cc: Miaohe Lin <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
  • Loading branch information
sidkumar99 authored and akpm00 committed Feb 3, 2023
1 parent 2ff6cec commit 9637d7d
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions mm/memory-failure.c
Original file line number Diff line number Diff line change
Expand Up @@ -1766,31 +1766,31 @@ static int hugetlb_set_page_hwpoison(struct page *hpage, struct page *page)
return ret;
}

static unsigned long free_raw_hwp_pages(struct page *hpage, bool move_flag)
static unsigned long folio_free_raw_hwp(struct folio *folio, bool move_flag)
{
/*
* HPageVmemmapOptimized hugepages can't be freed because struct
* hugetlb_vmemmap_optimized hugepages can't be freed because struct
* pages for tail pages are required but they don't exist.
*/
if (move_flag && HPageVmemmapOptimized(hpage))
if (move_flag && folio_test_hugetlb_vmemmap_optimized(folio))
return 0;

/*
* HPageRawHwpUnreliable hugepages shouldn't be unpoisoned by
* hugetlb_raw_hwp_unreliable hugepages shouldn't be unpoisoned by
* definition.
*/
if (HPageRawHwpUnreliable(hpage))
if (folio_test_hugetlb_raw_hwp_unreliable(folio))
return 0;

return __free_raw_hwp_pages(hpage, move_flag);
return __free_raw_hwp_pages(&folio->page, move_flag);
}

void folio_clear_hugetlb_hwpoison(struct folio *folio)
{
if (folio_test_hugetlb_raw_hwp_unreliable(folio))
return;
folio_clear_hwpoison(folio);
free_raw_hwp_pages(&folio->page, true);
folio_free_raw_hwp(folio, true);
}

/*
Expand Down Expand Up @@ -1929,7 +1929,7 @@ static inline int try_memory_failure_hugetlb(unsigned long pfn, int flags, int *
return 0;
}

static inline unsigned long free_raw_hwp_pages(struct page *hpage, bool flag)
static inline unsigned long folio_free_raw_hwp(struct folio *folio, bool flag)
{
return 0;
}
Expand Down Expand Up @@ -2336,6 +2336,7 @@ core_initcall(memory_failure_init);
int unpoison_memory(unsigned long pfn)
{
struct page *page;
struct folio *folio;
struct page *p;
int ret = -EBUSY;
unsigned long count = 1;
Expand All @@ -2348,6 +2349,7 @@ int unpoison_memory(unsigned long pfn)

p = pfn_to_page(pfn);
page = compound_head(p);
folio = page_folio(p);

mutex_lock(&mf_mutex);

Expand Down Expand Up @@ -2389,7 +2391,7 @@ int unpoison_memory(unsigned long pfn)
if (!ret) {
if (PageHuge(p)) {
huge = true;
count = free_raw_hwp_pages(page, false);
count = folio_free_raw_hwp(folio, false);
if (count == 0) {
ret = -EBUSY;
goto unlock_mutex;
Expand All @@ -2405,7 +2407,7 @@ int unpoison_memory(unsigned long pfn)
} else {
if (PageHuge(p)) {
huge = true;
count = free_raw_hwp_pages(page, false);
count = folio_free_raw_hwp(folio, false);
if (count == 0) {
ret = -EBUSY;
put_page(page);
Expand Down

0 comments on commit 9637d7d

Please sign in to comment.