From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: drivers/net/ethernet/korina.c:408:33: sparse: sparse: incorrect type in argument 2 (different address spaces)
Date: Fri, 30 Apr 2021 14:09:09 +0800 [thread overview]
Message-ID: <202104301455.H17bVss3-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 10247 bytes --]
Hi Thomas,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8ca5297e7e38f2dc8c753d33a5092e7be181fff0
commit: 6ef92063bf94cd8a6fa9fea3a82596955eb25424 net: korina: Make driver COMPILE_TESTable
date: 10 days ago
config: powerpc-randconfig-s031-20210430 (attached as .config)
compiler: powerpc64le-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6ef92063bf94cd8a6fa9fea3a82596955eb25424
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 6ef92063bf94cd8a6fa9fea3a82596955eb25424
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/korina.c:408:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct dma_reg *ch @@ got struct dma_reg [noderef] __iomem *tx_dma_regs @@
drivers/net/ethernet/korina.c:408:33: sparse: expected struct dma_reg *ch
drivers/net/ethernet/korina.c:408:33: sparse: got struct dma_reg [noderef] __iomem *tx_dma_regs
>> drivers/net/ethernet/korina.c:415:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct dma_reg *ch @@ got struct dma_reg [noderef] __iomem *rx_dma_regs @@
drivers/net/ethernet/korina.c:415:33: sparse: expected struct dma_reg *ch
drivers/net/ethernet/korina.c:415:33: sparse: got struct dma_reg [noderef] __iomem *rx_dma_regs
>> drivers/net/ethernet/korina.c:391:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:391:20: sparse: expected void const volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:391:20: sparse: got unsigned int *
>> drivers/net/ethernet/korina.c:392:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:392:31: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:392:31: sparse: got unsigned int *
drivers/net/ethernet/korina.c:394:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:394:33: sparse: expected void const volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:394:33: sparse: got unsigned int *
drivers/net/ethernet/korina.c:397:28: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:397:28: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:397:28: sparse: got unsigned int *
drivers/net/ethernet/korina.c:400:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:400:20: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:400:20: sparse: got unsigned int *
drivers/net/ethernet/korina.c:401:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:401:20: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:401:20: sparse: got unsigned int *
>> drivers/net/ethernet/korina.c:391:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:391:20: sparse: expected void const volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:391:20: sparse: got unsigned int *
>> drivers/net/ethernet/korina.c:392:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:392:31: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:392:31: sparse: got unsigned int *
drivers/net/ethernet/korina.c:394:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:394:33: sparse: expected void const volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:394:33: sparse: got unsigned int *
drivers/net/ethernet/korina.c:397:28: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:397:28: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:397:28: sparse: got unsigned int *
drivers/net/ethernet/korina.c:400:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:400:20: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:400:20: sparse: got unsigned int *
drivers/net/ethernet/korina.c:401:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:401:20: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:401:20: sparse: got unsigned int *
vim +408 drivers/net/ethernet/korina.c
0fc96939a97ffd drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-19 387
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 388 static inline void korina_abort_dma(struct net_device *dev,
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 389 struct dma_reg *ch)
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 390 {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 @391 if (readl(&ch->dmac) & DMA_CHAN_RUN_BIT) {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 @392 writel(0x10, &ch->dmac);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 393
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 394 while (!(readl(&ch->dmas) & DMA_STAT_HALT))
860e9538a9482b drivers/net/ethernet/korina.c Florian Westphal 2016-05-03 395 netif_trans_update(dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 396
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 397 writel(0, &ch->dmas);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 398 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 399
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 400 writel(0, &ch->dmadptr);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 401 writel(0, &ch->dmandptr);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 402 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 403
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 404 static void korina_abort_tx(struct net_device *dev)
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 405 {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 406 struct korina_private *lp = netdev_priv(dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 407
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 @408 korina_abort_dma(dev, lp->tx_dma_regs);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 409 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 410
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 411 static void korina_abort_rx(struct net_device *dev)
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 412 {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 413 struct korina_private *lp = netdev_priv(dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 414
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 @415 korina_abort_dma(dev, lp->rx_dma_regs);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 416 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 417
:::::: The code at line 408 was first introduced by commit
:::::: ef11291bcd5f963c72e7ba5952be3e3c97463d2c Add support the Korina (IDT RC32434) Ethernet MAC
:::::: TO: Florian Fainelli <florian.fainelli@telecomint.eu>
:::::: CC: Jeff Garzik <jeff@garzik.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: 40411 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: drivers/net/ethernet/korina.c:408:33: sparse: sparse: incorrect type in argument 2 (different address spaces)
Date: Fri, 30 Apr 2021 14:09:09 +0800 [thread overview]
Message-ID: <202104301455.H17bVss3-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 10132 bytes --]
Hi Thomas,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8ca5297e7e38f2dc8c753d33a5092e7be181fff0
commit: 6ef92063bf94cd8a6fa9fea3a82596955eb25424 net: korina: Make driver COMPILE_TESTable
date: 10 days ago
config: powerpc-randconfig-s031-20210430 (attached as .config)
compiler: powerpc64le-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6ef92063bf94cd8a6fa9fea3a82596955eb25424
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 6ef92063bf94cd8a6fa9fea3a82596955eb25424
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/korina.c:408:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct dma_reg *ch @@ got struct dma_reg [noderef] __iomem *tx_dma_regs @@
drivers/net/ethernet/korina.c:408:33: sparse: expected struct dma_reg *ch
drivers/net/ethernet/korina.c:408:33: sparse: got struct dma_reg [noderef] __iomem *tx_dma_regs
>> drivers/net/ethernet/korina.c:415:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct dma_reg *ch @@ got struct dma_reg [noderef] __iomem *rx_dma_regs @@
drivers/net/ethernet/korina.c:415:33: sparse: expected struct dma_reg *ch
drivers/net/ethernet/korina.c:415:33: sparse: got struct dma_reg [noderef] __iomem *rx_dma_regs
>> drivers/net/ethernet/korina.c:391:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:391:20: sparse: expected void const volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:391:20: sparse: got unsigned int *
>> drivers/net/ethernet/korina.c:392:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:392:31: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:392:31: sparse: got unsigned int *
drivers/net/ethernet/korina.c:394:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:394:33: sparse: expected void const volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:394:33: sparse: got unsigned int *
drivers/net/ethernet/korina.c:397:28: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:397:28: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:397:28: sparse: got unsigned int *
drivers/net/ethernet/korina.c:400:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:400:20: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:400:20: sparse: got unsigned int *
drivers/net/ethernet/korina.c:401:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:401:20: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:401:20: sparse: got unsigned int *
>> drivers/net/ethernet/korina.c:391:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:391:20: sparse: expected void const volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:391:20: sparse: got unsigned int *
>> drivers/net/ethernet/korina.c:392:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:392:31: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:392:31: sparse: got unsigned int *
drivers/net/ethernet/korina.c:394:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:394:33: sparse: expected void const volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:394:33: sparse: got unsigned int *
drivers/net/ethernet/korina.c:397:28: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:397:28: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:397:28: sparse: got unsigned int *
drivers/net/ethernet/korina.c:400:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:400:20: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:400:20: sparse: got unsigned int *
drivers/net/ethernet/korina.c:401:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@
drivers/net/ethernet/korina.c:401:20: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/korina.c:401:20: sparse: got unsigned int *
vim +408 drivers/net/ethernet/korina.c
0fc96939a97ffd drivers/net/ethernet/korina.c Thomas Bogendoerfer 2021-04-19 387
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 388 static inline void korina_abort_dma(struct net_device *dev,
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 389 struct dma_reg *ch)
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 390 {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 @391 if (readl(&ch->dmac) & DMA_CHAN_RUN_BIT) {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 @392 writel(0x10, &ch->dmac);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 393
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 394 while (!(readl(&ch->dmas) & DMA_STAT_HALT))
860e9538a9482b drivers/net/ethernet/korina.c Florian Westphal 2016-05-03 395 netif_trans_update(dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 396
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 397 writel(0, &ch->dmas);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 398 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 399
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 400 writel(0, &ch->dmadptr);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 401 writel(0, &ch->dmandptr);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 402 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 403
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 404 static void korina_abort_tx(struct net_device *dev)
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 405 {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 406 struct korina_private *lp = netdev_priv(dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 407
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 @408 korina_abort_dma(dev, lp->tx_dma_regs);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 409 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 410
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 411 static void korina_abort_rx(struct net_device *dev)
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 412 {
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 413 struct korina_private *lp = netdev_priv(dev);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 414
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 @415 korina_abort_dma(dev, lp->rx_dma_regs);
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 416 }
ef11291bcd5f96 drivers/net/korina.c Florian Fainelli 2008-03-19 417
:::::: The code at line 408 was first introduced by commit
:::::: ef11291bcd5f963c72e7ba5952be3e3c97463d2c Add support the Korina (IDT RC32434) Ethernet MAC
:::::: TO: Florian Fainelli <florian.fainelli@telecomint.eu>
:::::: CC: Jeff Garzik <jeff@garzik.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 40411 bytes --]
next reply other threads:[~2021-04-30 6:09 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-30 6:09 kernel test robot [this message]
2021-04-30 6:09 ` drivers/net/ethernet/korina.c:408:33: sparse: sparse: incorrect type in argument 2 (different address spaces) kernel 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=202104301455.H17bVss3-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.