• Douglas Anderson's avatar
    r8152: Add __GFP_NOWARN to big allocations · 5cc33f13
    Douglas Anderson authored
    When memory is a little tight on my system, it's pretty easy to see
    warnings that look like this.
    
      ksoftirqd/0: page allocation failure: order:3, mode:0x40a20(GFP_ATOMIC|__GFP_COMP), nodemask=(null),cpuset=/,mems_allowed=0
      ...
      Call trace:
       dump_backtrace+0x0/0x1e8
       show_stack+0x20/0x2c
       dump_stack_lvl+0x60/0x78
       dump_stack+0x18/0x38
       warn_alloc+0x104/0x174
       __alloc_pages+0x588/0x67c
       alloc_rx_agg+0xa0/0x190 [r8152 ...]
       r8152_poll+0x270/0x760 [r8152 ...]
       __napi_poll+0x44/0x1ec
       net_rx_action+0x100/0x300
       __do_softirq+0xec/0x38c
       run_ksoftirqd+0x38/0xec
       smpboot_thread_fn+0xb8/0x248
       kthread+0x134/0x154
       ret_from_fork+0x10/0x20
    
    On a fragmented system it's normal that order 3 allocations will
    sometimes fail, especially atomic ones. The driver handles these
    failures fine and the WARN just creates spam in the logs for this
    case. The __GFP_NOWARN flag is exactly for this situation, so add it
    to the allocation.
    
    NOTE: my testing is on a 5.15 system, but there should be no reason
    that this would be fundamentally different on a mainline kernel.
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Acked-by: default avatarHayes Wang <hayeswang@realtek.com>
    Link: https://lore.kernel.org/r/20230406171411.1.I84dbef45786af440fd269b71e9436a96a8e7a152@changeidSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    5cc33f13
r8152.c 236 KB