All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miaohe Lin <linmiaohe@huawei.com>
To: "HORIGUCHI NAOYA(堀口 直也)" <naoya.horiguchi@nec.com>
Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@redhat.com>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Yang Shi <shy828301@gmail.com>,
	Oscar Salvador <osalvador@suse.de>,
	Muchun Song <songmuchun@bytedance.com>,
	Jane Chu <jane.chu@oracle.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v6 1/4] mm,hwpoison,hugetlb,memory_hotplug: hotremove memory section with hwpoisoned hugepage
Date: Mon, 17 Oct 2022 21:29:44 +0800	[thread overview]
Message-ID: <8a89e602-f80c-f5b9-ca54-7082a429bd52@huawei.com> (raw)
In-Reply-To: <20221017072423.GA3660733@hori.linux.bs1.fc.nec.co.jp>

On 2022/10/17 15:24, HORIGUCHI NAOYA(堀口 直也) wrote:
> On Sat, Oct 15, 2022 at 09:58:09AM +0800, Miaohe Lin wrote:
>> On 2022/10/7 9:07, Naoya Horiguchi wrote:
> ...
>>> @@ -1785,7 +1785,8 @@ void hugetlb_clear_page_hwpoison(struct page *hpage)
>>>   *   -EBUSY        - the hugepage is busy (try to retry)
>>>   *   -EHWPOISON    - the hugepage is already hwpoisoned
>>>   */
>>> -int __get_huge_page_for_hwpoison(unsigned long pfn, int flags)
>>> +int __get_huge_page_for_hwpoison(unsigned long pfn, int flags,
>>> +				 bool *migratable_cleared)
>>>  {
>>>  	struct page *page = pfn_to_page(pfn);
>>>  	struct page *head = compound_head(page);
>>> @@ -1815,6 +1816,15 @@ int __get_huge_page_for_hwpoison(unsigned long pfn, int flags)
>>>  		goto out;
>>>  	}
>>>  
>>> +	/*
>>> +	 * Clearing HPageMigratable for hwpoisoned hugepages to prevent them
>>> +	 * from being migrated by memory hotremove.
>>> +	 */
>>> +	if (count_increased) {
>>> +		*migratable_cleared = true;
>>> +		ClearHPageMigratable(head);
>>
>> I think I might be nitpicking... But it seems ClearHPageMigratable is not enough here.
>>   1. In MF_COUNT_INCREASED case, we don't know whether HPageMigratable is set.
>>   2. Even if HPageMigratable is set, there might be a race window before we clear HPageMigratable?
> 
> Maybe this race is what I mentioned in
> https://lore.kernel.org/linux-mm/20220928012647.GA597297@u2004.lan/
> (the second scenario).  My stance to this case is that the hugepage is not
> hwpoisoned even if some hardware (not visible to kernel) issue is in it,
> so hwpoison handler can/may not cope with the race.
> I guess that this could be handled by applying memcpy_mcsafe() mechanism
> to page migration, but I'm not sure of the feasibility.

Thanks Naoya. memcpy_mcsafe() might be a good idea to handle hwpoison with the memory copy in
page migration path. And [1] is doing the similar thing. If this mechanism is applicable, then
we could handle more memory failure scene. ;)

[1] https://lore.kernel.org/linux-mm/20221010160142.1087120-1-jiaqiyan@google.com/

> 
>> So "*migratable_cleared = TestClearHPageMigratable" might be better? But I might be wrong.
> 
> Thanks, this seems work for 1 (I need testing to check it), so I'll do this
> in the next post.

Many thanks for your work.

Thanks,
Miaohe Lin

> 
>>
>> With above fixed (if it's really a problem), this patch looks good to me.
>>
>> Reviewed-by: Miaohe Lin <linmiaohe@huawei.com>
> 
> Thank you very much.
> 
> - Naoya Horiguchi
> 


  reply	other threads:[~2022-10-17 13:29 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-07  1:07 [PATCH v6 0/4] mm, hwpoison: improve handling workload related to hugetlb and memory_hotplug Naoya Horiguchi
2022-10-07  1:07 ` [PATCH v6 1/4] mm,hwpoison,hugetlb,memory_hotplug: hotremove memory section with hwpoisoned hugepage Naoya Horiguchi
2022-10-13 14:17   ` Oscar Salvador
2022-10-15  1:58   ` Miaohe Lin
2022-10-17  7:24     ` HORIGUCHI NAOYA(堀口 直也)
2022-10-17 13:29       ` Miaohe Lin [this message]
2022-10-07  1:07 ` [PATCH v6 2/4] mm/hwpoison: move definitions of num_poisoned_pages_* to memory-failure.c Naoya Horiguchi
2022-10-13 14:31   ` Oscar Salvador
2022-10-14  6:38     ` Naoya Horiguchi
2022-10-07  1:07 ` [PATCH v6 3/4] mm/hwpoison: pass pfn to num_poisoned_pages_*() Naoya Horiguchi
2022-10-07  1:07 ` [PATCH v6 4/4] mm/hwpoison: introduce per-memory_block hwpoison counter Naoya Horiguchi
2022-10-07  4:34   ` HORIGUCHI NAOYA(堀口 直也)
2022-10-13  8:33   ` Oscar Salvador
2022-10-13 10:09     ` Naoya Horiguchi
2022-10-15  2:28   ` Miaohe Lin
2022-10-17 11:43     ` HORIGUCHI NAOYA(堀口 直也)
2022-10-17 13:31       ` Miaohe Lin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8a89e602-f80c-f5b9-ca54-7082a429bd52@huawei.com \
    --to=linmiaohe@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=jane.chu@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mike.kravetz@oracle.com \
    --cc=naoya.horiguchi@linux.dev \
    --cc=naoya.horiguchi@nec.com \
    --cc=osalvador@suse.de \
    --cc=shy828301@gmail.com \
    --cc=songmuchun@bytedance.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.