Skip to content

Commit 5d1fd5d

Browse files
nhoriguchitorvalds
authored andcommitted
mm,hwpoison: introduce MF_MSG_UNSPLIT_THP
memory_failure() is supposed to call action_result() when it handles a memory error event, but there's one missing case. So let's add it. I find that include/ras/ras_event.h has some other MF_MSG_* undefined, so this patch also adds them. Signed-off-by: Naoya Horiguchi <[email protected]> Signed-off-by: Oscar Salvador <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Cc: "Aneesh Kumar K.V" <[email protected]> Cc: Aneesh Kumar K.V <[email protected]> Cc: Aristeu Rozanski <[email protected]> Cc: Dave Hansen <[email protected]> Cc: David Hildenbrand <[email protected]> Cc: Dmitry Yakunin <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Mike Kravetz <[email protected]> Cc: Oscar Salvador <[email protected]> Cc: Qian Cai <[email protected]> Cc: Tony Luck <[email protected]> Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Linus Torvalds <[email protected]>
1 parent 5a2ffca commit 5d1fd5d

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

include/linux/mm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3064,6 +3064,7 @@ enum mf_action_page_type {
30643064
MF_MSG_BUDDY,
30653065
MF_MSG_BUDDY_2ND,
30663066
MF_MSG_DAX,
3067+
MF_MSG_UNSPLIT_THP,
30673068
MF_MSG_UNKNOWN,
30683069
};
30693070

include/ras/ras_event.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ TRACE_EVENT(aer_event,
361361
EM ( MF_MSG_POISONED_HUGE, "huge page already hardware poisoned" ) \
362362
EM ( MF_MSG_HUGE, "huge page" ) \
363363
EM ( MF_MSG_FREE_HUGE, "free huge page" ) \
364+
EM ( MF_MSG_NON_PMD_HUGE, "non-pmd-sized huge page" ) \
364365
EM ( MF_MSG_UNMAP_FAILED, "unmapping failed page" ) \
365366
EM ( MF_MSG_DIRTY_SWAPCACHE, "dirty swapcache page" ) \
366367
EM ( MF_MSG_CLEAN_SWAPCACHE, "clean swapcache page" ) \
@@ -373,6 +374,8 @@ TRACE_EVENT(aer_event,
373374
EM ( MF_MSG_TRUNCATED_LRU, "already truncated LRU page" ) \
374375
EM ( MF_MSG_BUDDY, "free buddy page" ) \
375376
EM ( MF_MSG_BUDDY_2ND, "free buddy page (2nd try)" ) \
377+
EM ( MF_MSG_DAX, "dax page" ) \
378+
EM ( MF_MSG_UNSPLIT_THP, "unsplit thp" ) \
376379
EMe ( MF_MSG_UNKNOWN, "unknown page" )
377380

378381
/*

mm/memory-failure.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,7 @@ static const char * const action_page_types[] = {
582582
[MF_MSG_BUDDY] = "free buddy page",
583583
[MF_MSG_BUDDY_2ND] = "free buddy page (2nd try)",
584584
[MF_MSG_DAX] = "dax page",
585+
[MF_MSG_UNSPLIT_THP] = "unsplit thp",
585586
[MF_MSG_UNKNOWN] = "unknown page",
586587
};
587588

@@ -1370,8 +1371,10 @@ int memory_failure(unsigned long pfn, int flags)
13701371
}
13711372

13721373
if (PageTransHuge(hpage)) {
1373-
if (try_to_split_thp_page(p, "Memory Failure") < 0)
1374+
if (try_to_split_thp_page(p, "Memory Failure") < 0) {
1375+
action_result(pfn, MF_MSG_UNSPLIT_THP, MF_IGNORED);
13741376
return -EBUSY;
1377+
}
13751378
VM_BUG_ON_PAGE(!page_count(p), p);
13761379
}
13771380

0 commit comments

Comments
 (0)