All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v3 4/6] powerpc/sysfs: Show idle_purr and idle_spurr for every CPU
Date: Thu, 12 Mar 2020 07:13:08 +0800	[thread overview]
Message-ID: <202003120709.CoLug8WW%lkp@intel.com> (raw)
In-Reply-To: <1583919461-27405-5-git-send-email-ego@linux.vnet.ibm.com>

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

Hi "Gautham,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on powerpc/next]
[also build test WARNING on linus/master v5.6-rc5 next-20200311]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Gautham-R-Shenoy/Track-and-expose-idle-PURR-and-SPURR-ticks/20200312-041724
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-rhel-kconfig (attached as .config)
compiler: powerpc64le-linux-gcc (GCC) 9.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=9.2.0 make.cross ARCH=powerpc 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from include/linux/swab.h:5,
                    from include/uapi/linux/byteorder/little_endian.h:13,
                    from include/linux/byteorder/little_endian.h:5,
                    from arch/powerpc/include/uapi/asm/byteorder.h:12,
                    from include/asm-generic/bitops/le.h:6,
                    from arch/powerpc/include/asm/bitops.h:250,
                    from include/linux/bitops.h:29,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/lockdep.h:27,
                    from include/linux/spinlock_types.h:18,
                    from arch/powerpc/include/asm/lppaca.h:45,
                    from arch/powerpc/include/asm/paca.h:17,
                    from arch/powerpc/include/asm/current.h:13,
                    from include/linux/sched.h:12,
                    from include/linux/ratelimit.h:6,
                    from include/linux/dev_printk.h:16,
                    from include/linux/device.h:15,
                    from arch/powerpc/kernel/sysfs.c:2:
   arch/powerpc/include/asm/idle.h: In function 'update_idle_purr_accounting':
   arch/powerpc/include/asm/idle.h:25:28: error: implicit declaration of function 'get_lppaca'; did you mean 'get_paca'? [-Werror=implicit-function-declaration]
      25 |  wait_cycles = be64_to_cpu(get_lppaca()->wait_state_cycles);
         |                            ^~~~~~~~~~
   include/uapi/linux/swab.h:128:54: note: in definition of macro '__swab64'
     128 | #define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
         |                                                      ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__be64_to_cpu'
      93 | #define be64_to_cpu __be64_to_cpu
         |                     ^~~~~~~~~~~~~
   arch/powerpc/include/asm/idle.h:25:16: note: in expansion of macro 'be64_to_cpu'
      25 |  wait_cycles = be64_to_cpu(get_lppaca()->wait_state_cycles);
         |                ^~~~~~~~~~~
   arch/powerpc/include/asm/idle.h:25:40: error: invalid type argument of '->' (have 'int')
      25 |  wait_cycles = be64_to_cpu(get_lppaca()->wait_state_cycles);
         |                                        ^~
   include/uapi/linux/swab.h:128:54: note: in definition of macro '__swab64'
     128 | #define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
         |                                                      ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__be64_to_cpu'
      93 | #define be64_to_cpu __be64_to_cpu
         |                     ^~~~~~~~~~~~~
   arch/powerpc/include/asm/idle.h:25:16: note: in expansion of macro 'be64_to_cpu'
      25 |  wait_cycles = be64_to_cpu(get_lppaca()->wait_state_cycles);
         |                ^~~~~~~~~~~
   In file included from arch/powerpc/kernel/sysfs.c:22:
   arch/powerpc/include/asm/idle.h:27:14: error: invalid type argument of '->' (have 'int')
      27 |  get_lppaca()->wait_state_cycles = cpu_to_be64(wait_cycles);
         |              ^~
   arch/powerpc/include/asm/idle.h: In function 'pseries_idle_prolog':
   arch/powerpc/include/asm/idle.h:47:14: error: invalid type argument of '->' (have 'int')
      47 |  get_lppaca()->idle = 1;
         |              ^~
   arch/powerpc/include/asm/idle.h: In function 'pseries_idle_epilog':
   arch/powerpc/include/asm/idle.h:54:14: error: invalid type argument of '->' (have 'int')
      54 |  get_lppaca()->idle = 0;
         |              ^~
   In file included from include/linux/dev_printk.h:14,
                    from include/linux/device.h:15,
                    from arch/powerpc/kernel/sysfs.c:2:
   arch/powerpc/include/asm/idle.h: In function 'read_this_idle_purr':
   arch/powerpc/include/asm/idle.h:66:27: error: invalid type argument of '->' (have 'int')
      66 |  if (unlikely(get_lppaca()->idle == 1)) {
         |                           ^~
   include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
      78 | # define unlikely(x) __builtin_expect(!!(x), 0)
         |                                          ^
   In file included from include/linux/swab.h:5,
                    from include/uapi/linux/byteorder/little_endian.h:13,
                    from include/linux/byteorder/little_endian.h:5,
                    from arch/powerpc/include/uapi/asm/byteorder.h:12,
                    from include/asm-generic/bitops/le.h:6,
                    from arch/powerpc/include/asm/bitops.h:250,
                    from include/linux/bitops.h:29,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/lockdep.h:27,
                    from include/linux/spinlock_types.h:18,
                    from arch/powerpc/include/asm/lppaca.h:45,
                    from arch/powerpc/include/asm/paca.h:17,
                    from arch/powerpc/include/asm/current.h:13,
                    from include/linux/sched.h:12,
                    from include/linux/ratelimit.h:6,
                    from include/linux/dev_printk.h:16,
                    from include/linux/device.h:15,
                    from arch/powerpc/kernel/sysfs.c:2:
   arch/powerpc/include/asm/idle.h:71:33: error: invalid type argument of '->' (have 'int')
      71 |  return be64_to_cpu(get_lppaca()->wait_state_cycles);
         |                                 ^~
   include/uapi/linux/swab.h:128:54: note: in definition of macro '__swab64'
     128 | #define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
         |                                                      ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__be64_to_cpu'
      93 | #define be64_to_cpu __be64_to_cpu
         |                     ^~~~~~~~~~~~~
   arch/powerpc/include/asm/idle.h:71:9: note: in expansion of macro 'be64_to_cpu'
      71 |  return be64_to_cpu(get_lppaca()->wait_state_cycles);
         |         ^~~~~~~~~~~
   In file included from arch/powerpc/kernel/sysfs.c:22:
   arch/powerpc/include/asm/idle.h: In function 'read_this_idle_spurr':
   arch/powerpc/include/asm/idle.h:82:18: error: invalid type argument of '->' (have 'int')
      82 |  if (get_lppaca()->idle == 1) {
         |                  ^~
   cc1: some warnings being treated as errors

vim +/__be64_to_cpu +93 include/linux/byteorder/generic.h

^1da177e4c3f41 Linus Torvalds 2005-04-16    4  
^1da177e4c3f41 Linus Torvalds 2005-04-16    5  /*
90a856436ddafb Geoff Levand   2014-08-06    6   * linux/byteorder/generic.h
^1da177e4c3f41 Linus Torvalds 2005-04-16    7   * Generic Byte-reordering support
^1da177e4c3f41 Linus Torvalds 2005-04-16    8   *
e0487992ce1dd7 Ed L. Cashin   2005-09-19    9   * The "... p" macros, like le64_to_cpup, can be used with pointers
e0487992ce1dd7 Ed L. Cashin   2005-09-19   10   * to unaligned data, but there will be a performance penalty on 
e0487992ce1dd7 Ed L. Cashin   2005-09-19   11   * some architectures.  Use get_unaligned for unaligned data.
e0487992ce1dd7 Ed L. Cashin   2005-09-19   12   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   13   * Francois-Rene Rideau <fare@tunes.org> 19970707
^1da177e4c3f41 Linus Torvalds 2005-04-16   14   *    gathered all the good ideas from all asm-foo/byteorder.h into one file,
^1da177e4c3f41 Linus Torvalds 2005-04-16   15   *    cleaned them up.
^1da177e4c3f41 Linus Torvalds 2005-04-16   16   *    I hope it is compliant with non-GCC compilers.
^1da177e4c3f41 Linus Torvalds 2005-04-16   17   *    I decided to put __BYTEORDER_HAS_U64__ in byteorder.h,
^1da177e4c3f41 Linus Torvalds 2005-04-16   18   *    because I wasn't sure it would be ok to put it in types.h
^1da177e4c3f41 Linus Torvalds 2005-04-16   19   *    Upgraded it to 2.1.43
^1da177e4c3f41 Linus Torvalds 2005-04-16   20   * Francois-Rene Rideau <fare@tunes.org> 19971012
^1da177e4c3f41 Linus Torvalds 2005-04-16   21   *    Upgraded it to 2.1.57
^1da177e4c3f41 Linus Torvalds 2005-04-16   22   *    to please Linus T., replaced huge #ifdef's between little/big endian
^1da177e4c3f41 Linus Torvalds 2005-04-16   23   *    by nestedly #include'd files.
^1da177e4c3f41 Linus Torvalds 2005-04-16   24   * Francois-Rene Rideau <fare@tunes.org> 19971205
^1da177e4c3f41 Linus Torvalds 2005-04-16   25   *    Made it to 2.1.71; now a facelift:
^1da177e4c3f41 Linus Torvalds 2005-04-16   26   *    Put files under include/linux/byteorder/
^1da177e4c3f41 Linus Torvalds 2005-04-16   27   *    Split swab from generic support.
^1da177e4c3f41 Linus Torvalds 2005-04-16   28   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   29   * TODO:
^1da177e4c3f41 Linus Torvalds 2005-04-16   30   *   = Regular kernel maintainers could also replace all these manual
^1da177e4c3f41 Linus Torvalds 2005-04-16   31   *    byteswap macros that remain, disseminated among drivers,
^1da177e4c3f41 Linus Torvalds 2005-04-16   32   *    after some grep or the sources...
^1da177e4c3f41 Linus Torvalds 2005-04-16   33   *   = Linus might want to rename all these macros and files to fit his taste,
^1da177e4c3f41 Linus Torvalds 2005-04-16   34   *    to fit his personal naming scheme.
^1da177e4c3f41 Linus Torvalds 2005-04-16   35   *   = it seems that a few drivers would also appreciate
^1da177e4c3f41 Linus Torvalds 2005-04-16   36   *    nybble swapping support...
^1da177e4c3f41 Linus Torvalds 2005-04-16   37   *   = every architecture could add their byteswap macro in asm/byteorder.h
^1da177e4c3f41 Linus Torvalds 2005-04-16   38   *    see how some architectures already do (i386, alpha, ppc, etc)
^1da177e4c3f41 Linus Torvalds 2005-04-16   39   *   = cpu_to_beXX and beXX_to_cpu might some day need to be well
^1da177e4c3f41 Linus Torvalds 2005-04-16   40   *    distinguished throughout the kernel. This is not the case currently,
^1da177e4c3f41 Linus Torvalds 2005-04-16   41   *    since little endian, big endian, and pdp endian machines needn't it.
^1da177e4c3f41 Linus Torvalds 2005-04-16   42   *    But this might be the case for, say, a port of Linux to 20/21 bit
^1da177e4c3f41 Linus Torvalds 2005-04-16   43   *    architectures (and F21 Linux addict around?).
^1da177e4c3f41 Linus Torvalds 2005-04-16   44   */
^1da177e4c3f41 Linus Torvalds 2005-04-16   45  
^1da177e4c3f41 Linus Torvalds 2005-04-16   46  /*
^1da177e4c3f41 Linus Torvalds 2005-04-16   47   * The following macros are to be defined by <asm/byteorder.h>:
^1da177e4c3f41 Linus Torvalds 2005-04-16   48   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   49   * Conversion of long and short int between network and host format
^1da177e4c3f41 Linus Torvalds 2005-04-16   50   *	ntohl(__u32 x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   51   *	ntohs(__u16 x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   52   *	htonl(__u32 x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   53   *	htons(__u16 x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   54   * It seems that some programs (which? where? or perhaps a standard? POSIX?)
^1da177e4c3f41 Linus Torvalds 2005-04-16   55   * might like the above to be functions, not macros (why?).
^1da177e4c3f41 Linus Torvalds 2005-04-16   56   * if that's true, then detect them, and take measures.
^1da177e4c3f41 Linus Torvalds 2005-04-16   57   * Anyway, the measure is: define only ___ntohl as a macro instead,
^1da177e4c3f41 Linus Torvalds 2005-04-16   58   * and in a separate file, have
^1da177e4c3f41 Linus Torvalds 2005-04-16   59   * unsigned long inline ntohl(x){return ___ntohl(x);}
^1da177e4c3f41 Linus Torvalds 2005-04-16   60   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   61   * The same for constant arguments
^1da177e4c3f41 Linus Torvalds 2005-04-16   62   *	__constant_ntohl(__u32 x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   63   *	__constant_ntohs(__u16 x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   64   *	__constant_htonl(__u32 x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   65   *	__constant_htons(__u16 x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   66   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   67   * Conversion of XX-bit integers (16- 32- or 64-)
^1da177e4c3f41 Linus Torvalds 2005-04-16   68   * between native CPU format and little/big endian format
^1da177e4c3f41 Linus Torvalds 2005-04-16   69   * 64-bit stuff only defined for proper architectures
^1da177e4c3f41 Linus Torvalds 2005-04-16   70   *	cpu_to_[bl]eXX(__uXX x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   71   *	[bl]eXX_to_cpu(__uXX x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   72   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   73   * The same, but takes a pointer to the value to convert
^1da177e4c3f41 Linus Torvalds 2005-04-16   74   *	cpu_to_[bl]eXXp(__uXX x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   75   *	[bl]eXX_to_cpup(__uXX x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   76   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   77   * The same, but change in situ
^1da177e4c3f41 Linus Torvalds 2005-04-16   78   *	cpu_to_[bl]eXXs(__uXX x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   79   *	[bl]eXX_to_cpus(__uXX x)
^1da177e4c3f41 Linus Torvalds 2005-04-16   80   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   81   * See asm-foo/byteorder.h for examples of how to provide
^1da177e4c3f41 Linus Torvalds 2005-04-16   82   * architecture-optimized versions
^1da177e4c3f41 Linus Torvalds 2005-04-16   83   *
^1da177e4c3f41 Linus Torvalds 2005-04-16   84   */
^1da177e4c3f41 Linus Torvalds 2005-04-16   85  
^1da177e4c3f41 Linus Torvalds 2005-04-16   86  #define cpu_to_le64 __cpu_to_le64
^1da177e4c3f41 Linus Torvalds 2005-04-16   87  #define le64_to_cpu __le64_to_cpu
^1da177e4c3f41 Linus Torvalds 2005-04-16   88  #define cpu_to_le32 __cpu_to_le32
^1da177e4c3f41 Linus Torvalds 2005-04-16   89  #define le32_to_cpu __le32_to_cpu
^1da177e4c3f41 Linus Torvalds 2005-04-16   90  #define cpu_to_le16 __cpu_to_le16
^1da177e4c3f41 Linus Torvalds 2005-04-16   91  #define le16_to_cpu __le16_to_cpu
^1da177e4c3f41 Linus Torvalds 2005-04-16   92  #define cpu_to_be64 __cpu_to_be64
^1da177e4c3f41 Linus Torvalds 2005-04-16  @93  #define be64_to_cpu __be64_to_cpu
^1da177e4c3f41 Linus Torvalds 2005-04-16   94  #define cpu_to_be32 __cpu_to_be32
^1da177e4c3f41 Linus Torvalds 2005-04-16   95  #define be32_to_cpu __be32_to_cpu
^1da177e4c3f41 Linus Torvalds 2005-04-16   96  #define cpu_to_be16 __cpu_to_be16
^1da177e4c3f41 Linus Torvalds 2005-04-16   97  #define be16_to_cpu __be16_to_cpu
^1da177e4c3f41 Linus Torvalds 2005-04-16   98  #define cpu_to_le64p __cpu_to_le64p
^1da177e4c3f41 Linus Torvalds 2005-04-16   99  #define le64_to_cpup __le64_to_cpup
^1da177e4c3f41 Linus Torvalds 2005-04-16  100  #define cpu_to_le32p __cpu_to_le32p
^1da177e4c3f41 Linus Torvalds 2005-04-16  101  #define le32_to_cpup __le32_to_cpup
^1da177e4c3f41 Linus Torvalds 2005-04-16  102  #define cpu_to_le16p __cpu_to_le16p
^1da177e4c3f41 Linus Torvalds 2005-04-16  103  #define le16_to_cpup __le16_to_cpup
^1da177e4c3f41 Linus Torvalds 2005-04-16  104  #define cpu_to_be64p __cpu_to_be64p
^1da177e4c3f41 Linus Torvalds 2005-04-16  105  #define be64_to_cpup __be64_to_cpup
^1da177e4c3f41 Linus Torvalds 2005-04-16  106  #define cpu_to_be32p __cpu_to_be32p
^1da177e4c3f41 Linus Torvalds 2005-04-16  107  #define be32_to_cpup __be32_to_cpup
^1da177e4c3f41 Linus Torvalds 2005-04-16  108  #define cpu_to_be16p __cpu_to_be16p
^1da177e4c3f41 Linus Torvalds 2005-04-16  109  #define be16_to_cpup __be16_to_cpup
^1da177e4c3f41 Linus Torvalds 2005-04-16  110  #define cpu_to_le64s __cpu_to_le64s
^1da177e4c3f41 Linus Torvalds 2005-04-16  111  #define le64_to_cpus __le64_to_cpus
^1da177e4c3f41 Linus Torvalds 2005-04-16  112  #define cpu_to_le32s __cpu_to_le32s
^1da177e4c3f41 Linus Torvalds 2005-04-16  113  #define le32_to_cpus __le32_to_cpus
^1da177e4c3f41 Linus Torvalds 2005-04-16  114  #define cpu_to_le16s __cpu_to_le16s
^1da177e4c3f41 Linus Torvalds 2005-04-16  115  #define le16_to_cpus __le16_to_cpus
^1da177e4c3f41 Linus Torvalds 2005-04-16  116  #define cpu_to_be64s __cpu_to_be64s
^1da177e4c3f41 Linus Torvalds 2005-04-16  117  #define be64_to_cpus __be64_to_cpus
^1da177e4c3f41 Linus Torvalds 2005-04-16  118  #define cpu_to_be32s __cpu_to_be32s
^1da177e4c3f41 Linus Torvalds 2005-04-16  119  #define be32_to_cpus __be32_to_cpus
^1da177e4c3f41 Linus Torvalds 2005-04-16  120  #define cpu_to_be16s __cpu_to_be16s
^1da177e4c3f41 Linus Torvalds 2005-04-16  121  #define be16_to_cpus __be16_to_cpus
^1da177e4c3f41 Linus Torvalds 2005-04-16  122  

:::::: The code at line 93 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 15333 bytes --]

  parent reply	other threads:[~2020-03-11 23:13 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-11  9:37 [PATCH v3 0/6] Track and expose idle PURR and SPURR ticks Gautham R. Shenoy
2020-03-11  9:37 ` Gautham R. Shenoy
2020-03-11  9:37 ` [PATCH v3 1/6] powerpc: Move idle_loop_prolog()/epilog() functions to header file Gautham R. Shenoy
2020-03-11  9:37   ` Gautham R. Shenoy
2020-03-11  9:37 ` [PATCH v3 2/6] powerpc/idle: Add accessor function to always read latest idle PURR Gautham R. Shenoy
2020-03-11  9:37   ` Gautham R. Shenoy
2020-03-11  9:37 ` [PATCH v3 3/6] powerpc/pseries: Account for SPURR ticks on idle CPUs Gautham R. Shenoy
2020-03-11  9:37   ` Gautham R. Shenoy
2020-03-11  9:37 ` [PATCH v3 4/6] powerpc/sysfs: Show idle_purr and idle_spurr for every CPU Gautham R. Shenoy
2020-03-11  9:37   ` Gautham R. Shenoy
2020-03-11 22:30   ` kbuild test robot
2020-03-11 23:13   ` kbuild test robot [this message]
2020-03-11 23:48   ` kbuild test robot
2020-03-11  9:37 ` [PATCH v3 5/6] Documentation: Document sysfs interfaces purr, spurr, idle_purr, idle_spurr Gautham R. Shenoy
2020-03-11  9:37   ` Gautham R. Shenoy
2020-03-11  9:37 ` [PATCH v3 6/6] pseries/sysfs: Minimise IPI noise while reading [idle_][s]purr Gautham R. Shenoy
2020-03-11  9:37   ` Gautham R. Shenoy
2020-03-11 23:12   ` kbuild test robot
2020-03-12  0:09   ` kbuild test robot

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=202003120709.CoLug8WW%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /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.