mbox series

[v2,0/9] mm, hwpoison: enable 1GB hugepage support (v2)

Message ID 20220623235153.2623702-1-naoya.horiguchi@linux.dev (mailing list archive)
Headers show
Series mm, hwpoison: enable 1GB hugepage support (v2) | expand

Message

Naoya Horiguchi June 23, 2022, 11:51 p.m. UTC
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@linux.dev/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(-)