All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: "David Hildenbrand (Arm)" <david@kernel.org>
Cc: linux-kernel@vger.kernel.org, Miaohe Lin <linmiaohe@huawei.com>,
	Naoya Horiguchi <nao.horiguchi@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Oscar Salvador <osalvador@suse.de>,
	Andi Kleen <andi@firstfloor.org>,
	Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com>,
	Rik van Riel <riel@redhat.com>,
	Vlastimil Babka <vbabka@kernel.org>,
	Lorenzo Stoakes <ljs@kernel.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>,
	Brendan Jackman <jackmanb@google.com>,
	Johannes Weiner <hannes@cmpxchg.org>, Zi Yan <ziy@nvidia.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Nico Pache <npache@redhat.com>,
	Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
	Barry Song <baohua@kernel.org>, Lance Yang <lance.yang@linux.dev>,
	Christoph Lameter <cl@gentwo.org>,
	David Rientjes <rientjes@google.com>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Harry Yoo <harry@kernel.org>, Hao Li <hao.li@linux.dev>,
	Kiryl Shutsemau <kas@kernel.org>,
	Byungchul Park <byungchul@sk.com>,
	linux-mm@kvack.org, linux-cxl@vger.kernel.org
Subject: Re: [PATCH 0/2] mm: memory-failure: fix HWPoison flag race with non-atomic page flag ops
Date: Wed, 1 Jul 2026 18:18:06 -0400	[thread overview]
Message-ID: <20260701180511-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <a353c28c-a864-456d-9b00-7f6a932cda73@kernel.org>

On Wed, Jul 01, 2026 at 06:17:23PM +0200, David Hildenbrand (Arm) wrote:
> On 7/1/26 17:54, Michael S. Tsirkin wrote:
> > On Wed, Jul 01, 2026 at 10:36:31AM +0200, David Hildenbrand (Arm) wrote:
> >> On 7/1/26 10:33, Michael S. Tsirkin wrote:
> >>>
> >>> what do you think ;) post it?
> >>
> >> As RFC please :) [and if it's AI generated, obviously properly reviewed and
> >> reworked by you]
> >> -- 
> >> Cheers,
> >>
> >> David
> > 
> > Not "generated" surely. But assisted, yes.
> 
> What I thought.
> 
> > Still hacking on it, but the difficulty
> > with memory-failure is that fundamentally, it's not 100% robust.
> 
> It's all a bit slapped on top of everything, yes.
> 
> What I was wondering is, assuming the call_task_rcu() and it takes forever,
> there might be quite a while where a hwpoisoned page that lost its bit is not
> marked as hwpoisoned.
> 
> So you'd actually want the one doing the test_and_set_bit() caller to wait until
> the bit is stable.

not sure I get it.

> But that should be rather hairy as well. :(
> 
> > 
> > For example, we have a fifo fed by hardware and consumed by a workqueue:
> > 
> >         struct memory_failure_cpu *mf_cpu;
> >         unsigned long proc_flags;
> >         bool buffer_overflow;
> >         struct memory_failure_entry entry = {
> >                 .pfn =          pfn,
> >                 .flags =        flags,
> >         };
> > 
> >         mf_cpu = &get_cpu_var(memory_failure_cpu);
> >         raw_spin_lock_irqsave(&mf_cpu->lock, proc_flags);
> >         buffer_overflow = !kfifo_put(&mf_cpu->fifo, entry);
> >         if (!buffer_overflow)
> >                 schedule_work_on(smp_processor_id(), &mf_cpu->work);
> >         raw_spin_unlock_irqrestore(&mf_cpu->lock, proc_flags);
> >         put_cpu_var(memory_failure_cpu);
> >         if (buffer_overflow)
> >                 pr_err("buffer overflow when queuing memory failure at %#lx\n",
> >                        pfn);
> > 
> > 
> > if there are lots of these and the scheduler is slow and it overflows,
> > it's sayonara you have lost the flag, right?
> 
> I guess so. I assume on relevant hw you wouldn't expect a storm. But who knows :)
> 
> > 
> > 
> > Oh and by the way, I just noticed that when buddy merges pages it does
> > not check the poison bit. So it looks like there's a simple way to lose
> > the poison bit - have it merge with a non poisoned page.
> 
> When we poison, we try to take the free page off the buddy. At least that's what
> I remember.


Yes but not immediately - we set hwpoison then we try to take it off.


> So I think we would just then go ahead and split the free higher-order buddy
> page to remove the single page.

Later we split, yes. But I don't see where it sets HWPoison after
split - it calls
SetPageHWPoisonTakenOff but it seems to assume HWPoison is already set.

Am I missing something? It's late here...


> 
> -- 
> Cheers,
> 
> David


  reply	other threads:[~2026-07-01 22:18 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-28 21:45 [PATCH 0/2] mm: memory-failure: fix HWPoison flag race with non-atomic page flag ops Michael S. Tsirkin
2026-06-28 21:45 ` [PATCH 1/2] mm: memory-failure: use RCU to fix HWPoison flag race Michael S. Tsirkin
2026-06-28 21:45 ` [PATCH 2/2] mm: wrap non-atomic page flag ops in RCU for HWPoison safety Michael S. Tsirkin
2026-06-29  2:11 ` [PATCH 0/2] mm: memory-failure: fix HWPoison flag race with non-atomic page flag ops Andi Kleen
2026-06-29  8:10   ` Michael S. Tsirkin
2026-06-29  8:21     ` David Hildenbrand (Arm)
2026-06-29  8:39     ` Michael S. Tsirkin
2026-06-29 16:54       ` Andi Kleen
2026-06-29 17:04         ` David Hildenbrand (Arm)
2026-06-29 20:43           ` Michael S. Tsirkin
2026-06-29  6:49 ` David Hildenbrand (Arm)
2026-06-29  7:34   ` Michael S. Tsirkin
2026-06-29 13:05     ` David Hildenbrand (Arm)
2026-06-29 20:08       ` Michael S. Tsirkin
2026-06-29 20:55         ` Andi Kleen
2026-06-29 21:17           ` Michael S. Tsirkin
2026-06-29 21:39             ` Andi Kleen
2026-06-29 21:59               ` Michael S. Tsirkin
2026-06-29 21:22         ` David Hildenbrand (Arm)
2026-06-29 21:43           ` David Hildenbrand (Arm)
2026-06-29 23:34             ` Michael S. Tsirkin
2026-06-30  6:17               ` David Hildenbrand (Arm)
2026-06-30  6:27                 ` Michael S. Tsirkin
2026-06-30  6:34                   ` David Hildenbrand (Arm)
2026-06-30  7:25                     ` Michael S. Tsirkin
2026-06-29 21:50           ` Michael S. Tsirkin
2026-06-30  6:30             ` David Hildenbrand (Arm)
2026-06-30  6:41               ` David Hildenbrand (Arm)
2026-06-30 21:58                 ` Michael S. Tsirkin
2026-07-01  8:08                   ` David Hildenbrand (Arm)
2026-07-01  8:18                     ` Michael S. Tsirkin
2026-07-01  8:26                       ` David Hildenbrand (Arm)
2026-07-01  8:33                         ` Michael S. Tsirkin
2026-07-01  8:36                           ` David Hildenbrand (Arm)
2026-07-01 15:54                             ` Michael S. Tsirkin
2026-07-01 16:17                               ` David Hildenbrand (Arm)
2026-07-01 22:18                                 ` Michael S. Tsirkin [this message]
2026-06-29 21:54           ` Michael S. Tsirkin
2026-07-01  7:25             ` David Hildenbrand (Arm)
2026-06-29 23:29       ` Michael S. Tsirkin
2026-07-01  7:31         ` David Hildenbrand (Arm)

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=20260701180511-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=byungchul@sk.com \
    --cc=cl@gentwo.org \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=hannes@cmpxchg.org \
    --cc=hao.li@linux.dev \
    --cc=harry@kernel.org \
    --cc=hidehiro.kawai.ez@hitachi.com \
    --cc=jackmanb@google.com \
    --cc=kas@kernel.org \
    --cc=lance.yang@linux.dev \
    --cc=liam@infradead.org \
    --cc=linmiaohe@huawei.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=mhocko@suse.com \
    --cc=nao.horiguchi@gmail.com \
    --cc=npache@redhat.com \
    --cc=osalvador@suse.de \
    --cc=riel@redhat.com \
    --cc=rientjes@google.com \
    --cc=roman.gushchin@linux.dev \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=surenb@google.com \
    --cc=vbabka@kernel.org \
    --cc=ziy@nvidia.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.