All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rong Chen <rong.a.chen@intel.com>
To: Chao Yu <yuchao0@huawei.com>, kernel test robot <lkp@intel.com>,
	Chao Yu <chao@kernel.org>
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	linux-kernel@vger.kernel.org, Jaegeuk Kim <jaegeuk@kernel.org>
Subject: Re: [kbuild-all] Re: fs/f2fs/gc.c:622:12: warning: stack frame size of 3056 bytes in function 'get_victim_by_default'
Date: Wed, 13 Jan 2021 14:03:10 +0800	[thread overview]
Message-ID: <57b6a9a7-f69b-67b9-681c-5f236878fbf6@intel.com> (raw)
In-Reply-To: <c59ab262-4b64-794c-3dd9-fa571848562a@huawei.com>



On 1/11/21 4:23 PM, Chao Yu wrote:
> Hello,
>
> Thanks for the report.
>
> I replied for your previous report [1], could you please check that?
>
> [1] 
> https://lore.kernel.org/lkml/8a8ef6b8-84c2-abfe-e758-2fa52a989c72@huawei.com/
>
> That says, in my environment, get_victim_by_default()'s frame size is 
> less than
> 512 bytes, and also after going through related code, I don't see any 
> obvious
> large stack size usage.
>
> Is that issue a powerpc specified issue?

Hi Chao,

The issue can be found on arch mips too:

fs/f2fs/gc.c:622:12: warning: stack frame size of 1672 bytes in function 'get_victim_by_default' [-Wframe-larger-than=]

    static int get_victim_by_default(struct f2fs_sb_info *sbi,
               ^
    1 warning generated.



>
> Could you help to verify powerpc compiling with 
> -Wframe-larger-than=512 after
> reverting that atgc patch? I mean whether get_victim_by_default() 
> already have
> large frame size before applying atgc patch (commit 093749e296e2)?

After reverting commit 093749e29 and set -Wframe-larger-than=512, the 
warning is

fs/f2fs/gc.c:325:12: warning: stack frame size of 912 bytes in function 
'get_victim_by_default' [-Wframe-larger-than=]
static int get_victim_by_default(struct f2fs_sb_info *sbi,

Best Regards,
Rong Chen

>
> On 2021/1/9 21:18, kernel test robot wrote:
>> Hi Chao,
>>
>> FYI, the error/warning still remains.
>>
>> tree: 
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
>> master
>> head:   996e435fd401de35df62ac943ab9402cfe85c430
>> commit: 093749e296e29a4b0162eb925a6701a01e8c9a98 f2fs: support age 
>> threshold based garbage collection
>> date:   4 months ago
>> config: powerpc-randconfig-r033-20210109 (attached as .config)
>> compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 
>> bc556e5685c0f97e79fb7b3c6f15cc5062db8e36)
>> 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 powerpc cross compiling tool for clang build
>>          # apt-get install binutils-powerpc-linux-gnu
>>          # 
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=093749e296e29a4b0162eb925a6701a01e8c9a98
>>          git remote add linus 
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>>          git fetch --no-tags linus master
>>          git checkout 093749e296e29a4b0162eb925a6701a01e8c9a98
>>          # save the attached .config to linux build tree
>>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross 
>> ARCH=powerpc
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@intel.com>
>>
>> All warnings (new ones prefixed by >>):
>>
>>     arch/powerpc/include/asm/io-defs.h:45:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(insw, (unsigned long p, void *b, unsigned long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:182:1: note: expanded from here
>>     __do_insw
>>     ^
>>     arch/powerpc/include/asm/io.h:542:56: note: expanded from macro 
>> '__do_insw'
>>     #define __do_insw(p, b, n) readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), 
>> (n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>     In file included from fs/f2fs/gc.c:10:
>>     In file included from include/linux/backing-dev.h:15:
>>     In file included from include/linux/blkdev.h:13:
>>     In file included from include/linux/pagemap.h:11:
>>     In file included from include/linux/highmem.h:10:
>>     In file included from include/linux/hardirq.h:10:
>>     In file included from arch/powerpc/include/asm/hardirq.h:6:
>>     In file included from include/linux/irq.h:20:
>>     In file included from include/linux/io.h:13:
>>     In file included from arch/powerpc/include/asm/io.h:604:
>>     arch/powerpc/include/asm/io-defs.h:47:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:184:1: note: expanded from here
>>     __do_insl
>>     ^
>>     arch/powerpc/include/asm/io.h:543:56: note: expanded from macro 
>> '__do_insl'
>>     #define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), 
>> (n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>     In file included from fs/f2fs/gc.c:10:
>>     In file included from include/linux/backing-dev.h:15:
>>     In file included from include/linux/blkdev.h:13:
>>     In file included from include/linux/pagemap.h:11:
>>     In file included from include/linux/highmem.h:10:
>>     In file included from include/linux/hardirq.h:10:
>>     In file included from arch/powerpc/include/asm/hardirq.h:6:
>>     In file included from include/linux/irq.h:20:
>>     In file included from include/linux/io.h:13:
>>     In file included from arch/powerpc/include/asm/io.h:604:
>>     arch/powerpc/include/asm/io-defs.h:49:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned 
>> long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:186:1: note: expanded from here
>>     __do_outsb
>>     ^
>>     arch/powerpc/include/asm/io.h:544:58: note: expanded from macro 
>> '__do_outsb'
>>     #define __do_outsb(p, b, n) 
>> writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>     In file included from fs/f2fs/gc.c:10:
>>     In file included from include/linux/backing-dev.h:15:
>>     In file included from include/linux/blkdev.h:13:
>>     In file included from include/linux/pagemap.h:11:
>>     In file included from include/linux/highmem.h:10:
>>     In file included from include/linux/hardirq.h:10:
>>     In file included from arch/powerpc/include/asm/hardirq.h:6:
>>     In file included from include/linux/irq.h:20:
>>     In file included from include/linux/io.h:13:
>>     In file included from arch/powerpc/include/asm/io.h:604:
>>     arch/powerpc/include/asm/io-defs.h:51:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned 
>> long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:188:1: note: expanded from here
>>     __do_outsw
>>     ^
>>     arch/powerpc/include/asm/io.h:545:58: note: expanded from macro 
>> '__do_outsw'
>>     #define __do_outsw(p, b, n) 
>> writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>     In file included from fs/f2fs/gc.c:10:
>>     In file included from include/linux/backing-dev.h:15:
>>     In file included from include/linux/blkdev.h:13:
>>     In file included from include/linux/pagemap.h:11:
>>     In file included from include/linux/highmem.h:10:
>>     In file included from include/linux/hardirq.h:10:
>>     In file included from arch/powerpc/include/asm/hardirq.h:6:
>>     In file included from include/linux/irq.h:20:
>>     In file included from include/linux/io.h:13:
>>     In file included from arch/powerpc/include/asm/io.h:604:
>>     arch/powerpc/include/asm/io-defs.h:53:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned 
>> long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:190:1: note: expanded from here
>>     __do_outsl
>>     ^
>>     arch/powerpc/include/asm/io.h:546:58: note: expanded from macro 
>> '__do_outsl'
>>     #define __do_outsl(p, b, n) 
>> writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>>> fs/f2fs/gc.c:622:12: warning: stack frame size of 3056 bytes in 
>>>> function 'get_victim_by_default' [-Wframe-larger-than=]
>>     static int get_victim_by_default(struct f2fs_sb_info *sbi,
>>                ^
>>     13 warnings generated.
>>
>>
>> vim +/get_victim_by_default +622 fs/f2fs/gc.c
>>
>> 093749e296e29a4 Chao Yu       2020-08-04  613
>> 0a8165d7c2cf139 Jaegeuk Kim   2012-11-29  614  /*
>> 111d2495a8a8fbd Masanari Iida 2013-03-19  615   * This function is 
>> called from two paths.
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  616   * One is garbage 
>> collection and the other is SSR segment selection.
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  617   * When it is called 
>> during GC, it just gets a victim segment
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  618   * and it does not 
>> remove it from dirty seglist.
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  619   * When it is called 
>> from SSR segment selection, it finds a segment
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  620   * which has minimum 
>> valid blocks and removes it from dirty seglist.
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  621   */
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02 @622  static int 
>> get_victim_by_default(struct f2fs_sb_info *sbi,
>> 093749e296e29a4 Chao Yu       2020-08-04  623 unsigned int *result, 
>> int gc_type, int type,
>> 093749e296e29a4 Chao Yu       2020-08-04  624              char 
>> alloc_mode, unsigned long long age)
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  625  {
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  626      struct 
>> dirty_seglist_info *dirty_i = DIRTY_I(sbi);
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  627      struct sit_info 
>> *sm = SIT_I(sbi);
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  628      struct 
>> victim_sel_policy p;
>> 3fa565039e3338f Sheng Yong    2016-09-29  629      unsigned int 
>> secno, last_victim;
>> 04f0b2eaa3b3ee2 Qiuyang Sun   2019-06-05  630      unsigned int 
>> last_segment;
>> 093749e296e29a4 Chao Yu       2020-08-04  631      unsigned int 
>> nsearched;
>> 093749e296e29a4 Chao Yu       2020-08-04  632      bool is_atgc;
>> 97767500781fae9 Qilong Zhang  2020-06-28  633      int ret = 0;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  634
>> 210f41bc048263d Chao Yu       2014-09-15  635 
>> mutex_lock(&dirty_i->seglist_lock);
>> 04f0b2eaa3b3ee2 Qiuyang Sun   2019-06-05  636      last_segment = 
>> MAIN_SECS(sbi) * sbi->segs_per_sec;
>> 210f41bc048263d Chao Yu       2014-09-15  637
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  638      p.alloc_mode = 
>> alloc_mode;
>> 093749e296e29a4 Chao Yu       2020-08-04  639      p.age = age;
>> 093749e296e29a4 Chao Yu       2020-08-04  640 p.age_threshold = 
>> sbi->am.age_threshold;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  641
>> 093749e296e29a4 Chao Yu       2020-08-04  642  retry:
>> 093749e296e29a4 Chao Yu       2020-08-04  643 select_policy(sbi, 
>> gc_type, type, &p);
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  644      p.min_segno = 
>> NULL_SEGNO;
>> 093749e296e29a4 Chao Yu       2020-08-04  645      p.oldest_age = 0;
>> 3fa565039e3338f Sheng Yong    2016-09-29  646      p.min_cost = 
>> get_max_cost(sbi, &p);
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  647
>> 093749e296e29a4 Chao Yu       2020-08-04  648      is_atgc = 
>> (p.gc_mode == GC_AT || p.alloc_mode == AT_SSR);
>> 093749e296e29a4 Chao Yu       2020-08-04  649      nsearched = 0;
>> 093749e296e29a4 Chao Yu       2020-08-04  650
>> 093749e296e29a4 Chao Yu       2020-08-04  651      if (is_atgc)
>> 093749e296e29a4 Chao Yu       2020-08-04  652 
>> SIT_I(sbi)->dirty_min_mtime = ULLONG_MAX;
>> 093749e296e29a4 Chao Yu       2020-08-04  653
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  654      if (*result != 
>> NULL_SEGNO) {
>> 97767500781fae9 Qilong Zhang  2020-06-28  655          if 
>> (!get_valid_blocks(sbi, *result, false)) {
>> 97767500781fae9 Qilong Zhang  2020-06-28  656              ret = 
>> -ENODATA;
>> 97767500781fae9 Qilong Zhang  2020-06-28  657              goto out;
>> 97767500781fae9 Qilong Zhang  2020-06-28  658          }
>> 97767500781fae9 Qilong Zhang  2020-06-28  659
>> 97767500781fae9 Qilong Zhang  2020-06-28  660          if 
>> (sec_usage_check(sbi, GET_SEC_FROM_SEG(sbi, *result)))
>> 97767500781fae9 Qilong Zhang  2020-06-28  661              ret = -EBUSY;
>> 97767500781fae9 Qilong Zhang  2020-06-28  662          else
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  663 p.min_segno = *result;
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  664          goto out;
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  665      }
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  666
>> 97767500781fae9 Qilong Zhang  2020-06-28  667      ret = -ENODATA;
>> 3342bb303bf48dd Chao Yu       2015-10-05  668      if (p.max_search 
>> == 0)
>> 3342bb303bf48dd Chao Yu       2015-10-05  669          goto out;
>> 3342bb303bf48dd Chao Yu       2015-10-05  670
>> e3080b0120a15e6 Chao Yu       2018-10-24  671      if 
>> (__is_large_section(sbi) && p.alloc_mode == LFS) {
>> e3080b0120a15e6 Chao Yu       2018-10-24  672          if 
>> (sbi->next_victim_seg[BG_GC] != NULL_SEGNO) {
>> e3080b0120a15e6 Chao Yu       2018-10-24  673 p.min_segno = 
>> sbi->next_victim_seg[BG_GC];
>> e3080b0120a15e6 Chao Yu       2018-10-24  674 *result = p.min_segno;
>> e3080b0120a15e6 Chao Yu       2018-10-24  675 
>> sbi->next_victim_seg[BG_GC] = NULL_SEGNO;
>> e3080b0120a15e6 Chao Yu       2018-10-24  676              goto 
>> got_result;
>> e3080b0120a15e6 Chao Yu       2018-10-24  677          }
>> e3080b0120a15e6 Chao Yu       2018-10-24  678          if (gc_type == 
>> FG_GC &&
>> e3080b0120a15e6 Chao Yu       2018-10-24  679 
>> sbi->next_victim_seg[FG_GC] != NULL_SEGNO) {
>> e3080b0120a15e6 Chao Yu       2018-10-24  680 p.min_segno = 
>> sbi->next_victim_seg[FG_GC];
>> e3080b0120a15e6 Chao Yu       2018-10-24  681 *result = p.min_segno;
>> e3080b0120a15e6 Chao Yu       2018-10-24  682 
>> sbi->next_victim_seg[FG_GC] = NULL_SEGNO;
>> e3080b0120a15e6 Chao Yu       2018-10-24  683              goto 
>> got_result;
>> e3080b0120a15e6 Chao Yu       2018-10-24  684          }
>> e3080b0120a15e6 Chao Yu       2018-10-24  685      }
>> e3080b0120a15e6 Chao Yu       2018-10-24  686
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  687      last_victim = 
>> sm->last_victim[p.gc_mode];
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  688      if (p.alloc_mode 
>> == LFS && gc_type == FG_GC) {
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  689 p.min_segno = 
>> check_bg_victims(sbi);
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  690          if 
>> (p.min_segno != NULL_SEGNO)
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  691              goto got_it;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  692      }
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  693
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  694      while (1) {
>> da52f8ade40b032 Jack Qiu      2020-06-18  695          unsigned long 
>> cost, *dirty_bitmap;
>> da52f8ade40b032 Jack Qiu      2020-06-18  696          unsigned int 
>> unit_no, segno;
>> da52f8ade40b032 Jack Qiu      2020-06-18  697
>> da52f8ade40b032 Jack Qiu      2020-06-18  698 dirty_bitmap = 
>> p.dirty_bitmap;
>> da52f8ade40b032 Jack Qiu      2020-06-18  699          unit_no = 
>> find_next_bit(dirty_bitmap,
>> da52f8ade40b032 Jack Qiu      2020-06-18  700 last_segment / p.ofs_unit,
>> da52f8ade40b032 Jack Qiu      2020-06-18  701 p.offset / p.ofs_unit);
>> da52f8ade40b032 Jack Qiu      2020-06-18  702          segno = 
>> unit_no * p.ofs_unit;
>> a43f7ec327b0d86 Chao Yu       2015-10-05  703          if (segno >= 
>> last_segment) {
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  704              if 
>> (sm->last_victim[p.gc_mode]) {
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  705 last_segment =
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13 706                      
>> sm->last_victim[p.gc_mode];
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  707 
>> sm->last_victim[p.gc_mode] = 0;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  708 p.offset = 0;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  709 continue;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  710              }
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  711 break;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  712          }
>> a57e564d14d9d12 Jin Xu        2013-09-13  713
>> a57e564d14d9d12 Jin Xu        2013-09-13  714          p.offset = 
>> segno + p.ofs_unit;
>> 688159b6db47a9e Fan Li        2016-02-03  715 nsearched++;
>> 688159b6db47a9e Fan Li        2016-02-03  716
>>
>> :::::: The code at line 622 was first introduced by commit
>> :::::: 7bc0900347e069a1676d28ad6f98cafaf8cfd6e9 f2fs: add garbage 
>> collection functions
>>
>> :::::: TO: Jaegeuk Kim <jaegeuk.kim@samsung.com>
>> :::::: CC: Jaegeuk Kim <jaegeuk.kim@samsung.com>
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>>
> _______________________________________________
> kbuild-all mailing list -- kbuild-all@lists.01.org
> To unsubscribe send an email to kbuild-all-leave@lists.01.org


WARNING: multiple messages have this Message-ID (diff)
From: Rong Chen <rong.a.chen@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: fs/f2fs/gc.c:622:12: warning: stack frame size of 3056 bytes in function 'get_victim_by_default'
Date: Wed, 13 Jan 2021 14:03:10 +0800	[thread overview]
Message-ID: <57b6a9a7-f69b-67b9-681c-5f236878fbf6@intel.com> (raw)
In-Reply-To: <c59ab262-4b64-794c-3dd9-fa571848562a@huawei.com>

[-- Attachment #1: Type: text/plain, Size: 20258 bytes --]



On 1/11/21 4:23 PM, Chao Yu wrote:
> Hello,
>
> Thanks for the report.
>
> I replied for your previous report [1], could you please check that?
>
> [1] 
> https://lore.kernel.org/lkml/8a8ef6b8-84c2-abfe-e758-2fa52a989c72(a)huawei.com/
>
> That says, in my environment, get_victim_by_default()'s frame size is 
> less than
> 512 bytes, and also after going through related code, I don't see any 
> obvious
> large stack size usage.
>
> Is that issue a powerpc specified issue?

Hi Chao,

The issue can be found on arch mips too:

fs/f2fs/gc.c:622:12: warning: stack frame size of 1672 bytes in function 'get_victim_by_default' [-Wframe-larger-than=]

    static int get_victim_by_default(struct f2fs_sb_info *sbi,
               ^
    1 warning generated.



>
> Could you help to verify powerpc compiling with 
> -Wframe-larger-than=512 after
> reverting that atgc patch? I mean whether get_victim_by_default() 
> already have
> large frame size before applying atgc patch (commit 093749e296e2)?

After reverting commit 093749e29 and set -Wframe-larger-than=512, the 
warning is

fs/f2fs/gc.c:325:12: warning: stack frame size of 912 bytes in function 
'get_victim_by_default' [-Wframe-larger-than=]
static int get_victim_by_default(struct f2fs_sb_info *sbi,

Best Regards,
Rong Chen

>
> On 2021/1/9 21:18, kernel test robot wrote:
>> Hi Chao,
>>
>> FYI, the error/warning still remains.
>>
>> tree: 
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
>> master
>> head:   996e435fd401de35df62ac943ab9402cfe85c430
>> commit: 093749e296e29a4b0162eb925a6701a01e8c9a98 f2fs: support age 
>> threshold based garbage collection
>> date:   4 months ago
>> config: powerpc-randconfig-r033-20210109 (attached as .config)
>> compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 
>> bc556e5685c0f97e79fb7b3c6f15cc5062db8e36)
>> 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 powerpc cross compiling tool for clang build
>>          # apt-get install binutils-powerpc-linux-gnu
>>          # 
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=093749e296e29a4b0162eb925a6701a01e8c9a98
>>          git remote add linus 
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>>          git fetch --no-tags linus master
>>          git checkout 093749e296e29a4b0162eb925a6701a01e8c9a98
>>          # save the attached .config to linux build tree
>>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross 
>> ARCH=powerpc
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@intel.com>
>>
>> All warnings (new ones prefixed by >>):
>>
>>     arch/powerpc/include/asm/io-defs.h:45:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(insw, (unsigned long p, void *b, unsigned long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:182:1: note: expanded from here
>>     __do_insw
>>     ^
>>     arch/powerpc/include/asm/io.h:542:56: note: expanded from macro 
>> '__do_insw'
>>     #define __do_insw(p, b, n) readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), 
>> (n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>     In file included from fs/f2fs/gc.c:10:
>>     In file included from include/linux/backing-dev.h:15:
>>     In file included from include/linux/blkdev.h:13:
>>     In file included from include/linux/pagemap.h:11:
>>     In file included from include/linux/highmem.h:10:
>>     In file included from include/linux/hardirq.h:10:
>>     In file included from arch/powerpc/include/asm/hardirq.h:6:
>>     In file included from include/linux/irq.h:20:
>>     In file included from include/linux/io.h:13:
>>     In file included from arch/powerpc/include/asm/io.h:604:
>>     arch/powerpc/include/asm/io-defs.h:47:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:184:1: note: expanded from here
>>     __do_insl
>>     ^
>>     arch/powerpc/include/asm/io.h:543:56: note: expanded from macro 
>> '__do_insl'
>>     #define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), 
>> (n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>     In file included from fs/f2fs/gc.c:10:
>>     In file included from include/linux/backing-dev.h:15:
>>     In file included from include/linux/blkdev.h:13:
>>     In file included from include/linux/pagemap.h:11:
>>     In file included from include/linux/highmem.h:10:
>>     In file included from include/linux/hardirq.h:10:
>>     In file included from arch/powerpc/include/asm/hardirq.h:6:
>>     In file included from include/linux/irq.h:20:
>>     In file included from include/linux/io.h:13:
>>     In file included from arch/powerpc/include/asm/io.h:604:
>>     arch/powerpc/include/asm/io-defs.h:49:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned 
>> long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:186:1: note: expanded from here
>>     __do_outsb
>>     ^
>>     arch/powerpc/include/asm/io.h:544:58: note: expanded from macro 
>> '__do_outsb'
>>     #define __do_outsb(p, b, n) 
>> writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>     In file included from fs/f2fs/gc.c:10:
>>     In file included from include/linux/backing-dev.h:15:
>>     In file included from include/linux/blkdev.h:13:
>>     In file included from include/linux/pagemap.h:11:
>>     In file included from include/linux/highmem.h:10:
>>     In file included from include/linux/hardirq.h:10:
>>     In file included from arch/powerpc/include/asm/hardirq.h:6:
>>     In file included from include/linux/irq.h:20:
>>     In file included from include/linux/io.h:13:
>>     In file included from arch/powerpc/include/asm/io.h:604:
>>     arch/powerpc/include/asm/io-defs.h:51:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned 
>> long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:188:1: note: expanded from here
>>     __do_outsw
>>     ^
>>     arch/powerpc/include/asm/io.h:545:58: note: expanded from macro 
>> '__do_outsw'
>>     #define __do_outsw(p, b, n) 
>> writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>     In file included from fs/f2fs/gc.c:10:
>>     In file included from include/linux/backing-dev.h:15:
>>     In file included from include/linux/blkdev.h:13:
>>     In file included from include/linux/pagemap.h:11:
>>     In file included from include/linux/highmem.h:10:
>>     In file included from include/linux/hardirq.h:10:
>>     In file included from arch/powerpc/include/asm/hardirq.h:6:
>>     In file included from include/linux/irq.h:20:
>>     In file included from include/linux/io.h:13:
>>     In file included from arch/powerpc/include/asm/io.h:604:
>>     arch/powerpc/include/asm/io-defs.h:53:1: warning: performing 
>> pointer arithmetic on a null pointer has undefined behavior 
>> [-Wnull-pointer-arithmetic]
>>     DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned 
>> long c),
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>     arch/powerpc/include/asm/io.h:601:3: note: expanded from macro 
>> 'DEF_PCI_AC_NORET'
>>                     __do_##name al;                                 \
>>                     ^~~~~~~~~~~~~~
>>     <scratch space>:190:1: note: expanded from here
>>     __do_outsl
>>     ^
>>     arch/powerpc/include/asm/io.h:546:58: note: expanded from macro 
>> '__do_outsl'
>>     #define __do_outsl(p, b, n) 
>> writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
>> ~~~~~~~~~~~~~~~~~~~~~^
>>>> fs/f2fs/gc.c:622:12: warning: stack frame size of 3056 bytes in 
>>>> function 'get_victim_by_default' [-Wframe-larger-than=]
>>     static int get_victim_by_default(struct f2fs_sb_info *sbi,
>>                ^
>>     13 warnings generated.
>>
>>
>> vim +/get_victim_by_default +622 fs/f2fs/gc.c
>>
>> 093749e296e29a4 Chao Yu       2020-08-04  613
>> 0a8165d7c2cf139 Jaegeuk Kim   2012-11-29  614  /*
>> 111d2495a8a8fbd Masanari Iida 2013-03-19  615   * This function is 
>> called from two paths.
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  616   * One is garbage 
>> collection and the other is SSR segment selection.
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  617   * When it is called 
>> during GC, it just gets a victim segment
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  618   * and it does not 
>> remove it from dirty seglist.
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  619   * When it is called 
>> from SSR segment selection, it finds a segment
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  620   * which has minimum 
>> valid blocks and removes it from dirty seglist.
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  621   */
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02 @622  static int 
>> get_victim_by_default(struct f2fs_sb_info *sbi,
>> 093749e296e29a4 Chao Yu       2020-08-04  623 unsigned int *result, 
>> int gc_type, int type,
>> 093749e296e29a4 Chao Yu       2020-08-04  624              char 
>> alloc_mode, unsigned long long age)
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  625  {
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  626      struct 
>> dirty_seglist_info *dirty_i = DIRTY_I(sbi);
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  627      struct sit_info 
>> *sm = SIT_I(sbi);
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  628      struct 
>> victim_sel_policy p;
>> 3fa565039e3338f Sheng Yong    2016-09-29  629      unsigned int 
>> secno, last_victim;
>> 04f0b2eaa3b3ee2 Qiuyang Sun   2019-06-05  630      unsigned int 
>> last_segment;
>> 093749e296e29a4 Chao Yu       2020-08-04  631      unsigned int 
>> nsearched;
>> 093749e296e29a4 Chao Yu       2020-08-04  632      bool is_atgc;
>> 97767500781fae9 Qilong Zhang  2020-06-28  633      int ret = 0;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  634
>> 210f41bc048263d Chao Yu       2014-09-15  635 
>> mutex_lock(&dirty_i->seglist_lock);
>> 04f0b2eaa3b3ee2 Qiuyang Sun   2019-06-05  636      last_segment = 
>> MAIN_SECS(sbi) * sbi->segs_per_sec;
>> 210f41bc048263d Chao Yu       2014-09-15  637
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  638      p.alloc_mode = 
>> alloc_mode;
>> 093749e296e29a4 Chao Yu       2020-08-04  639      p.age = age;
>> 093749e296e29a4 Chao Yu       2020-08-04  640 p.age_threshold = 
>> sbi->am.age_threshold;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  641
>> 093749e296e29a4 Chao Yu       2020-08-04  642  retry:
>> 093749e296e29a4 Chao Yu       2020-08-04  643 select_policy(sbi, 
>> gc_type, type, &p);
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  644      p.min_segno = 
>> NULL_SEGNO;
>> 093749e296e29a4 Chao Yu       2020-08-04  645      p.oldest_age = 0;
>> 3fa565039e3338f Sheng Yong    2016-09-29  646      p.min_cost = 
>> get_max_cost(sbi, &p);
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  647
>> 093749e296e29a4 Chao Yu       2020-08-04  648      is_atgc = 
>> (p.gc_mode == GC_AT || p.alloc_mode == AT_SSR);
>> 093749e296e29a4 Chao Yu       2020-08-04  649      nsearched = 0;
>> 093749e296e29a4 Chao Yu       2020-08-04  650
>> 093749e296e29a4 Chao Yu       2020-08-04  651      if (is_atgc)
>> 093749e296e29a4 Chao Yu       2020-08-04  652 
>> SIT_I(sbi)->dirty_min_mtime = ULLONG_MAX;
>> 093749e296e29a4 Chao Yu       2020-08-04  653
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  654      if (*result != 
>> NULL_SEGNO) {
>> 97767500781fae9 Qilong Zhang  2020-06-28  655          if 
>> (!get_valid_blocks(sbi, *result, false)) {
>> 97767500781fae9 Qilong Zhang  2020-06-28  656              ret = 
>> -ENODATA;
>> 97767500781fae9 Qilong Zhang  2020-06-28  657              goto out;
>> 97767500781fae9 Qilong Zhang  2020-06-28  658          }
>> 97767500781fae9 Qilong Zhang  2020-06-28  659
>> 97767500781fae9 Qilong Zhang  2020-06-28  660          if 
>> (sec_usage_check(sbi, GET_SEC_FROM_SEG(sbi, *result)))
>> 97767500781fae9 Qilong Zhang  2020-06-28  661              ret = -EBUSY;
>> 97767500781fae9 Qilong Zhang  2020-06-28  662          else
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  663 p.min_segno = *result;
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  664          goto out;
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  665      }
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  666
>> 97767500781fae9 Qilong Zhang  2020-06-28  667      ret = -ENODATA;
>> 3342bb303bf48dd Chao Yu       2015-10-05  668      if (p.max_search 
>> == 0)
>> 3342bb303bf48dd Chao Yu       2015-10-05  669          goto out;
>> 3342bb303bf48dd Chao Yu       2015-10-05  670
>> e3080b0120a15e6 Chao Yu       2018-10-24  671      if 
>> (__is_large_section(sbi) && p.alloc_mode == LFS) {
>> e3080b0120a15e6 Chao Yu       2018-10-24  672          if 
>> (sbi->next_victim_seg[BG_GC] != NULL_SEGNO) {
>> e3080b0120a15e6 Chao Yu       2018-10-24  673 p.min_segno = 
>> sbi->next_victim_seg[BG_GC];
>> e3080b0120a15e6 Chao Yu       2018-10-24  674 *result = p.min_segno;
>> e3080b0120a15e6 Chao Yu       2018-10-24  675 
>> sbi->next_victim_seg[BG_GC] = NULL_SEGNO;
>> e3080b0120a15e6 Chao Yu       2018-10-24  676              goto 
>> got_result;
>> e3080b0120a15e6 Chao Yu       2018-10-24  677          }
>> e3080b0120a15e6 Chao Yu       2018-10-24  678          if (gc_type == 
>> FG_GC &&
>> e3080b0120a15e6 Chao Yu       2018-10-24  679 
>> sbi->next_victim_seg[FG_GC] != NULL_SEGNO) {
>> e3080b0120a15e6 Chao Yu       2018-10-24  680 p.min_segno = 
>> sbi->next_victim_seg[FG_GC];
>> e3080b0120a15e6 Chao Yu       2018-10-24  681 *result = p.min_segno;
>> e3080b0120a15e6 Chao Yu       2018-10-24  682 
>> sbi->next_victim_seg[FG_GC] = NULL_SEGNO;
>> e3080b0120a15e6 Chao Yu       2018-10-24  683              goto 
>> got_result;
>> e3080b0120a15e6 Chao Yu       2018-10-24  684          }
>> e3080b0120a15e6 Chao Yu       2018-10-24  685      }
>> e3080b0120a15e6 Chao Yu       2018-10-24  686
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  687      last_victim = 
>> sm->last_victim[p.gc_mode];
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  688      if (p.alloc_mode 
>> == LFS && gc_type == FG_GC) {
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  689 p.min_segno = 
>> check_bg_victims(sbi);
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  690          if 
>> (p.min_segno != NULL_SEGNO)
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  691              goto got_it;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  692      }
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  693
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  694      while (1) {
>> da52f8ade40b032 Jack Qiu      2020-06-18  695          unsigned long 
>> cost, *dirty_bitmap;
>> da52f8ade40b032 Jack Qiu      2020-06-18  696          unsigned int 
>> unit_no, segno;
>> da52f8ade40b032 Jack Qiu      2020-06-18  697
>> da52f8ade40b032 Jack Qiu      2020-06-18  698 dirty_bitmap = 
>> p.dirty_bitmap;
>> da52f8ade40b032 Jack Qiu      2020-06-18  699          unit_no = 
>> find_next_bit(dirty_bitmap,
>> da52f8ade40b032 Jack Qiu      2020-06-18  700 last_segment / p.ofs_unit,
>> da52f8ade40b032 Jack Qiu      2020-06-18  701 p.offset / p.ofs_unit);
>> da52f8ade40b032 Jack Qiu      2020-06-18  702          segno = 
>> unit_no * p.ofs_unit;
>> a43f7ec327b0d86 Chao Yu       2015-10-05  703          if (segno >= 
>> last_segment) {
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  704              if 
>> (sm->last_victim[p.gc_mode]) {
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  705 last_segment =
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13 706                      
>> sm->last_victim[p.gc_mode];
>> e066b83c9b40f3a Jaegeuk Kim   2017-04-13  707 
>> sm->last_victim[p.gc_mode] = 0;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  708 p.offset = 0;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  709 continue;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  710              }
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  711 break;
>> 7bc0900347e069a Jaegeuk Kim   2012-11-02  712          }
>> a57e564d14d9d12 Jin Xu        2013-09-13  713
>> a57e564d14d9d12 Jin Xu        2013-09-13  714          p.offset = 
>> segno + p.ofs_unit;
>> 688159b6db47a9e Fan Li        2016-02-03  715 nsearched++;
>> 688159b6db47a9e Fan Li        2016-02-03  716
>>
>> :::::: The code at line 622 was first introduced by commit
>> :::::: 7bc0900347e069a1676d28ad6f98cafaf8cfd6e9 f2fs: add garbage 
>> collection functions
>>
>> :::::: TO: Jaegeuk Kim <jaegeuk.kim@samsung.com>
>> :::::: CC: Jaegeuk Kim <jaegeuk.kim@samsung.com>
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
>>
> _______________________________________________
> kbuild-all mailing list -- kbuild-all(a)lists.01.org
> To unsubscribe send an email to kbuild-all-leave(a)lists.01.org

  reply	other threads:[~2021-01-13  6:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-09 13:18 fs/f2fs/gc.c:622:12: warning: stack frame size of 3056 bytes in function 'get_victim_by_default' kernel test robot
2021-01-09 13:18 ` kernel test robot
2021-01-11  8:23 ` Chao Yu
2021-01-11  8:23   ` Chao Yu
2021-01-13  6:03   ` Rong Chen [this message]
2021-01-13  6:03     ` Rong Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57b6a9a7-f69b-67b9-681c-5f236878fbf6@intel.com \
    --to=rong.a.chen@intel.com \
    --cc=chao@kernel.org \
    --cc=clang-built-linux@googlegroups.com \
    --cc=jaegeuk@kernel.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=yuchao0@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.