Re: [PATCH] mm/memory-failure: allow memory allocation from emergency reserves

From: Andrew Morton
Date: Tue Jul 02 2024 - 03:19:47 EST


On Sat, 29 Jun 2024 10:09:46 +0800 Miaohe Lin <linmiaohe@xxxxxxxxxx> wrote:

> On 2024/6/25 10:23, Rui Qi wrote:
> > From: Rui Qi <qirui.001@xxxxxxxxxxxxx>
> >
> > we hope that memory errors can be successfully handled quickly, using
> > __GFP_MEMALLOC can help us improve the success rate of processing
>
> Comments of __GFP_MEMALLOC says:
>
> * Users of this flag have to be extremely careful to not deplete the reserve
> * completely and implement a throttling mechanism which controls the
> * consumption of the reserve based on the amount of freed memory.
>
> It seems there's no such throttling mechanism in memory_failure.
>
> > under memory pressure, because to_kill struct is freed very quickly,
> > so using __GFP_MEMALLOC will not exacerbate memory pressure for a long time,
> > and more memory will be freed after killed task exiting, which will also
>
> Tasks might not be killed even to_kill struct is allocated.
>
> ...
>
> > - raw_hwp = kmalloc(sizeof(struct raw_hwp_page), GFP_ATOMIC);
> > + raw_hwp = kmalloc(sizeof(struct raw_hwp_page), GFP_ATOMIC | __GFP_MEMALLOC);
>
> In already hardware poisoned code path, raw_hwp can be allocated to store raw page info
> without killing anything. So __GFP_MEMALLOC might not be suitable to use.
> Or am I miss something?

Yes, I'm doubtful about this patch. I think that rather than poking at a
particular implementation, it would be helpful for us to see a complete
description of the issues which were observed, please. Let's see the
bug report and we can discuss fixes later.