Subject: Re: [PATCH] net/mlx5: reduce stack usage in qp_read_field

From: Leon Romanovsky <[email-masked]>
Date: Tue, 5 May 2020 09:10:54 +0300

On Mon, May 04, 2020 at 05:41:56PM +0200, Arnd Bergmann wrote:
> On Sun, May 3, 2020 at 7:30 AM Leon Romanovsky <[email-masked]> wrote:
> > On Thu, Apr 30, 2020 at 04:37:14PM +0200, Arnd Bergmann wrote:
> > > On Thu, Apr 30, 2020 at 7:22 AM Leon Romanovsky <[email-masked]> wrote:
> > >
> > > While warning limit is generally 1024 bytes for 32-bit architectures,
> > > and 2048 bytes fro 64-bit architectures,  we should probably
> > > reduce the latter to something like 1280 bytes and fix up the
> > > warnings that introduces.
> >
> > It a chicken and an egg problem, I tried to use default frame size, but
> > the output of my kernel build was constantly flooded with those warnings
> > and made hard to spot real issues in the code I developed.
> >
>
> When did you last try? I usually send patches whenever I see a new
> warning, so there really shouldn't be any such warnings in the mainline
> kernel except for cases where patches are still under discussion.
>
> If you have a configuration in which you see lots of frame size warnings,
> can you send me that .config file for that? It is possible that one or
> more of the patches in my backlog fix a bunch of those issues
> and need to be resent.

I tried now (your patch is not in that branch yet).

➜  kernel git:(m/ece) mkt build
Start kernel compilation in silent mode
arch/x86/events/amd/ibs.c: In function ‘perf_ibs_handle_irq’:
arch/x86/events/amd/ibs.c:681:1: warning: the frame size of 1152 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  681 | }
      | ^
fs/select.c: In function ‘do_select’:
fs/select.c:611:1: warning: the frame size of 1136 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  611 | }
      | ^
fs/select.c: In function ‘do_sys_poll’:
fs/select.c:1023:1: warning: the frame size of 1312 bytes is larger than 1024 bytes [-Wframe-larger-than=]
 1023 | }
      | ^
drivers/video/fbdev/cirrusfb.o: warning: objtool: cirrusfb_set_par_foo.cold()+0x25f: sibling call from callable instruction with modified stack frame
net/core/rtnetlink.c: In function ‘__rtnl_newlink’:
net/core/rtnetlink.c:3379:1: warning: the frame size of 1280 bytes is larger than 1024 bytes [-Wframe-larger-than=]
 3379 | }
      | ^
q
drivers/acpi/processor_thermal.c: In function ‘cpu_has_cpufreq’:
drivers/acpi/processor_thermal.c:66:1: warning: the frame size of 1472 bytes is larger than 1024 bytes [-Wframe-larger-than=]
   66 | }
      | ^
drivers/tty/serial/8250/8250_core.c: In function ‘serial8250_probe’:
drivers/tty/serial/8250/8250_core.c:849:1: warning: the frame size of 1144 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  849 | }
      | ^
drivers/tty/serial/8250/8250_pnp.c: In function ‘serial_pnp_probe’:
drivers/tty/serial/8250/8250_pnp.c:490:1: warning: the frame size of 1120 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  490 | }
      | ^
drivers/tty/serial/8250/8250_pci.c: In function ‘pciserial_init_ports’:
drivers/tty/serial/8250/8250_pci.c:3952:1: warning: the frame size of 1160 bytes is larger than 1024 bytes [-Wframe-larger-than=]
 3952 | }
      | ^
drivers/tty/serial/8250/8250_exar.c: In function ‘exar_pci_probe’:
drivers/tty/serial/8250/8250_exar.c:641:1: warning: the frame size of 1168 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  641 | }
      | ^
drivers/tty/serial/8250/8250_lpss.c: In function ‘lpss8250_probe.part.0’:
drivers/tty/serial/8250/8250_lpss.c:342:1: warning: the frame size of 1152 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  342 | }
      | ^
drivers/tty/serial/8250/8250_mid.c: In function ‘mid8250_probe.part.0’:
drivers/tty/serial/8250/8250_mid.c:337:1: warning: the frame size of 1128 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  337 | }
      | ^
net/ipv6/ipv6_sockglue.c: In function ‘do_ipv6_setsockopt.isra.0’:
net/ipv6/ipv6_sockglue.c:937:1: warning: the frame size of 1088 bytes is larger than 1024 bytes [-Wframe-larger-than=]
net/ipv6/ipv6_sockglue.c:937:1: warning: the frame size of 1088 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  937 | }
      | ^
drivers/net/tun.o: warning: objtool: tun_chr_ioctl.cold()+0x107: sibling call from callable instruction with modified stack frame
drivers/net/ethernet/mellanox/mlx5/core/debugfs.c: In function ‘qp_read_field.isra.0’:
drivers/net/ethernet/mellanox/mlx5/core/debugfs.c:274:1: warning: the frame size of 1312 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  274 | }
      | ^

drivers/infiniband/core/nldev.c: In function ‘nldev_newlink’:
drivers/infiniband/core/nldev.c:1547:1: warning: the frame size of 1056 bytes is larger than 1024 bytes [-Wframe-larger-than=]
 1547 | }
      | ^
drivers/infiniband/core/nldev.c: In function ‘nldev_get_chardev’:
drivers/infiniband/core/nldev.c:1658:1: warning: the frame size of 1080 bytes is larger than 1024 bytes [-Wframe-larger-than=]
 1658 | }
       | ^
drivers/infiniband/core/nldev.c: In function ‘res_get_common_dumpit’:
drivers/infiniband/core/nldev.c:1443:1: warning: the frame size of 1040 bytes is larger than 1024 bytes [-Wframe-larger-than=]
 1443 | }
      | ^
drivers/infiniband/sw/siw/siw_qp_tx.c: In function ‘siw_tx_hdt’:
drivers/infiniband/sw/siw/siw_qp_tx.c:658:1: warning: the frame size of 1232 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  658 | }
      | ^
drivers/infiniband/hw/mlx5/qp.c: In function ‘_mlx5_ib_post_send’:
drivers/infiniband/hw/mlx5/qp.c:5636:1: warning: the frame size of 1384 bytes is larger than 1024 bytes [-Wframe-larger-than=]
 5636 | }
      | ^

>       Arnd