Re: arch/powerpc/platforms/52xx/mpc52xx_pm.c:58:5: error: stack frame size of 1040 bytes in function 'mpc52xx_pm_prepare'

From: Nick Desaulniers
Date: Mon Apr 13 2020 - 14:49:17 EST


Apologies for the wrong report. This did uncover three new issues for us:
https://github.com/ClangBuiltLinux/linux/issues/989
https://github.com/ClangBuiltLinux/linux/issues/990
https://github.com/ClangBuiltLinux/linux/issues/991

On Mon, Apr 13, 2020 at 2:29 AM kbuild test robot <lkp@xxxxxxxxx> wrote:
>
> Hi Dirk,
>
> First bad commit (maybe != root cause):
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 8f3d9f354286745c751374f5f1fcafee6b3f3136
> commit: e33a814e772cdc36436c8c188d8c42d019fda639 scripts/dtc: Remove redundant YYLOC global declaration
> date: 2 weeks ago
> config: powerpc-randconfig-a001-20200413 (attached as .config)
> compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project dd030036f0a2ace74d0bd2242cfdbcf726ef565d)
> reproduce:
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> git checkout e33a814e772cdc36436c8c188d8c42d019fda639
> # save the attached .config to linux build tree
> COMPILER=clang make.cross ARCH=powerpc
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kbuild test robot <lkp@xxxxxxxxx>
>
> All errors (new ones prefixed by >>):
>
> >> arch/powerpc/platforms/52xx/mpc52xx_pm.c:58:5: error: stack frame size of 1040 bytes in function 'mpc52xx_pm_prepare' [-Werror,-Wframe-larger-than=]
> int mpc52xx_pm_prepare(void)
> ^
> 1 error generated.
> --
> >> arch/powerpc/platforms/embedded6xx/wii.c:195:7: error: attribute declaration must precede definition [-Werror,-Wignored-attributes]
> if (!machine_is(wii))
> ^
> arch/powerpc/include/asm/machdep.h:248:19: note: expanded from macro 'machine_is'
> __attribute__((weak)); \
> ^
> arch/powerpc/platforms/embedded6xx/wii.c:175:1: note: previous definition is here
> define_machine(wii) {
> ^
> arch/powerpc/include/asm/machdep.h:243:23: note: expanded from macro 'define_machine'
> struct machdep_calls mach_##name __machine_desc =
> ^
> <scratch space>:89:1: note: expanded from here
> mach_wii
> ^
> 1 error generated.
> --
> >> arch/powerpc/platforms/embedded6xx/mvme5100.c:135:58: error: incompatible pointer types passing 'phys_addr_t *' (aka 'unsigned long long *') to parameter of type 'u32 *' (aka 'unsigned int *') [-Werror,-Wincompatible-pointer-types]
> early_read_config_dword(hose, 0, 0, PCI_BASE_ADDRESS_1, &pci_membase);
> ^~~~~~~~~~~~
> arch/powerpc/include/asm/pci-bridge.h:139:32: note: passing argument to parameter 'val' here
> int dev_fn, int where, u32 *val);
> ^
> 1 error generated.
> --
> >> lib/mpi/generic_mpih-mul1.c:37:13: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb);
> ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:790:20: note: expanded from macro 'umul_ppmm'
> : "=r" ((USItype) ph) \
> ~~~~~~~~~~^~
> 1 error generated.
> --
> >> lib/mpi/generic_mpih-mul2.c:36:13: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb);
> ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:790:20: note: expanded from macro 'umul_ppmm'
> : "=r" ((USItype) ph) \
> ~~~~~~~~~~^~
> 1 error generated.
> --
> >> lib/mpi/generic_mpih-mul3.c:36:13: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb);
> ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:790:20: note: expanded from macro 'umul_ppmm'
> : "=r" ((USItype) ph) \
> ~~~~~~~~~~^~
> 1 error generated.
> --
> >> lib/mpi/mpih-div.c:99:16: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:750:21: note: expanded from macro 'sub_ddmmss'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:99:20: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:751:20: note: expanded from macro 'sub_ddmmss'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> >> lib/mpi/mpih-div.c:99:16: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:757:21: note: expanded from macro 'sub_ddmmss'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:99:20: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:758:20: note: expanded from macro 'sub_ddmmss'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> >> lib/mpi/mpih-div.c:99:16: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:764:21: note: expanded from macro 'sub_ddmmss'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:99:20: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:765:20: note: expanded from macro 'sub_ddmmss'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> >> lib/mpi/mpih-div.c:99:16: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:771:21: note: expanded from macro 'sub_ddmmss'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:99:20: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:772:20: note: expanded from macro 'sub_ddmmss'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> >> lib/mpi/mpih-div.c:99:16: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:778:21: note: expanded from macro 'sub_ddmmss'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:99:20: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, d1, d0);
> ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:779:20: note: expanded from macro 'sub_ddmmss'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:120:18: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> add_ssaaaa(n1, n0, r - d0,
> ~~~~~~~~~~~^~~~~~~~~~~~~~~
> lib/mpi/longlong.h:725:21: note: expanded from macro 'add_ssaaaa'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:120:22: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> add_ssaaaa(n1, n0, r - d0,
> ~~~~~~~~~~~~~~~^~~~~~~~~~~
> lib/mpi/longlong.h:726:20: note: expanded from macro 'add_ssaaaa'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:120:18: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> add_ssaaaa(n1, n0, r - d0,
> ~~~~~~~~~~~^~~~~~~~~~~~~~~
> lib/mpi/longlong.h:732:21: note: expanded from macro 'add_ssaaaa'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:120:22: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> add_ssaaaa(n1, n0, r - d0,
> ~~~~~~~~~~~~~~~^~~~~~~~~~~
> lib/mpi/longlong.h:733:20: note: expanded from macro 'add_ssaaaa'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:120:18: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> add_ssaaaa(n1, n0, r - d0,
> ~~~~~~~~~~~^~~~~~~~~~~~~~~
> lib/mpi/longlong.h:739:21: note: expanded from macro 'add_ssaaaa'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:120:22: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> add_ssaaaa(n1, n0, r - d0,
> ~~~~~~~~~~~~~~~^~~~~~~~~~~
> lib/mpi/longlong.h:740:20: note: expanded from macro 'add_ssaaaa'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:129:16: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> umul_ppmm(n1, n0, d0, q);
> ~~~~~~~~~~^~~~~~~~~~~~~~
> lib/mpi/longlong.h:790:20: note: expanded from macro 'umul_ppmm'
> : "=r" ((USItype) ph) \
> ~~~~~~~~~~^~
> lib/mpi/mpih-div.c:137:17: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, 0, d0);
> ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:750:21: note: expanded from macro 'sub_ddmmss'
> : "=r" ((USItype)(sh)), \
> ~~~~~~~~~~^~~
> lib/mpi/mpih-div.c:137:21: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
> sub_ddmmss(n1, n0, n1, n0, 0, d0);
> ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
> lib/mpi/longlong.h:751:20: note: expanded from macro 'sub_ddmmss'
> "=&r" ((USItype)(sl)) \
> ~~~~~~~~~~^~~
> fatal error: too many errors emitted, stopping now [-ferror-limit=]
> 20 errors generated.
>
> vim +/mpc52xx_pm_prepare +58 arch/powerpc/platforms/52xx/mpc52xx_pm.c
>
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 57
> e6c5eb9541f219 Rafael J. Wysocki 2007-10-18 @58 int mpc52xx_pm_prepare(void)
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 59 {
> 75ca399e82726f Grant Likely 2008-01-18 60 struct device_node *np;
> 66ffbe490b6156 Grant Likely 2008-01-24 61 const struct of_device_id immr_ids[] = {
> 66ffbe490b6156 Grant Likely 2008-01-24 62 { .compatible = "fsl,mpc5200-immr", },
> 66ffbe490b6156 Grant Likely 2008-01-24 63 { .compatible = "fsl,mpc5200b-immr", },
> 66ffbe490b6156 Grant Likely 2008-01-24 64 { .type = "soc", .compatible = "mpc5200", }, /* lite5200 */
> 66ffbe490b6156 Grant Likely 2008-01-24 65 { .type = "builtin", .compatible = "mpc5200", }, /* efika */
> 66ffbe490b6156 Grant Likely 2008-01-24 66 {}
> 66ffbe490b6156 Grant Likely 2008-01-24 67 };
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 68 struct resource res;
> 75ca399e82726f Grant Likely 2008-01-18 69
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 70 /* map the whole register space */
> 66ffbe490b6156 Grant Likely 2008-01-24 71 np = of_find_matching_node(NULL, immr_ids);
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 72
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 73 if (of_address_to_resource(np, 0, &res)) {
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 74 pr_err("mpc52xx_pm_prepare(): could not get IMMR address\n");
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 75 of_node_put(np);
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 76 return -ENOSYS;
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 77 }
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 78
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 79 mbar = ioremap(res.start, 0xc000); /* we should map whole region including SRAM */
> fb73538e10c7fc Dmitry Eremin-Solenikov 2010-06-11 80
> 75ca399e82726f Grant Likely 2008-01-18 81 of_node_put(np);
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 82 if (!mbar) {
> 75ca399e82726f Grant Likely 2008-01-18 83 pr_err("mpc52xx_pm_prepare(): could not map registers\n");
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 84 return -ENOSYS;
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 85 }
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 86 /* these offsets are from mpc5200 users manual */
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 87 sdram = mbar + 0x100;
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 88 cdm = mbar + 0x200;
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 89 intr = mbar + 0x500;
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 90 gpiow = mbar + 0xc00;
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 91 sram = mbar + 0x8000; /* Those will be handled by the */
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 92 sram_size = 0x4000; /* bestcomm driver soon */
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 93
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 94 /* call board suspend code, if applicable */
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 95 if (mpc52xx_suspend.board_suspend_prepare)
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 96 mpc52xx_suspend.board_suspend_prepare(mbar);
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 97 else {
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 98 printk(KERN_ALERT "%s: %i don't know how to wake up the board\n",
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 99 __func__, __LINE__);
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 100 goto out_unmap;
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 101 }
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 102
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 103 return 0;
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 104
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 105 out_unmap:
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 106 iounmap(mbar);
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 107 return -ENOSYS;
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 108 }
> 2e1ee1f76684c5 Domen Puncer 2007-05-07 109
>
> :::::: The code at line 58 was first introduced by commit
> :::::: e6c5eb9541f2197a3ffab90b1c7a3250a9b51bf6 PM: Rework struct platform_suspend_ops
>
> :::::: TO: Rafael J. Wysocki <rjw@xxxxxxx>
> :::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxxxxxxxx>
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
>
> --
> 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@xxxxxxxxxxxxxxxxx
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/202004131704.6MH1jcq3%25lkp%40intel.com.



--
Thanks,
~Nick Desaulniers