Messages in this thread | | | Date | Thu, 3 Dec 2015 09:16:47 +0100 | From | Michal Hocko <> | Subject | Re: [PATCH] Improve Atheros ethernet driver not to do order 4 GFP_ATOMIC allocation |
| |
On Wed 02-12-15 22:43:31, Chris Snook wrote: > On Tue, Dec 1, 2015 at 12:35 PM David Miller <davem@davemloft.net> wrote: > > > From: Michal Hocko <mhocko@kernel.org> > > Date: Mon, 30 Nov 2015 14:21:29 +0100 > > > > > On Sat 28-11-15 15:51:13, Pavel Machek wrote: > > >> > > >> atl1c driver is doing order-4 allocation with GFP_ATOMIC > > >> priority. That often breaks networking after resume. Switch to > > >> GFP_KERNEL. Still not ideal, but should be significantly better. > > > > > > It is not clear why GFP_KERNEL can replace GFP_ATOMIC safely neither > > > from the changelog nor from the patch context. > > > > Earlier in the function we do a GFP_KERNEL kmalloc so: > > > > ¯\_(ツ)_/¯ > > > > It should be fine. > > > > AFAICT, the people who benefit from GFP_ATOMIC are the people running all > their storage over NFS/iSCSI who are suspending their machines while > they're so busy they don't have any clean order 4 pagecache to drop, and > want the machine to panic rather than hang.
Why would GFP_KERNEL order-4 allocation hang? It will fail if there are not >=4 order pages available even after reclaim and/or compaction. GFP_ATOMIC allocations should be used only when an access to memory reserves is really required. If the allocation just doesn't want to invoke direct reclaim then GFP_NOWAIT is a more suitable alternative.
-- Michal Hocko SUSE Labs
| |