Here is v2 of "enabling memory error handling on 1GB hugepage" patchset. Major updates: - (patch 3/9) I made pud_huge() and follow_huge_pud() aware of non-present pud entry (based on Miaohe's comment). - (patch 4/9 and patch 5/9) I extended the mechanism to save raw error info to support multiple error subpages in a hugepage. Additionally, I added a "unreliable" flag which prevents freeing hwpoison hugetlb if any raw error info is lost. - (patch 1/9 and 2/9) During testing some common cases for 1GB hugepage, I found a few issues in existing code, so this series starts with fixing them. The remaining patches should have only minor updates since v1. Patch dependency: - "mm/memory-failure: disable unpoison once hw error happens" (actually the conflict is not logical one, but adding MF_SIMULATED to mf_flags conflicts with patch 6/9.) v1: https://lore.kernel.org/linux-mm/20220602050631.771414-1-naoya.horiguchi@xxxxxxxxx/T/#u Thanks, Naoya Horiguchi --- Summary: Naoya Horiguchi (9): mm/hugetlb: remove checking hstate_is_gigantic() in return_unused_surplus_pages() mm/hugetlb: separate path for hwpoison entry in copy_hugetlb_page_range() mm/hugetlb: make pud_huge() and huge_pud() aware of non-present pud entry mm, hwpoison, hugetlb: support saving mechanism of raw error pages mm, hwpoison: make unpoison aware of raw error info in hwpoisoned hugepage mm, hwpoison: set PG_hwpoison for busy hugetlb pages mm, hwpoison: make __page_handle_poison returns int mm, hwpoison: skip raw hwpoison page in freeing 1GB hugepage mm, hwpoison: enable memory error handling on 1GB hugepage arch/x86/mm/hugetlbpage.c | 3 +- include/linux/hugetlb.h | 13 ++++ include/linux/mm.h | 2 +- include/linux/swapops.h | 9 +++ include/ras/ras_event.h | 1 - mm/hugetlb.c | 78 ++++++++++++++-------- mm/memory-failure.c | 163 +++++++++++++++++++++++++++++++++++++--------- 7 files changed, 209 insertions(+), 60 deletions(-)