From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: [drm-drm-misc:drm-misc-next 4/5] drivers/gpu/drm/nouveau/nouveau_bo.c:1146 nouveau_ttm_io_mem_reserve() error: uninitialized symbol 'ret'.
Date: Fri, 04 Sep 2020 09:57:24 +0300 [thread overview]
Message-ID: <20200904065724.GI8299@kadam> (raw)
[-- Attachment #1: Type: text/plain, Size: 9068 bytes --]
tree: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
head: fe662d846c957c8861ade7170115e88f6e6e5fdd
commit: 141b15e59175aa174ca1f7596188bd15a7ca17ba [4/5] drm/nouveau: move io_reserve_lru handling into the driver v5
config: x86_64-randconfig-m001-20200903 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/gpu/drm/nouveau/nouveau_bo.c:1146 nouveau_ttm_io_mem_reserve() error: uninitialized symbol 'ret'.
Old smatch warnings:
drivers/gpu/drm/nouveau/nouveau_bo.c:432 nouveau_bo_pin() warn: should '1 << bo->mem.mem_type' be a 64 bit type?
include/drm/ttm/ttm_bo_driver.h:492 ttm_bo_reserve() warn: inconsistent returns '*bo->base.resv'.
git remote add drm-drm-misc git://anongit.freedesktop.org/drm/drm-misc
git fetch --no-tags drm-drm-misc drm-misc-next
git checkout 141b15e59175aa174ca1f7596188bd15a7ca17ba
vim +/ret +1146 drivers/gpu/drm/nouveau/nouveau_bo.c
f32f02fd81f3177 Jerome Glisse 2010-04-09 1066 static int
2966141ad2dda23 Dave Airlie 2020-08-04 1067 nouveau_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_resource *reg)
f32f02fd81f3177 Jerome Glisse 2010-04-09 1068 {
ebb945a94bba2ce Ben Skeggs 2012-07-20 1069 struct nouveau_drm *drm = nouveau_bdev(bdev);
1167c6bc51880cb Ben Skeggs 2016-05-18 1070 struct nvkm_device *device = nvxx_device(&drm->client.device);
9ce523cc3bf2ac1 Ben Skeggs 2017-11-01 1071 struct nouveau_mem *mem = nouveau_mem(reg);
141b15e59175aa1 Christian König 2020-08-21 1072 int ret;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1073
141b15e59175aa1 Christian König 2020-08-21 1074 mutex_lock(&drm->ttm.io_reserve_mutex);
141b15e59175aa1 Christian König 2020-08-21 1075 retry:
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1076 switch (reg->mem_type) {
f32f02fd81f3177 Jerome Glisse 2010-04-09 1077 case TTM_PL_SYSTEM:
f32f02fd81f3177 Jerome Glisse 2010-04-09 1078 /* System memory */
141b15e59175aa1 Christian König 2020-08-21 1079 ret = 0;
141b15e59175aa1 Christian König 2020-08-21 1080 goto out;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1081 case TTM_PL_TT:
a7fb8a23c1afa60 Daniel Vetter 2015-09-09 1082 #if IS_ENABLED(CONFIG_AGP)
340b0e7c500a0ac Ben Skeggs 2015-08-20 1083 if (drm->agp.bridge) {
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1084 reg->bus.offset = reg->start << PAGE_SHIFT;
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1085 reg->bus.base = drm->agp.base;
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1086 reg->bus.is_iomem = !drm->agp.cma;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1087 }
f32f02fd81f3177 Jerome Glisse 2010-04-09 1088 #endif
141b15e59175aa1 Christian König 2020-08-21 1089 if (drm->client.mem->oclass < NVIF_CLASS_MEM_NV50 ||
141b15e59175aa1 Christian König 2020-08-21 1090 !mem->kind) {
a55409066472838 Maarten Lankhorst 2013-11-12 1091 /* untiled */
141b15e59175aa1 Christian König 2020-08-21 1092 ret = 0;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1093 break;
141b15e59175aa1 Christian König 2020-08-21 1094 }
f6e7393edefada6 Gustavo A. R. Silva 2020-07-07 1095 fallthrough; /* tiled memory */
f32f02fd81f3177 Jerome Glisse 2010-04-09 1096 case TTM_PL_VRAM:
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1097 reg->bus.offset = reg->start << PAGE_SHIFT;
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1098 reg->bus.base = device->func->resource_addr(device, 1);
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1099 reg->bus.is_iomem = true;
d7722134b8254bc Ben Skeggs 2017-11-01 1100 if (drm->client.mem->oclass >= NVIF_CLASS_MEM_NV50) {
d7722134b8254bc Ben Skeggs 2017-11-01 1101 union {
d7722134b8254bc Ben Skeggs 2017-11-01 1102 struct nv50_mem_map_v0 nv50;
d7722134b8254bc Ben Skeggs 2017-11-01 1103 struct gf100_mem_map_v0 gf100;
d7722134b8254bc Ben Skeggs 2017-11-01 1104 } args;
d7722134b8254bc Ben Skeggs 2017-11-01 1105 u64 handle, length;
d7722134b8254bc Ben Skeggs 2017-11-01 1106 u32 argc = 0;
f869ef882382a4b Ben Skeggs 2010-11-15 1107
d7722134b8254bc Ben Skeggs 2017-11-01 1108 switch (mem->mem.object.oclass) {
d7722134b8254bc Ben Skeggs 2017-11-01 1109 case NVIF_CLASS_MEM_NV50:
d7722134b8254bc Ben Skeggs 2017-11-01 1110 args.nv50.version = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1111 args.nv50.ro = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1112 args.nv50.kind = mem->kind;
d7722134b8254bc Ben Skeggs 2017-11-01 1113 args.nv50.comp = mem->comp;
b554b12addf939f Thierry Reding 2018-01-19 1114 argc = sizeof(args.nv50);
d7722134b8254bc Ben Skeggs 2017-11-01 1115 break;
d7722134b8254bc Ben Skeggs 2017-11-01 1116 case NVIF_CLASS_MEM_GF100:
d7722134b8254bc Ben Skeggs 2017-11-01 1117 args.gf100.version = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1118 args.gf100.ro = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1119 args.gf100.kind = mem->kind;
b554b12addf939f Thierry Reding 2018-01-19 1120 argc = sizeof(args.gf100);
d7722134b8254bc Ben Skeggs 2017-11-01 1121 break;
d7722134b8254bc Ben Skeggs 2017-11-01 1122 default:
d7722134b8254bc Ben Skeggs 2017-11-01 1123 WARN_ON(1);
d7722134b8254bc Ben Skeggs 2017-11-01 1124 break;
d7722134b8254bc Ben Skeggs 2017-11-01 1125 }
d7722134b8254bc Ben Skeggs 2017-11-01 1126
d7722134b8254bc Ben Skeggs 2017-11-01 1127 ret = nvif_object_map_handle(&mem->mem.object,
b554b12addf939f Thierry Reding 2018-01-19 1128 &args, argc,
d7722134b8254bc Ben Skeggs 2017-11-01 1129 &handle, &length);
8a39db76e79ef50 Ben Skeggs 2020-01-06 1130 if (ret != 1) {
8a39db76e79ef50 Ben Skeggs 2020-01-06 1131 if (WARN_ON(ret == 0))
141b15e59175aa1 Christian König 2020-08-21 1132 ret = -EINVAL;
141b15e59175aa1 Christian König 2020-08-21 1133 goto out;
8a39db76e79ef50 Ben Skeggs 2020-01-06 1134 }
d7722134b8254bc Ben Skeggs 2017-11-01 1135
d7722134b8254bc Ben Skeggs 2017-11-01 1136 reg->bus.base = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1137 reg->bus.offset = handle;
141b15e59175aa1 Christian König 2020-08-21 1138 ret = 0;
f869ef882382a4b Ben Skeggs 2010-11-15 1139 }
"ret" not set if mem_type is TTM_PL_VRAM and drm->client.mem->oclass
less than NVIF_CLASS_MEM_NV50.
f869ef882382a4b Ben Skeggs 2010-11-15 1140 break;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1141 default:
141b15e59175aa1 Christian König 2020-08-21 1142 ret = -EINVAL;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1143 }
141b15e59175aa1 Christian König 2020-08-21 1144
141b15e59175aa1 Christian König 2020-08-21 1145 out:
141b15e59175aa1 Christian König 2020-08-21 @1146 if (ret == -ENOSPC) {
^^^^^^^^^^^^^^
141b15e59175aa1 Christian König 2020-08-21 1147 struct nouveau_bo *nvbo;
141b15e59175aa1 Christian König 2020-08-21 1148
141b15e59175aa1 Christian König 2020-08-21 1149 nvbo = list_first_entry_or_null(&drm->ttm.io_reserve_lru,
141b15e59175aa1 Christian König 2020-08-21 1150 typeof(*nvbo),
141b15e59175aa1 Christian König 2020-08-21 1151 io_reserve_lru);
141b15e59175aa1 Christian König 2020-08-21 1152 if (nvbo) {
141b15e59175aa1 Christian König 2020-08-21 1153 list_del_init(&nvbo->io_reserve_lru);
141b15e59175aa1 Christian König 2020-08-21 1154 drm_vma_node_unmap(&nvbo->bo.base.vma_node,
141b15e59175aa1 Christian König 2020-08-21 1155 bdev->dev_mapping);
141b15e59175aa1 Christian König 2020-08-21 1156 nouveau_ttm_io_mem_free_locked(drm, &nvbo->bo.mem);
141b15e59175aa1 Christian König 2020-08-21 1157 goto retry;
141b15e59175aa1 Christian König 2020-08-21 1158 }
141b15e59175aa1 Christian König 2020-08-21 1159
141b15e59175aa1 Christian König 2020-08-21 1160 }
141b15e59175aa1 Christian König 2020-08-21 1161 mutex_unlock(&drm->ttm.io_reserve_mutex);
141b15e59175aa1 Christian König 2020-08-21 1162 return ret;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1163 }
---
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: 34842 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [drm-drm-misc:drm-misc-next 4/5] drivers/gpu/drm/nouveau/nouveau_bo.c:1146 nouveau_ttm_io_mem_reserve() error: uninitialized symbol 'ret'.
Date: Fri, 04 Sep 2020 09:57:24 +0300 [thread overview]
Message-ID: <20200904065724.GI8299@kadam> (raw)
[-- Attachment #1: Type: text/plain, Size: 9068 bytes --]
tree: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
head: fe662d846c957c8861ade7170115e88f6e6e5fdd
commit: 141b15e59175aa174ca1f7596188bd15a7ca17ba [4/5] drm/nouveau: move io_reserve_lru handling into the driver v5
config: x86_64-randconfig-m001-20200903 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/gpu/drm/nouveau/nouveau_bo.c:1146 nouveau_ttm_io_mem_reserve() error: uninitialized symbol 'ret'.
Old smatch warnings:
drivers/gpu/drm/nouveau/nouveau_bo.c:432 nouveau_bo_pin() warn: should '1 << bo->mem.mem_type' be a 64 bit type?
include/drm/ttm/ttm_bo_driver.h:492 ttm_bo_reserve() warn: inconsistent returns '*bo->base.resv'.
git remote add drm-drm-misc git://anongit.freedesktop.org/drm/drm-misc
git fetch --no-tags drm-drm-misc drm-misc-next
git checkout 141b15e59175aa174ca1f7596188bd15a7ca17ba
vim +/ret +1146 drivers/gpu/drm/nouveau/nouveau_bo.c
f32f02fd81f3177 Jerome Glisse 2010-04-09 1066 static int
2966141ad2dda23 Dave Airlie 2020-08-04 1067 nouveau_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_resource *reg)
f32f02fd81f3177 Jerome Glisse 2010-04-09 1068 {
ebb945a94bba2ce Ben Skeggs 2012-07-20 1069 struct nouveau_drm *drm = nouveau_bdev(bdev);
1167c6bc51880cb Ben Skeggs 2016-05-18 1070 struct nvkm_device *device = nvxx_device(&drm->client.device);
9ce523cc3bf2ac1 Ben Skeggs 2017-11-01 1071 struct nouveau_mem *mem = nouveau_mem(reg);
141b15e59175aa1 Christian König 2020-08-21 1072 int ret;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1073
141b15e59175aa1 Christian König 2020-08-21 1074 mutex_lock(&drm->ttm.io_reserve_mutex);
141b15e59175aa1 Christian König 2020-08-21 1075 retry:
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1076 switch (reg->mem_type) {
f32f02fd81f3177 Jerome Glisse 2010-04-09 1077 case TTM_PL_SYSTEM:
f32f02fd81f3177 Jerome Glisse 2010-04-09 1078 /* System memory */
141b15e59175aa1 Christian König 2020-08-21 1079 ret = 0;
141b15e59175aa1 Christian König 2020-08-21 1080 goto out;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1081 case TTM_PL_TT:
a7fb8a23c1afa60 Daniel Vetter 2015-09-09 1082 #if IS_ENABLED(CONFIG_AGP)
340b0e7c500a0ac Ben Skeggs 2015-08-20 1083 if (drm->agp.bridge) {
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1084 reg->bus.offset = reg->start << PAGE_SHIFT;
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1085 reg->bus.base = drm->agp.base;
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1086 reg->bus.is_iomem = !drm->agp.cma;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1087 }
f32f02fd81f3177 Jerome Glisse 2010-04-09 1088 #endif
141b15e59175aa1 Christian König 2020-08-21 1089 if (drm->client.mem->oclass < NVIF_CLASS_MEM_NV50 ||
141b15e59175aa1 Christian König 2020-08-21 1090 !mem->kind) {
a55409066472838 Maarten Lankhorst 2013-11-12 1091 /* untiled */
141b15e59175aa1 Christian König 2020-08-21 1092 ret = 0;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1093 break;
141b15e59175aa1 Christian König 2020-08-21 1094 }
f6e7393edefada6 Gustavo A. R. Silva 2020-07-07 1095 fallthrough; /* tiled memory */
f32f02fd81f3177 Jerome Glisse 2010-04-09 1096 case TTM_PL_VRAM:
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1097 reg->bus.offset = reg->start << PAGE_SHIFT;
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1098 reg->bus.base = device->func->resource_addr(device, 1);
605f9ccd7d0ad60 Ben Skeggs 2016-05-17 1099 reg->bus.is_iomem = true;
d7722134b8254bc Ben Skeggs 2017-11-01 1100 if (drm->client.mem->oclass >= NVIF_CLASS_MEM_NV50) {
d7722134b8254bc Ben Skeggs 2017-11-01 1101 union {
d7722134b8254bc Ben Skeggs 2017-11-01 1102 struct nv50_mem_map_v0 nv50;
d7722134b8254bc Ben Skeggs 2017-11-01 1103 struct gf100_mem_map_v0 gf100;
d7722134b8254bc Ben Skeggs 2017-11-01 1104 } args;
d7722134b8254bc Ben Skeggs 2017-11-01 1105 u64 handle, length;
d7722134b8254bc Ben Skeggs 2017-11-01 1106 u32 argc = 0;
f869ef882382a4b Ben Skeggs 2010-11-15 1107
d7722134b8254bc Ben Skeggs 2017-11-01 1108 switch (mem->mem.object.oclass) {
d7722134b8254bc Ben Skeggs 2017-11-01 1109 case NVIF_CLASS_MEM_NV50:
d7722134b8254bc Ben Skeggs 2017-11-01 1110 args.nv50.version = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1111 args.nv50.ro = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1112 args.nv50.kind = mem->kind;
d7722134b8254bc Ben Skeggs 2017-11-01 1113 args.nv50.comp = mem->comp;
b554b12addf939f Thierry Reding 2018-01-19 1114 argc = sizeof(args.nv50);
d7722134b8254bc Ben Skeggs 2017-11-01 1115 break;
d7722134b8254bc Ben Skeggs 2017-11-01 1116 case NVIF_CLASS_MEM_GF100:
d7722134b8254bc Ben Skeggs 2017-11-01 1117 args.gf100.version = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1118 args.gf100.ro = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1119 args.gf100.kind = mem->kind;
b554b12addf939f Thierry Reding 2018-01-19 1120 argc = sizeof(args.gf100);
d7722134b8254bc Ben Skeggs 2017-11-01 1121 break;
d7722134b8254bc Ben Skeggs 2017-11-01 1122 default:
d7722134b8254bc Ben Skeggs 2017-11-01 1123 WARN_ON(1);
d7722134b8254bc Ben Skeggs 2017-11-01 1124 break;
d7722134b8254bc Ben Skeggs 2017-11-01 1125 }
d7722134b8254bc Ben Skeggs 2017-11-01 1126
d7722134b8254bc Ben Skeggs 2017-11-01 1127 ret = nvif_object_map_handle(&mem->mem.object,
b554b12addf939f Thierry Reding 2018-01-19 1128 &args, argc,
d7722134b8254bc Ben Skeggs 2017-11-01 1129 &handle, &length);
8a39db76e79ef50 Ben Skeggs 2020-01-06 1130 if (ret != 1) {
8a39db76e79ef50 Ben Skeggs 2020-01-06 1131 if (WARN_ON(ret == 0))
141b15e59175aa1 Christian König 2020-08-21 1132 ret = -EINVAL;
141b15e59175aa1 Christian König 2020-08-21 1133 goto out;
8a39db76e79ef50 Ben Skeggs 2020-01-06 1134 }
d7722134b8254bc Ben Skeggs 2017-11-01 1135
d7722134b8254bc Ben Skeggs 2017-11-01 1136 reg->bus.base = 0;
d7722134b8254bc Ben Skeggs 2017-11-01 1137 reg->bus.offset = handle;
141b15e59175aa1 Christian König 2020-08-21 1138 ret = 0;
f869ef882382a4b Ben Skeggs 2010-11-15 1139 }
"ret" not set if mem_type is TTM_PL_VRAM and drm->client.mem->oclass
less than NVIF_CLASS_MEM_NV50.
f869ef882382a4b Ben Skeggs 2010-11-15 1140 break;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1141 default:
141b15e59175aa1 Christian König 2020-08-21 1142 ret = -EINVAL;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1143 }
141b15e59175aa1 Christian König 2020-08-21 1144
141b15e59175aa1 Christian König 2020-08-21 1145 out:
141b15e59175aa1 Christian König 2020-08-21 @1146 if (ret == -ENOSPC) {
^^^^^^^^^^^^^^
141b15e59175aa1 Christian König 2020-08-21 1147 struct nouveau_bo *nvbo;
141b15e59175aa1 Christian König 2020-08-21 1148
141b15e59175aa1 Christian König 2020-08-21 1149 nvbo = list_first_entry_or_null(&drm->ttm.io_reserve_lru,
141b15e59175aa1 Christian König 2020-08-21 1150 typeof(*nvbo),
141b15e59175aa1 Christian König 2020-08-21 1151 io_reserve_lru);
141b15e59175aa1 Christian König 2020-08-21 1152 if (nvbo) {
141b15e59175aa1 Christian König 2020-08-21 1153 list_del_init(&nvbo->io_reserve_lru);
141b15e59175aa1 Christian König 2020-08-21 1154 drm_vma_node_unmap(&nvbo->bo.base.vma_node,
141b15e59175aa1 Christian König 2020-08-21 1155 bdev->dev_mapping);
141b15e59175aa1 Christian König 2020-08-21 1156 nouveau_ttm_io_mem_free_locked(drm, &nvbo->bo.mem);
141b15e59175aa1 Christian König 2020-08-21 1157 goto retry;
141b15e59175aa1 Christian König 2020-08-21 1158 }
141b15e59175aa1 Christian König 2020-08-21 1159
141b15e59175aa1 Christian König 2020-08-21 1160 }
141b15e59175aa1 Christian König 2020-08-21 1161 mutex_unlock(&drm->ttm.io_reserve_mutex);
141b15e59175aa1 Christian König 2020-08-21 1162 return ret;
f32f02fd81f3177 Jerome Glisse 2010-04-09 1163 }
---
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: 34842 bytes --]
next reply other threads:[~2020-09-04 6:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-04 6:57 Dan Carpenter [this message]
2020-09-04 6:57 ` [drm-drm-misc:drm-misc-next 4/5] drivers/gpu/drm/nouveau/nouveau_bo.c:1146 nouveau_ttm_io_mem_reserve() error: uninitialized symbol 'ret' Dan Carpenter
-- strict thread matches above, loose matches on Subject: below --
2020-09-03 21:22 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=20200904065724.GI8299@kadam \
--to=dan.carpenter@oracle.com \
--cc=kbuild@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.