drivers/gpu/drm/panel/panel-samsung-ld9040.c:240:12: warning: stack frame size of 8312 bytes in function 'ld9040_prepare'

Nick Desaulniers ndesaulniers at google.com
Mon Jun 22 16:50:41 UTC 2020


On Sat, Jun 20, 2020 at 3:09 PM Vladimir Oltean <olteanv at gmail.com> wrote:
>
> On Sat, 20 Jun 2020 at 21:22, kernel test robot <lkp at intel.com> wrote:
> >
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head:   4333a9b0b67bb4e8bcd91bdd80da80b0ec151162
> > commit: 79591b7db21d255db158afaa48c557dcab631a1c spi: Add a PTP system timestamp to the transfer structure
> > date:   9 months ago
> > config: x86_64-randconfig-a014-20200620 (attached as .config)
> > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project f5bbe390d23d7da0ffb110cdb24b583c2dc87eba)
> > reproduce (this is a W=1 build):
> >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         # install x86_64 cross compiling tool for clang build
> >         # apt-get install binutils-x86-64-linux-gnu
> >         git checkout 79591b7db21d255db158afaa48c557dcab631a1c
> >         # save the attached .config to linux build tree
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <lkp at intel.com>
> >
> > All warnings (new ones prefixed by >>, old ones prefixed by <<):
> >
> > >> drivers/gpu/drm/panel/panel-samsung-ld9040.c:240:12: warning: stack frame size of 8312 bytes in function 'ld9040_prepare' [-Wframe-larger-than=]
> > static int ld9040_prepare(struct drm_panel *panel)
> > ^
> > 1 warning generated.
> >
> > vim +/ld9040_prepare +240 drivers/gpu/drm/panel/panel-samsung-ld9040.c
> >
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  239
> > 099b3e8699322e drivers/gpu/drm/panel/panel-ld9040.c Ajay Kumar    2014-07-31 @240  static int ld9040_prepare(struct drm_panel *panel)
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  241  {
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  242       struct ld9040 *ctx = panel_to_ld9040(panel);
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  243       int ret;
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  244
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  245       ret = ld9040_power_on(ctx);
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  246       if (ret < 0)
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  247               return ret;
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  248
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  249       ld9040_init(ctx);
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  250
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  251       ret = ld9040_clear_error(ctx);
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  252
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  253       if (ret < 0)
> > 8141028278c2ea drivers/gpu/drm/panel/panel-ld9040.c Ajay Kumar    2014-07-31  254               ld9040_unprepare(panel);
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  255
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  256       return ret;
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  257  }
> > ff219937763253 drivers/gpu/drm/panel/panel-ld9040.c Andrzej Hajda 2014-03-26  258
> >
> > :::::: The code at line 240 was first introduced by commit
> > :::::: 099b3e8699322efb7229913d2c1651588205f182 drm/panel: ld9040: Add dummy prepare and unprepare routines
> >
> > :::::: TO: Ajay Kumar <ajaykumar.rs at samsung.com>
> > :::::: CC: Thierry Reding <treding at nvidia.com>
> >
> > ---
> > 0-DAY CI Kernel Test Service, Intel Corporation
> > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>
> I really don't get what's the problem here. The listing of
> ld9040_prepare at the given commit and with the given .config is:

I wrote a tool to help debug these.
https://github.com/ClangBuiltLinux/frame-larger-than
If you fetch the randconfig and rebuild with debug info, that tool
will help show you which variables are used in which stack frames and
what their sizes are.  Also note that strange things get dug up from
randconfigs.


>
> 0000000000000630 <ld9040_prepare>:
> {
>  630:    f3 0f 1e fa              endbr64
>  634:    e8 00 00 00 00           callq  639 <ld9040_prepare+0x9>
>             635: R_X86_64_PLT32    __fentry__-0x4
>  639:    41 56                    push   %r14
>     ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
>  63b:    48 8d 77 30              lea    0x30(%rdi),%rsi
> {
>  63f:    41 55                    push   %r13
>  641:    41 54                    push   %r12
>     ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
>  643:    4c 8d 67 f8              lea    -0x8(%rdi),%r12
> {
>  647:    55                       push   %rbp
>  648:    48 89 fd                 mov    %rdi,%rbp
>     ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
>  64b:    bf 02 00 00 00           mov    $0x2,%edi
>  650:    e8 00 00 00 00           callq  655 <ld9040_prepare+0x25>
>             651: R_X86_64_PLT32    regulator_bulk_enable-0x4
>  655:    41 89 c5                 mov    %eax,%r13d
>     if (ret < 0)
>  658:    85 c0                    test   %eax,%eax
>  65a:    0f 88 3f 02 00 00        js     89f <ld9040_prepare+0x26f>
>     msleep(ctx->power_on_delay);
>  660:    48 b8 00 00 00 00 00     movabs $0xdffffc0000000000,%rax
>  667:    fc ff df
>  66a:    48 8d 7d 68              lea    0x68(%rbp),%rdi
>  66e:    48 89 fa                 mov    %rdi,%rdx
>  671:    48 c1 ea 03              shr    $0x3,%rdx
>  675:    0f b6 04 02              movzbl (%rdx,%rax,1),%eax
>  679:    84 c0                    test   %al,%al
>  67b:    74 08                    je     685 <ld9040_prepare+0x55>
>  67d:    3c 03                    cmp    $0x3,%al
>  67f:    0f 8e 38 02 00 00        jle    8bd <ld9040_prepare+0x28d>
>  685:    8b 7d 68                 mov    0x68(%rbp),%edi
>     gpiod_set_value(ctx->reset_gpio, 0);
>  688:    4c 8d 75 60              lea    0x60(%rbp),%r14
>     msleep(ctx->power_on_delay);
>  68c:    e8 00 00 00 00           callq  691 <ld9040_prepare+0x61>
>             68d: R_X86_64_PLT32    msleep-0x4
>     gpiod_set_value(ctx->reset_gpio, 0);
>  691:    4c 89 f2                 mov    %r14,%rdx
>  694:    48 b8 00 00 00 00 00     movabs $0xdffffc0000000000,%rax
>  69b:    fc ff df
>  69e:    48 c1 ea 03              shr    $0x3,%rdx
>  6a2:    80 3c 02 00              cmpb   $0x0,(%rdx,%rax,1)
>  6a6:    0f 85 53 02 00 00        jne    8ff <ld9040_prepare+0x2cf>
>  6ac:    48 8b 7d 60              mov    0x60(%rbp),%rdi
>     msleep(ctx->reset_delay);
>  6b0:    4c 8d 6d 6c              lea    0x6c(%rbp),%r13
>     gpiod_set_value(ctx->reset_gpio, 0);
>  6b4:    31 f6                    xor    %esi,%esi
>  6b6:    e8 00 00 00 00           callq  6bb <ld9040_prepare+0x8b>
>             6b7: R_X86_64_PLT32    gpiod_set_value-0x4
>     msleep(ctx->reset_delay);
>  6bb:    4c 89 ea                 mov    %r13,%rdx
>  6be:    48 b8 00 00 00 00 00     movabs $0xdffffc0000000000,%rax
>  6c5:    fc ff df
>  6c8:    48 c1 ea 03              shr    $0x3,%rdx
>  6cc:    0f b6 14 02              movzbl (%rdx,%rax,1),%edx
>  6d0:    4c 89 e8                 mov    %r13,%rax
>  6d3:    83 e0 07                 and    $0x7,%eax
>  6d6:    83 c0 03                 add    $0x3,%eax
>  6d9:    38 d0                    cmp    %dl,%al
>  6db:    7c 08                    jl     6e5 <ld9040_prepare+0xb5>
>  6dd:    84 d2                    test   %dl,%dl
>  6df:    0f 85 00 02 00 00        jne    8e5 <ld9040_prepare+0x2b5>
>  6e5:    8b 7d 6c                 mov    0x6c(%rbp),%edi
>  6e8:    e8 00 00 00 00           callq  6ed <ld9040_prepare+0xbd>
>             6e9: R_X86_64_PLT32    msleep-0x4
>     gpiod_set_value(ctx->reset_gpio, 1);
>  6ed:    4c 89 f2                 mov    %r14,%rdx
>  6f0:    48 b8 00 00 00 00 00     movabs $0xdffffc0000000000,%rax
>  6f7:    fc ff df
>  6fa:    48 c1 ea 03              shr    $0x3,%rdx
>  6fe:    80 3c 02 00              cmpb   $0x0,(%rdx,%rax,1)
>  702:    0f 85 ea 01 00 00        jne    8f2 <ld9040_prepare+0x2c2>
>  708:    48 8b 7d 60              mov    0x60(%rbp),%rdi
>  70c:    be 01 00 00 00           mov    $0x1,%esi
>  711:    e8 00 00 00 00           callq  716 <ld9040_prepare+0xe6>
>             712: R_X86_64_PLT32    gpiod_set_value-0x4
>     msleep(ctx->reset_delay);
>  716:    4c 89 ea                 mov    %r13,%rdx
>  719:    48 b8 00 00 00 00 00     movabs $0xdffffc0000000000,%rax
>  720:    fc ff df
>  723:    48 c1 ea 03              shr    $0x3,%rdx
>  727:    0f b6 14 02              movzbl (%rdx,%rax,1),%edx
>  72b:    4c 89 e8                 mov    %r13,%rax
>  72e:    83 e0 07                 and    $0x7,%eax
>  731:    83 c0 03                 add    $0x3,%eax
>  734:    38 d0                    cmp    %dl,%al
>  736:    7c 08                    jl     740 <ld9040_prepare+0x110>
>  738:    84 d2                    test   %dl,%dl
>  73a:    0f 85 98 01 00 00        jne    8d8 <ld9040_prepare+0x2a8>
>  740:    8b 7d 6c                 mov    0x6c(%rbp),%edi
>  743:    e8 00 00 00 00           callq  748 <ld9040_prepare+0x118>
>             744: R_X86_64_PLT32    msleep-0x4
>     ld9040_dcs_write_seq_static(ctx, MCS_USER_SETTING, 0x5a, 0x5a);
>  748:    ba 03 00 00 00           mov    $0x3,%edx
>  74d:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             750: R_X86_64_32S    .rodata+0x520
>  754:    4c 89 e7                 mov    %r12,%rdi
>  757:    e8 f4 fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MCS_PANEL_CONDITION,
>  75c:    ba 18 00 00 00           mov    $0x18,%edx
>  761:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             764: R_X86_64_32S    .rodata+0x4e0
>  768:    4c 89 e7                 mov    %r12,%rdi
>  76b:    e8 e0 fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MCS_DISPCTL,
>  770:    ba 06 00 00 00           mov    $0x6,%edx
>  775:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             778: R_X86_64_32S    .rodata+0x4a0
>  77c:    4c 89 e7                 mov    %r12,%rdi
>  77f:    e8 cc fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MCS_MANPWR, 0x04);
>  784:    ba 02 00 00 00           mov    $0x2,%edx
>  789:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             78c: R_X86_64_32S    .rodata+0x460
>  790:    4c 89 e7                 mov    %r12,%rdi
>  793:    e8 b8 fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MCS_POWER_CTRL,
>  798:    ba 08 00 00 00           mov    $0x8,%edx
>  79d:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             7a0: R_X86_64_32S    .rodata+0x420
>  7a4:    4c 89 e7                 mov    %r12,%rdi
>  7a7:    e8 a4 fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MCS_ELVSS_ON, 0x0d, 0x00, 0x16);
>  7ac:    ba 04 00 00 00           mov    $0x4,%edx
>  7b1:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             7b4: R_X86_64_32S    .rodata+0x3e0
>  7b8:    4c 89 e7                 mov    %r12,%rdi
>  7bb:    e8 90 fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MCS_GTCON, 0x09, 0x00, 0x00);
>  7c0:    ba 04 00 00 00           mov    $0x4,%edx
>  7c5:    4c 89 e7                 mov    %r12,%rdi
>  7c8:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             7cb: R_X86_64_32S    .rodata+0x3a0
>  7cf:    e8 7c fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write(ctx, ld9040_gammas[ctx->brightness],
>  7d4:    48 8d bd a8 00 00 00     lea    0xa8(%rbp),%rdi
>  7db:    48 b8 00 00 00 00 00     movabs $0xdffffc0000000000,%rax
>  7e2:    fc ff df
>  7e5:    48 89 fa                 mov    %rdi,%rdx
>  7e8:    48 c1 ea 03              shr    $0x3,%rdx
>  7ec:    0f b6 04 02              movzbl (%rdx,%rax,1),%eax
>  7f0:    84 c0                    test   %al,%al
>  7f2:    74 08                    je     7fc <ld9040_prepare+0x1cc>
>  7f4:    3c 03                    cmp    $0x3,%al
>  7f6:    0f 8e d2 00 00 00        jle    8ce <ld9040_prepare+0x29e>
>  7fc:    48 63 85 a8 00 00 00     movslq 0xa8(%rbp),%rax
>  803:    4c 89 e7                 mov    %r12,%rdi
>  806:    48 8d 14 80              lea    (%rax,%rax,4),%rdx
>  80a:    48 8d 04 50              lea    (%rax,%rdx,2),%rax
>  80e:    ba 16 00 00 00           mov    $0x16,%edx
>  813:    48 8d b4 00 00 00 00     lea    0x0(%rax,%rax,1),%rsi
>  81a:    00
>             817: R_X86_64_32S    .rodata+0x840
>  81b:    e8 30 fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MCS_GAMMA_CTRL, 0x02, 0x5a);
>  820:    ba 03 00 00 00           mov    $0x3,%edx
>  825:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             828: R_X86_64_32S    .rodata+0x2e0
>  82c:    4c 89 e7                 mov    %r12,%rdi
>  82f:    e8 1c fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MIPI_DCS_EXIT_SLEEP_MODE);
>  834:    ba 01 00 00 00           mov    $0x1,%edx
>  839:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             83c: R_X86_64_32S    .rodata+0x360
>  840:    4c 89 e7                 mov    %r12,%rdi
>  843:    e8 08 fc ff ff           callq  450 <ld9040_dcs_write>
>     ld9040_dcs_write_seq_static(ctx, MIPI_DCS_SET_DISPLAY_ON);
>  848:    ba 01 00 00 00           mov    $0x1,%edx
>  84d:    4c 89 e7                 mov    %r12,%rdi
>  850:    48 c7 c6 00 00 00 00     mov    $0x0,%rsi
>             853: R_X86_64_32S    .rodata+0x320
>  857:    e8 f4 fb ff ff           callq  450 <ld9040_dcs_write>
>     int ret = ctx->error;
>  85c:    48 8d bd ac 00 00 00     lea    0xac(%rbp),%rdi
>  863:    48 b8 00 00 00 00 00     movabs $0xdffffc0000000000,%rax
>  86a:    fc ff df
>  86d:    48 89 fa                 mov    %rdi,%rdx
>  870:    48 c1 ea 03              shr    $0x3,%rdx
>  874:    0f b6 14 02              movzbl (%rdx,%rax,1),%edx
>  878:    48 89 f8                 mov    %rdi,%rax
>  87b:    83 e0 07                 and    $0x7,%eax
>  87e:    83 c0 03                 add    $0x3,%eax
>  881:    38 d0                    cmp    %dl,%al
>  883:    7c 04                    jl     889 <ld9040_prepare+0x259>
>  885:    84 d2                    test   %dl,%dl
>  887:    75 3e                    jne    8c7 <ld9040_prepare+0x297>
>  889:    44 8b ad ac 00 00 00     mov    0xac(%rbp),%r13d
>     ctx->error = 0;
>  890:    c7 85 ac 00 00 00 00     movl   $0x0,0xac(%rbp)
>  897:    00 00 00
>     if (ret < 0)
>  89a:    45 85 ed                 test   %r13d,%r13d
>  89d:    78 0b                    js     8aa <ld9040_prepare+0x27a>
> }
>  89f:    5d                       pop    %rbp
>  8a0:    44 89 e8                 mov    %r13d,%eax
>  8a3:    41 5c                    pop    %r12
>  8a5:    41 5d                    pop    %r13
>  8a7:    41 5e                    pop    %r14
>  8a9:    c3                       retq
>
> I don't see it having a stack frame of 8312 bytes?
>
> Thanks,
> -Vladimir
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe at googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/CA%2Bh21hpABfDvthiwq_JwWGpqZ68VJxu5TOBVbw_Gaxpq8j%2BXQg%40mail.gmail.com.



-- 
Thanks,
~Nick Desaulniers


More information about the dri-devel mailing list