From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737: undefined reference to `rcar_lvds_clk_enable'
Date: Sat, 09 May 2020 20:55:27 +0800 [thread overview]
Message-ID: <202005092018.ricimAIy%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 8411 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d5eeab8d7e269e8cfc53b915bccd7bd30485bcbf
commit: def2fbffe62c00c330c7f41584a356001179c59c kconfig: allow symbols implied by y to become m
date: 8 weeks ago
config: arm64-randconfig-r024-20200509 (attached as .config)
compiler: aarch64-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
git checkout def2fbffe62c00c330c7f41584a356001179c59c
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_crtc.o: in function `rcar_du_crtc_atomic_enable':
>> drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737: undefined reference to `rcar_lvds_clk_enable'
drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737:(.text+0x1408): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_clk_enable'
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_crtc.o: in function `rcar_du_crtc_atomic_disable':
>> drivers/gpu/drm/rcar-du/rcar_du_crtc.c:771: undefined reference to `rcar_lvds_clk_disable'
drivers/gpu/drm/rcar-du/rcar_du_crtc.c:771:(.text+0x19bc): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_clk_disable'
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_drv.o: in function `rcar_du_init':
>> drivers/gpu/drm/rcar-du/rcar_du_drv.c:613: undefined reference to `rcar_du_of_init'
drivers/gpu/drm/rcar-du/rcar_du_drv.c:613:(.init.text+0x18): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_du_of_init'
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_encoder.o: in function `rcar_du_encoder_init':
>> drivers/gpu/drm/rcar-du/rcar_du_encoder.c:107: undefined reference to `rcar_lvds_dual_link'
drivers/gpu/drm/rcar-du/rcar_du_encoder.c:107:(.text+0x1e8): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_dual_link'
vim +737 drivers/gpu/drm/rcar-du/rcar_du_crtc.c
b8a43032a7b8d7 Laurent Pinchart 2018-11-24 711
0b20a0f8c3cb6f Laurent Pinchart 2017-06-30 712 static void rcar_du_crtc_atomic_enable(struct drm_crtc *crtc,
0b20a0f8c3cb6f Laurent Pinchart 2017-06-30 713 struct drm_crtc_state *old_state)
4bf8e1962f91ee Laurent Pinchart 2013-06-19 714 {
4bf8e1962f91ee Laurent Pinchart 2013-06-19 715 struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 716 struct rcar_du_crtc_state *rstate = to_rcar_crtc_state(crtc->state);
b764f2f66ed48c Kieran Bingham 2019-03-15 717 struct rcar_du_device *rcdu = rcrtc->dev;
4bf8e1962f91ee Laurent Pinchart 2013-06-19 718
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 719 if (rcrtc->cmm)
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 720 rcar_cmm_enable(rcrtc->cmm);
f66ee304ae8990 Laurent Pinchart 2013-06-14 721 rcar_du_crtc_get(rcrtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 722
a6cc417d3eee4a Laurent Pinchart 2019-01-17 723 /*
a6cc417d3eee4a Laurent Pinchart 2019-01-17 724 * On D3/E3 the dot clock is provided by the LVDS encoder attached to
a6cc417d3eee4a Laurent Pinchart 2019-01-17 725 * the DU channel. We need to enable its clock output explicitly if
a6cc417d3eee4a Laurent Pinchart 2019-01-17 726 * the LVDS output is disabled.
a6cc417d3eee4a Laurent Pinchart 2019-01-17 727 */
a6cc417d3eee4a Laurent Pinchart 2019-01-17 728 if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) &&
a6cc417d3eee4a Laurent Pinchart 2019-01-17 729 rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) {
a6cc417d3eee4a Laurent Pinchart 2019-01-17 730 struct rcar_du_encoder *encoder =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 731 rcdu->encoders[RCAR_DU_OUTPUT_LVDS0 + rcrtc->index];
a6cc417d3eee4a Laurent Pinchart 2019-01-17 732 const struct drm_display_mode *mode =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 733 &crtc->state->adjusted_mode;
35a61fe9218a9d Boris Brezillon 2019-12-03 734 struct drm_bridge *bridge;
a6cc417d3eee4a Laurent Pinchart 2019-01-17 735
35a61fe9218a9d Boris Brezillon 2019-12-03 736 bridge = drm_bridge_chain_get_first_bridge(&encoder->base);
35a61fe9218a9d Boris Brezillon 2019-12-03 @737 rcar_lvds_clk_enable(bridge, mode->clock * 1000);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 738 }
a6cc417d3eee4a Laurent Pinchart 2019-01-17 739
4bf8e1962f91ee Laurent Pinchart 2013-06-19 740 rcar_du_crtc_start(rcrtc);
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 741
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 742 /*
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 743 * TODO: The chip manual indicates that CMM tables should be written
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 744 * after the DU channel has been activated. Investigate the impact
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 745 * of this restriction on the first displayed frame.
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 746 */
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 747 rcar_du_cmm_setup(crtc);
beff155a7eae6d Laurent Pinchart 2015-02-20 748 }
beff155a7eae6d Laurent Pinchart 2015-02-20 749
64581714b58bc3 Laurent Pinchart 2017-06-30 750 static void rcar_du_crtc_atomic_disable(struct drm_crtc *crtc,
64581714b58bc3 Laurent Pinchart 2017-06-30 751 struct drm_crtc_state *old_state)
beff155a7eae6d Laurent Pinchart 2015-02-20 752 {
beff155a7eae6d Laurent Pinchart 2015-02-20 753 struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 754 struct rcar_du_crtc_state *rstate = to_rcar_crtc_state(old_state);
b764f2f66ed48c Kieran Bingham 2019-03-15 755 struct rcar_du_device *rcdu = rcrtc->dev;
beff155a7eae6d Laurent Pinchart 2015-02-20 756
4bf8e1962f91ee Laurent Pinchart 2013-06-19 757 rcar_du_crtc_stop(rcrtc);
f66ee304ae8990 Laurent Pinchart 2013-06-14 758 rcar_du_crtc_put(rcrtc);
beff155a7eae6d Laurent Pinchart 2015-02-20 759
a6cc417d3eee4a Laurent Pinchart 2019-01-17 760 if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) &&
a6cc417d3eee4a Laurent Pinchart 2019-01-17 761 rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) {
a6cc417d3eee4a Laurent Pinchart 2019-01-17 762 struct rcar_du_encoder *encoder =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 763 rcdu->encoders[RCAR_DU_OUTPUT_LVDS0 + rcrtc->index];
35a61fe9218a9d Boris Brezillon 2019-12-03 764 struct drm_bridge *bridge;
a6cc417d3eee4a Laurent Pinchart 2019-01-17 765
a6cc417d3eee4a Laurent Pinchart 2019-01-17 766 /*
a6cc417d3eee4a Laurent Pinchart 2019-01-17 767 * Disable the LVDS clock output, see
a6cc417d3eee4a Laurent Pinchart 2019-01-17 768 * rcar_du_crtc_atomic_enable().
a6cc417d3eee4a Laurent Pinchart 2019-01-17 769 */
35a61fe9218a9d Boris Brezillon 2019-12-03 770 bridge = drm_bridge_chain_get_first_bridge(&encoder->base);
35a61fe9218a9d Boris Brezillon 2019-12-03 @771 rcar_lvds_clk_disable(bridge);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 772 }
a6cc417d3eee4a Laurent Pinchart 2019-01-17 773
6dd47cfd03a058 Laurent Pinchart 2017-02-10 774 spin_lock_irq(&crtc->dev->event_lock);
6dd47cfd03a058 Laurent Pinchart 2017-02-10 775 if (crtc->state->event) {
6dd47cfd03a058 Laurent Pinchart 2017-02-10 776 drm_crtc_send_vblank_event(crtc, crtc->state->event);
6dd47cfd03a058 Laurent Pinchart 2017-02-10 777 crtc->state->event = NULL;
6dd47cfd03a058 Laurent Pinchart 2017-02-10 778 }
6dd47cfd03a058 Laurent Pinchart 2017-02-10 779 spin_unlock_irq(&crtc->dev->event_lock);
4bf8e1962f91ee Laurent Pinchart 2013-06-19 780 }
4bf8e1962f91ee Laurent Pinchart 2013-06-19 781
:::::: The code at line 737 was first introduced by commit
:::::: 35a61fe9218a9d32a93447bdcca1d0f167cd0433 drm: Stop accessing encoder->bridge directly
:::::: TO: Boris Brezillon <boris.brezillon@collabora.com>
:::::: CC: Boris Brezillon <boris.brezillon@collabora.com>
---
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: 37598 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737: undefined reference to `rcar_lvds_clk_enable'
Date: Sat, 9 May 2020 20:55:27 +0800 [thread overview]
Message-ID: <202005092018.ricimAIy%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 8295 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d5eeab8d7e269e8cfc53b915bccd7bd30485bcbf
commit: def2fbffe62c00c330c7f41584a356001179c59c kconfig: allow symbols implied by y to become m
date: 8 weeks ago
config: arm64-randconfig-r024-20200509 (attached as .config)
compiler: aarch64-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
git checkout def2fbffe62c00c330c7f41584a356001179c59c
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_crtc.o: in function `rcar_du_crtc_atomic_enable':
>> drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737: undefined reference to `rcar_lvds_clk_enable'
drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737:(.text+0x1408): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_clk_enable'
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_crtc.o: in function `rcar_du_crtc_atomic_disable':
>> drivers/gpu/drm/rcar-du/rcar_du_crtc.c:771: undefined reference to `rcar_lvds_clk_disable'
drivers/gpu/drm/rcar-du/rcar_du_crtc.c:771:(.text+0x19bc): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_clk_disable'
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_drv.o: in function `rcar_du_init':
>> drivers/gpu/drm/rcar-du/rcar_du_drv.c:613: undefined reference to `rcar_du_of_init'
drivers/gpu/drm/rcar-du/rcar_du_drv.c:613:(.init.text+0x18): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_du_of_init'
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_encoder.o: in function `rcar_du_encoder_init':
>> drivers/gpu/drm/rcar-du/rcar_du_encoder.c:107: undefined reference to `rcar_lvds_dual_link'
drivers/gpu/drm/rcar-du/rcar_du_encoder.c:107:(.text+0x1e8): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_dual_link'
vim +737 drivers/gpu/drm/rcar-du/rcar_du_crtc.c
b8a43032a7b8d7 Laurent Pinchart 2018-11-24 711
0b20a0f8c3cb6f Laurent Pinchart 2017-06-30 712 static void rcar_du_crtc_atomic_enable(struct drm_crtc *crtc,
0b20a0f8c3cb6f Laurent Pinchart 2017-06-30 713 struct drm_crtc_state *old_state)
4bf8e1962f91ee Laurent Pinchart 2013-06-19 714 {
4bf8e1962f91ee Laurent Pinchart 2013-06-19 715 struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 716 struct rcar_du_crtc_state *rstate = to_rcar_crtc_state(crtc->state);
b764f2f66ed48c Kieran Bingham 2019-03-15 717 struct rcar_du_device *rcdu = rcrtc->dev;
4bf8e1962f91ee Laurent Pinchart 2013-06-19 718
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 719 if (rcrtc->cmm)
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 720 rcar_cmm_enable(rcrtc->cmm);
f66ee304ae8990 Laurent Pinchart 2013-06-14 721 rcar_du_crtc_get(rcrtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 722
a6cc417d3eee4a Laurent Pinchart 2019-01-17 723 /*
a6cc417d3eee4a Laurent Pinchart 2019-01-17 724 * On D3/E3 the dot clock is provided by the LVDS encoder attached to
a6cc417d3eee4a Laurent Pinchart 2019-01-17 725 * the DU channel. We need to enable its clock output explicitly if
a6cc417d3eee4a Laurent Pinchart 2019-01-17 726 * the LVDS output is disabled.
a6cc417d3eee4a Laurent Pinchart 2019-01-17 727 */
a6cc417d3eee4a Laurent Pinchart 2019-01-17 728 if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) &&
a6cc417d3eee4a Laurent Pinchart 2019-01-17 729 rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) {
a6cc417d3eee4a Laurent Pinchart 2019-01-17 730 struct rcar_du_encoder *encoder =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 731 rcdu->encoders[RCAR_DU_OUTPUT_LVDS0 + rcrtc->index];
a6cc417d3eee4a Laurent Pinchart 2019-01-17 732 const struct drm_display_mode *mode =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 733 &crtc->state->adjusted_mode;
35a61fe9218a9d Boris Brezillon 2019-12-03 734 struct drm_bridge *bridge;
a6cc417d3eee4a Laurent Pinchart 2019-01-17 735
35a61fe9218a9d Boris Brezillon 2019-12-03 736 bridge = drm_bridge_chain_get_first_bridge(&encoder->base);
35a61fe9218a9d Boris Brezillon 2019-12-03 @737 rcar_lvds_clk_enable(bridge, mode->clock * 1000);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 738 }
a6cc417d3eee4a Laurent Pinchart 2019-01-17 739
4bf8e1962f91ee Laurent Pinchart 2013-06-19 740 rcar_du_crtc_start(rcrtc);
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 741
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 742 /*
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 743 * TODO: The chip manual indicates that CMM tables should be written
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 744 * after the DU channel has been activated. Investigate the impact
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 745 * of this restriction on the first displayed frame.
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 746 */
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 747 rcar_du_cmm_setup(crtc);
beff155a7eae6d Laurent Pinchart 2015-02-20 748 }
beff155a7eae6d Laurent Pinchart 2015-02-20 749
64581714b58bc3 Laurent Pinchart 2017-06-30 750 static void rcar_du_crtc_atomic_disable(struct drm_crtc *crtc,
64581714b58bc3 Laurent Pinchart 2017-06-30 751 struct drm_crtc_state *old_state)
beff155a7eae6d Laurent Pinchart 2015-02-20 752 {
beff155a7eae6d Laurent Pinchart 2015-02-20 753 struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 754 struct rcar_du_crtc_state *rstate = to_rcar_crtc_state(old_state);
b764f2f66ed48c Kieran Bingham 2019-03-15 755 struct rcar_du_device *rcdu = rcrtc->dev;
beff155a7eae6d Laurent Pinchart 2015-02-20 756
4bf8e1962f91ee Laurent Pinchart 2013-06-19 757 rcar_du_crtc_stop(rcrtc);
f66ee304ae8990 Laurent Pinchart 2013-06-14 758 rcar_du_crtc_put(rcrtc);
beff155a7eae6d Laurent Pinchart 2015-02-20 759
a6cc417d3eee4a Laurent Pinchart 2019-01-17 760 if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) &&
a6cc417d3eee4a Laurent Pinchart 2019-01-17 761 rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) {
a6cc417d3eee4a Laurent Pinchart 2019-01-17 762 struct rcar_du_encoder *encoder =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 763 rcdu->encoders[RCAR_DU_OUTPUT_LVDS0 + rcrtc->index];
35a61fe9218a9d Boris Brezillon 2019-12-03 764 struct drm_bridge *bridge;
a6cc417d3eee4a Laurent Pinchart 2019-01-17 765
a6cc417d3eee4a Laurent Pinchart 2019-01-17 766 /*
a6cc417d3eee4a Laurent Pinchart 2019-01-17 767 * Disable the LVDS clock output, see
a6cc417d3eee4a Laurent Pinchart 2019-01-17 768 * rcar_du_crtc_atomic_enable().
a6cc417d3eee4a Laurent Pinchart 2019-01-17 769 */
35a61fe9218a9d Boris Brezillon 2019-12-03 770 bridge = drm_bridge_chain_get_first_bridge(&encoder->base);
35a61fe9218a9d Boris Brezillon 2019-12-03 @771 rcar_lvds_clk_disable(bridge);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 772 }
a6cc417d3eee4a Laurent Pinchart 2019-01-17 773
6dd47cfd03a058 Laurent Pinchart 2017-02-10 774 spin_lock_irq(&crtc->dev->event_lock);
6dd47cfd03a058 Laurent Pinchart 2017-02-10 775 if (crtc->state->event) {
6dd47cfd03a058 Laurent Pinchart 2017-02-10 776 drm_crtc_send_vblank_event(crtc, crtc->state->event);
6dd47cfd03a058 Laurent Pinchart 2017-02-10 777 crtc->state->event = NULL;
6dd47cfd03a058 Laurent Pinchart 2017-02-10 778 }
6dd47cfd03a058 Laurent Pinchart 2017-02-10 779 spin_unlock_irq(&crtc->dev->event_lock);
4bf8e1962f91ee Laurent Pinchart 2013-06-19 780 }
4bf8e1962f91ee Laurent Pinchart 2013-06-19 781
:::::: The code at line 737 was first introduced by commit
:::::: 35a61fe9218a9d32a93447bdcca1d0f167cd0433 drm: Stop accessing encoder->bridge directly
:::::: TO: Boris Brezillon <boris.brezillon@collabora.com>
:::::: CC: Boris Brezillon <boris.brezillon@collabora.com>
---
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: 37598 bytes --]
next reply other threads:[~2020-05-09 12:55 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-09 12:55 kbuild test robot [this message]
2020-05-09 12:55 ` drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737: undefined reference to `rcar_lvds_clk_enable' 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=202005092018.ricimAIy%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.