Re: [RFC][PATCH] PM: Force GFP_NOIO during suspend/resume (was: Re: [linux-pm] Memory allocations in .suspend became very unreliable)

Rafael J. Wysocki
2010-01-17T13:27:14Z

On Sunday 17 January 2010, Oliver Neukum wrote:
> Am Sonntag, 17. Januar 2010 01:38:37 schrieb Rafael J. Wysocki:
> > > Now having said that, we've been considering a change that will turn all
> > > GFP_KERNEL allocations into GFP_NOIO during suspend/resume, so perhaps I'll
> > > prepare a patch to do that and let's see what people think.
> >
> > If I didn't confuse anything (which is likely, because it's a bit late here
> > now), the patch below should do the trick. I have only checked that it doesn't
> > break compilation, so please take it with a grain of salt.
> >
> > Comments welcome.
>
> I think this is a bad idea as it makes the mm subsystem behave differently
> in the runtime and in the whole system cases.

s/runtime/suspend/ ?

Yes it will, but why exactly shouldn't it? System suspend/resume _is_ a
special situation anyway.

> What's so hard about telling people that they need to use GFP_NOIO in
> suspend() and resume()?

Memory allocations are made for other purposes during suspend/resume too. For
example, new kernel threads may be created (for async suspend/resume among
other things).

Besides, the fact that you tell people to do something doesn't necessary imply
that they will listen. :-)

I have discussed that with Ben for a couple of times and we have generally
agreed that memory allocation problems during suspend/resume are not avoidable
in general unless we disable __GFP_FS and __GFP_IO at the high level.

Rafael