Re: [v3 PATCH 1/5] mm: hwpoison: remove the unnecessary THP check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Naoya,

Any comment on this patch and patch #3? I'd prefer to fix more
comments for a new version.

Thanks,
Yang


On Thu, Sep 30, 2021 at 2:53 PM Yang Shi <shy828301@xxxxxxxxx> wrote:
>
> When handling THP hwpoison checked if the THP is in allocation or free
> stage since hwpoison may mistreat it as hugetlb page.  After
> commit 415c64c1453a ("mm/memory-failure: split thp earlier in memory error
> handling") the problem has been fixed, so this check is no longer
> needed.  Remove it.  The side effect of the removal is hwpoison may
> report unsplit THP instead of unknown error for shmem THP.  It seems not
> like a big deal.
>
> The following patch depends on this, which fixes shmem THP with
> hwpoisoned subpage(s) are mapped PMD wrongly.  So this patch needs to be
> backported to -stable as well.
>
> Cc: <stable@xxxxxxxxxxxxxxx>
> Suggested-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx>
> Signed-off-by: Yang Shi <shy828301@xxxxxxxxx>
> ---
>  mm/memory-failure.c | 14 --------------
>  1 file changed, 14 deletions(-)
>
> diff --git a/mm/memory-failure.c b/mm/memory-failure.c
> index 54879c339024..ed28eba50f98 100644
> --- a/mm/memory-failure.c
> +++ b/mm/memory-failure.c
> @@ -1147,20 +1147,6 @@ static int __get_hwpoison_page(struct page *page)
>         if (!HWPoisonHandlable(head))
>                 return -EBUSY;
>
> -       if (PageTransHuge(head)) {
> -               /*
> -                * Non anonymous thp exists only in allocation/free time. We
> -                * can't handle such a case correctly, so let's give it up.
> -                * This should be better than triggering BUG_ON when kernel
> -                * tries to touch the "partially handled" page.
> -                */
> -               if (!PageAnon(head)) {
> -                       pr_err("Memory failure: %#lx: non anonymous thp\n",
> -                               page_to_pfn(page));
> -                       return 0;
> -               }
> -       }
> -
>         if (get_page_unless_zero(head)) {
>                 if (head == compound_head(page))
>                         return 1;
> --
> 2.26.2
>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux