Michal Hocko
2011-Feb-15 09:20 UTC
[PATCH] virtio: use __GFP_NOWARN for try_fill_recv in virtnet_poll
virtnet_poll is called from soft IRQ and it tries to allocate GFP_ATOMIC memory (through try_fill_recv). This allocation can fail and we are falling back to schedule_delayed_work in that case. Let's add __GFP_NOWARN to the allocation flags to get rid of the allocator complains for failed allocations: [22798.508903] The following is only an harmless informational message. [22798.508909] Unless you get a _continuous_flood_ of these messages it means [22798.508911] everything is working fine. Allocations from irqs cannot be [22798.508913] perfectly reliable and the kernel is designed to handle that. [22798.508917] loop3: page allocation failure. order:0, mode:0x20, alloc_flags:0x30 pflags:0x80208040 Signed-off-by: Michal Hocko <mhocko at suse.cz> --- drivers/net/virtio_net.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 90a23e4..aea1e51 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -477,7 +477,7 @@ again: } if (vi->num < vi->max / 2) { - if (!try_fill_recv(vi, GFP_ATOMIC)) + if (!try_fill_recv(vi, GFP_ATOMIC|__GFP_NOWARN)) schedule_delayed_work(&vi->refill, 0); } -- 1.7.2.3 -- Michal Hocko SUSE Labs SUSE LINUX s.r.o. Lihovarska 1060/12 190 00 Praha 9 Czech Republic
Michal Hocko
2011-Feb-15 09:35 UTC
[PATCH] virtio: use __GFP_NOWARN for try_fill_recv in virtnet_poll
Hi, we have started seeing a lot of allocator messages complaining about failed allocations from virtnet_poll in soft IRQ. Could you consider the following patch, please? The patch is based on 2.6.38-rc4. ---
Michal Hocko
2011-Feb-15 12:39 UTC
[PATCH] virtio: use __GFP_NOWARN for try_fill_recv in virtnet_poll
On Tue 15-02-11 10:35:27, Michal Hocko wrote: [...]> [22798.508903] The following is only an harmless informational message. > [22798.508909] Unless you get a _continuous_flood_ of these messages it means > [22798.508911] everything is working fine. Allocations from irqs cannot be > [22798.508913] perfectly reliable and the kernel is designed to handle that.I have just realized that the above text is SLES specific so only the line below with stack trace and memory info is printed. Sorry for confusion> [22798.508917] loop3: page allocation failure. order:0, mode:0x20, alloc_flags:0x30 pflags:0x80208040-- Michal Hocko SUSE Labs SUSE LINUX s.r.o. Lihovarska 1060/12 190 00 Praha 9 Czech Republic