All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [i-g-t V3 44/82] tests/kms_cursor_legacy: Document each subtest for testplan
Date: Tue, 23 May 2023 12:02:05 +0530	[thread overview]
Message-ID: <20230523063243.669540-45-bhanuprakash.modem@intel.com> (raw)
In-Reply-To: <20230523063243.669540-1-bhanuprakash.modem@intel.com>

Add documentation for all kms tests which is used by IGT testplan
documentation.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_cursor_legacy.c | 217 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 216 insertions(+), 1 deletion(-)

diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index f7a6202cf..7a077a381 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -23,8 +23,9 @@
  */
 
 /**
- * TEST: Stress legacy cursor ioctl
+ * TEST: kms cursor legacy
  * Category: Display
+ * Description: Stress legacy cursor ioctl
  */
 
 #include <sched.h>
@@ -77,6 +78,28 @@ static void override_output_modes(igt_display_t *display,
 	igt_output_set_pipe(output2, PIPE_NONE);
 }
 
+/**
+ * SUBTEST: %s-%s
+ * Description: Test checks how many cursor updates we can fit between vblanks
+ *              on single/all pipes with different modes, priority and number
+ *              of processes
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @single:      Single
+ * @torture:     Torture
+ * @forked:      Forked
+ *
+ * arg[2]:
+ *
+ * @bo:          BO
+ * @move:        Move
+ */
 static void stress(igt_display_t *display,
 		   enum pipe pipe, int num_children, unsigned mode,
 		   int timeout)
@@ -544,11 +567,20 @@ enum basic_flip_cursor {
 /**
  * SUBTEST: basic-busy-flip-before-cursor-%s
  * Description: Cursor test with %arg[1] mode
+ * Driver requirement: any
  * Test category: functionality test
  * Run type: BAT
  * Functionality: cursor
  * Mega feature: General Display Features
  *
+ * SUBTEST: basic-busy-flip-before-cursor-varying-size
+ * Description: Change the size of cursor b/w 64*64 to maxw x maxh.
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
  * arg[1]:
  *
  * @atomic:	atomic
@@ -558,6 +590,7 @@ enum basic_flip_cursor {
 /**
  * SUBTEST: basic-flip-after-cursor-%s
  * Description: Cursor test with %arg[1]
+ * Driver requirement: any
  * Test category: functionality test
  * Run type: BAT
  * Functionality: cursor
@@ -565,6 +598,7 @@ enum basic_flip_cursor {
  *
  * SUBTEST: basic-flip-before-cursor-%s
  * Description: Cursor test with %arg[1]
+ * Driver requirement: any
  * Test category: functionality test
  * Run type: BAT
  * Functionality: cursor
@@ -576,6 +610,53 @@ enum basic_flip_cursor {
  * @legacy:        legacy mode
  * @varying-size:  varying size
  */
+
+/**
+ * SUBTEST: %s-flip-before-cursor-%s
+ * Description: Adds variety of tests:
+ *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
+ *		- atomic-transition: alternates between a full screen sprite plane
+ *		                     and full screen primary plane.\n"
+ *		- toggle: which toggles cursor visibility and make sure cursor moves
+ *		          between updates.
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @short:
+ * @short-busy:
+ *
+ * arg[2]:
+ *
+ * @atomic-transitions:
+ * @atomic-transitions-varying-size:
+ * @toggle:
+ */
+
+/**
+ * SUBTEST: short-flip-after-cursor-%s
+ * Description: Adds variety of tests:
+ *		- varying-size: change the size of cursor b/w 64*64 to maxw x maxh.\n
+ *		- atomic-transition: alternates between a full screen sprite plane
+ *		                     and full screen primary plane.\n"
+ *		- toggle: which toggles cursor visibility and make sure cursor moves
+ *		          between updates.
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic-transitions:
+ * @atomic-transitions-varying-size:
+ * @toggle:
+ */
 static void basic_flip_cursor(igt_display_t *display,
 			      enum flip_test mode,
 			      enum basic_flip_cursor order,
@@ -894,6 +975,25 @@ static void flip_vs_cursor(igt_display_t *display, enum flip_test mode, int nloo
 		igt_remove_fb(display->drm_fd, &cursor_fb2);
 }
 
+/**
+ * SUBTEST: long-nonblocking-modeset-vs-cursor-atomic
+ * Description: Test checks how many cursor updates we can fit between vblanks
+ *              on all pipes with different modes, priority and number of processes
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * SUBTEST: nonblocking-modeset-vs-cursor-atomic
+ * Description: Test checks how many cursor updates we can fit between vblanks
+ *              on all pipes with different modes, priority and number of processes
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ */
 static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
 {
 	struct igt_fb fb_info, cursor_fb;
@@ -993,6 +1093,44 @@ static void wait_for_modeset(igt_display_t *display, unsigned flags, int timeout
 	igt_reset_timeout();
 }
 
+/**
+ * SUBTEST: 2x-%s-%s
+ * Description: This test executes flips on both CRTCs while running cursor
+ *              updates in parallel
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @flip-vs-cursor:
+ * @flip-vs-cursor:
+ * @long-flip-vs-cursor:
+ * @long-flip-vs-cursor:
+ *
+ * arg[2]:
+ *
+ * @atomic:
+ * @legacy:
+ */
+
+/**
+ * SUBTEST: 2x-%s-atomic
+ * Description: This test executes flips on both CRTCs while running cursor
+ *              updates in parallel
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @long-nonblocking-modeset-vs-cursor:
+ * @nonblocking-modeset-vs-cursor:
+ */
 static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool modeset, bool atomic)
 {
 	struct drm_mode_cursor arg1[2], arg2[2];
@@ -1180,6 +1318,34 @@ done:
 	munmap((void *)shared, PAGE_SIZE);
 }
 
+/**
+ * SUBTEST: %s-%s
+ * Description: The essence of the basic test is that neither the cursor nor the
+ *              nonblocking flip stall the application of the next
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @cursor-vs-flip:
+ * @cursorA-vs-flipA:
+ * @cursorA-vs-flipB:
+ * @cursorB-vs-flipA:
+ * @cursorB-vs-flipB:
+ * @flip-vs-cursor:
+ *
+ * arg[2]:
+ *
+ * @atomic:
+ * @atomic-transitions:
+ * @atomic-transitions-varying-size:
+ * @legacy:
+ * @toggle:
+ * @varying-size:
+ */
 static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloops)
 {
 	struct drm_mode_cursor arg[2];
@@ -1292,6 +1458,27 @@ static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloo
 		igt_remove_fb(display->drm_fd, &cursor_fb2);
 }
 
+/**
+ * SUBTEST: 2x-%s-%s
+ * Description: This test executes flips on both CRTCs while running cursor updates in parallel
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @cursor-vs-flip:
+ * @cursor-vs-flip:
+ * @long-cursor-vs-flip:
+ * @long-cursor-vs-flip:
+ *
+ * arg[2]:
+ *
+ * @atomic:
+ * @legacy:
+ */
 static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool atomic)
 {
 	struct drm_mode_cursor arg[2][2];
@@ -1420,6 +1607,20 @@ static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool
 	munmap((void *)shared, PAGE_SIZE);
 }
 
+/**
+ * SUBTEST: flip-vs-cursor-crc-%s
+ * Description: this test perform a page flip followed by a cursor update
+ * Driver requirement: any
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic:
+ * @legacy:
+ */
 static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
 {
 	struct drm_mode_cursor arg[2];
@@ -1492,6 +1693,20 @@ static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
 	igt_remove_fb(display->drm_fd, &cursor_fb);
 }
 
+/**
+ * SUBTEST: flip-vs-cursor-busy-crc-%s
+ * Description: this test perform a busy bo update followed by a cursor update
+ * Driver requirement: i915
+ * Functionality: cursor
+ * Mega feature: General Display Features
+ * Run type: FULL
+ * Test category: functionality test
+ *
+ * arg[1]:
+ *
+ * @atomic:
+ * @legacy:
+ */
 static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
 {
 	struct drm_mode_cursor arg[2];
-- 
2.40.0

  parent reply	other threads:[~2023-05-23  6:39 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-23  6:31 [igt-dev] [i-g-t V3 00/82] Document KMS tests Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 01/82] tests/chamelium: Move chamelium helpers to lib Bhanuprakash Modem
2023-05-23  6:50   ` Mauro Carvalho Chehab
2023-05-23 16:04   ` Kamil Konieczny
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 02/82] tests/dsc: Move dsc " Bhanuprakash Modem
2023-05-23  6:51   ` Mauro Carvalho Chehab
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 03/82] tests/color: Move color " Bhanuprakash Modem
2023-05-23  6:51   ` Mauro Carvalho Chehab
2023-05-23 16:00   ` Kamil Konieczny
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 04/82] testplan/kms: Include testdisplay to kms testplan config Bhanuprakash Modem
2023-05-23  6:45   ` Mauro Carvalho Chehab
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 05/82] testplan/kms: Add support to differentiate b/w drivers Bhanuprakash Modem
2023-05-23  6:45   ` Mauro Carvalho Chehab
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 06/82] tests/chamelium/kms_chamelium_audio: Document each subtest for testplan Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 07/82] tests/chamelium/kms_chamelium_color: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 08/82] tests/chamelium/kms_chamelium_edid: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 09/82] tests/chamelium/kms_chamelium_frames: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 10/82] tests/chamelium/kms_chamelium_hpd: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 11/82] tests/i915/kms_big_fb: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 12/82] tests/i915/kms_big_joiner: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 13/82] tests/i915/kms_busy: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 14/82] tests/i915/kms_ccs: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 15/82] tests/i915/kms_cdclk: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 16/82] tests/i915/kms_draw_crc: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 17/82] tests/i915/kms_dsc: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 18/82] tests/i915/kms_fb_coherency: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 19/82] tests/i915/kms_fbcon_fbt: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 20/82] tests/i915/kms_fence_pin_leak: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 21/82] tests/i915/kms_flip_scaled_crc: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 22/82] tests/i915/kms_flip_tiling: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 23/82] tests/i915/kms_frontbuffer_tracking: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 24/82] tests/i915/kms_legacy_colorkey: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 25/82] tests/i915/kms_mmap_write_crc: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 26/82] tests/i915/kms_pipe_b_c_ivb: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 27/82] tests/i915/kms_psr: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 28/82] tests/i915/kms_psr2_sf: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 29/82] tests/i915/kms_psr2_su: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 30/82] tests/i915/kms_psr_stress_test: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 31/82] tests/i915/kms_pwrite_crc: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 32/82] tests/kms_3d: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 33/82] tests/kms_addfb_basic: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 34/82] tests/kms_async_flips: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 35/82] tests/kms_atomic: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 36/82] tests/kms_atomic_interruptible: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 37/82] tests/kms_atomic_transition: " Bhanuprakash Modem
2023-05-23  6:31 ` [igt-dev] [i-g-t V3 38/82] tests/kms_bw: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 39/82] tests/kms_color: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 40/82] tests/kms_concurrent: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 41/82] tests/kms_content_protection: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 42/82] tests/kms_cursor_crc: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 43/82] tests/kms_cursor_edge_walk: " Bhanuprakash Modem
2023-05-23  6:32 ` Bhanuprakash Modem [this message]
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 45/82] tests/kms_display_modes: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 46/82] tests/kms_dither: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 47/82] tests/kms_dp_aux_dev: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 48/82] tests/kms_dp_tiled_display: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 49/82] tests/kms_flip: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 50/82] tests/kms_flip_event_leak: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 51/82] tests/kms_force_connector_basic: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 52/82] tests/kms_getfb: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 53/82] tests/kms_hdmi_inject: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 54/82] tests/kms_hdr: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 55/82] tests/kms_invalid_mode: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 56/82] tests/kms_lease: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 57/82] tests/kms_multipipe_modeset: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 58/82] tests/kms_panel_fitting: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 59/82] tests/kms_pipe_crc_basic: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 60/82] tests/kms_plane: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 61/82] tests/kms_plane_alpha_blend: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 62/82] tests/kms_plane_cursor: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 63/82] tests/kms_plane_lowres: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 64/82] tests/kms_plane_multiple: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 65/82] tests/kms_plane_scaling: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 66/82] tests/kms_prime: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 67/82] tests/kms_prop_blob: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 68/82] tests/kms_properties: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 69/82] tests/kms_rmfb: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 70/82] tests/kms_rotation_crc: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 71/82] tests/kms_scaling_modes: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 72/82] tests/kms_selftest: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 73/82] tests/kms_sequence: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 74/82] tests/kms_setmode: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 75/82] tests/kms_sysfs_edid_timing: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 76/82] tests/kms_tv_load_detect: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 77/82] tests/kms_universal_plane: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 78/82] tests/kms_vblank: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 79/82] tests/kms_vrr: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 80/82] tests/kms_writeback: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 81/82] tests/testdisplay: " Bhanuprakash Modem
2023-05-23  6:32 ` [igt-dev] [i-g-t V3 82/82] testplan/kms: Make documentation is mandatory for all kms subtests Bhanuprakash Modem
2023-05-23  6:44   ` Mauro Carvalho Chehab
2023-05-23  7:08 ` [igt-dev] ✗ GitLab.Pipeline: warning for Document KMS tests (rev10) Patchwork
2023-05-23  7:27 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2023-05-23  9:30 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork

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=20230523063243.669540-45-bhanuprakash.modem@intel.com \
    --to=bhanuprakash.modem@intel.com \
    --cc=igt-dev@lists.freedesktop.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.