All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Alex Williamson <alex.williamson@redhat.com>,
	"igvt-g@ml01.01.org" <igvt-g@ml01.01.org>,
	"Li, Susie" <susie.li@intel.com>,
	"White, Michael L" <michael.l.white@intel.com>,
	"Dong, Eddie" <eddie.dong@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"Reddy, Raghuveer" <raghuveer.reddy@intel.com>,
	"Cowperthwaite, David J" <david.j.cowperthwaite@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Zhou, Chao" <chao.zhou@intel.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Zhu, Libo" <libo.zhu@intel.com>,
	"Wang, Hongbo" <hongbo.wang@intel.com>
Subject: Re: [Intel-gfx] [Announcement] 2015-Q3 release of XenGT - a Mediated Graphics Passthrough Solution from Intel
Date: Tue, 24 Nov 2015 13:38:55 +0100	[thread overview]
Message-ID: <1448368735.27648.110.camel@redhat.com> (raw)
In-Reply-To: <20151124111917.GO17050@phenom.ffwll.local>

  Hi,

> > Yes, vGPU may have additional features, like a framebuffer area, that
> > aren't present or optional for direct assignment.  Obviously we support
> > direct assignment of GPUs for some vendors already without this feature.
> 
> For exposing framebuffers for spice/vnc I highly recommend against
> anything that looks like a bar/fixed mmio range mapping. First this means
> the kernel driver needs to internally fake remapping, which isn't fun.

Sure.  I don't think we should remap here.  More below.

> My recoomendation is to build the actual memory access for underlying
> framebuffers on top of dma-buf, so that it can be vacuumed up by e.g. the
> host gpu driver again for rendering.

We want that too ;)

Some more background:

OpenGL support in qemu is still young and emerging, and we are actually
building on dma-bufs here.  There are a bunch of different ways how
guest display output is handled.  At the end of the day it boils down to
only two fundamental cases though:

  (a) Where qemu doesn't need access to the guest framebuffer
      - qemu directly renders via opengl (works today with virtio-gpu
        and will be in the qemu 2.5 release)
      - qemu passed on the dma-buf to spice client for local display
        (experimental code exists).
      - qemu feeds the guest display into gpu-assisted video encoder
        to send a stream over the network (no code yet).

  (b) Where qemu must read the guest framebuffer.
      - qemu's builtin vnc server.
      - qemu writing screenshots to file.
      - (non-opengl legacy code paths for local display, will
         hopefully disappear long-term though ...)

So, the question is how to support (b) best.  Even with OpenGL support
in qemu improving over time I don't expect this going away completely
anytime soon.

I think it makes sense to have a special vfio region for that.  I don't
think remapping makes sense there.  It doesn't need to be "live", it
doesn't need support high refresh rates.  Placing a copy of the guest
framebuffer there on request (and convert from tiled to linear while
being at it) is perfectly fine.  qemu has a adaptive update rate and
will stop doing frequent update requests when the vnc client
disconnects, so there will be nothing to do if nobody wants actually see
the guest display.

Possible alternative approach would be to import a dma-buf, then use
glReadPixels().  I suspect when doing the copy in the kernel the driver
could ask just the gpu to blit the guest framebuffer.  Don't know gfx
hardware good enough to be sure though, comments are welcome.

cheers,
  Gerd



WARNING: multiple messages have this Message-ID (diff)
From: Gerd Hoffmann <kraxel@redhat.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: "igvt-g@ml01.01.org" <igvt-g@ml01.01.org>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Reddy, Raghuveer" <raghuveer.reddy@intel.com>,
	"White, Michael L" <michael.l.white@intel.com>,
	"Cowperthwaite, David J" <david.j.cowperthwaite@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"Li, Susie" <susie.li@intel.com>,
	"Dong, Eddie" <eddie.dong@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	Alex Williamson <alex.williamson@redhat.com>,
	"Zhou, Chao" <chao.zhou@intel.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Zhu, Libo" <libo.zhu@intel.com>,
	"Wang, Hongbo" <hongbo.wang@intel.com>
Subject: Re: [Qemu-devel] [Intel-gfx] [Announcement] 2015-Q3 release of XenGT - a Mediated Graphics Passthrough Solution from Intel
Date: Tue, 24 Nov 2015 13:38:55 +0100	[thread overview]
Message-ID: <1448368735.27648.110.camel@redhat.com> (raw)
In-Reply-To: <20151124111917.GO17050@phenom.ffwll.local>

  Hi,

> > Yes, vGPU may have additional features, like a framebuffer area, that
> > aren't present or optional for direct assignment.  Obviously we support
> > direct assignment of GPUs for some vendors already without this feature.
> 
> For exposing framebuffers for spice/vnc I highly recommend against
> anything that looks like a bar/fixed mmio range mapping. First this means
> the kernel driver needs to internally fake remapping, which isn't fun.

Sure.  I don't think we should remap here.  More below.

> My recoomendation is to build the actual memory access for underlying
> framebuffers on top of dma-buf, so that it can be vacuumed up by e.g. the
> host gpu driver again for rendering.

We want that too ;)

Some more background:

OpenGL support in qemu is still young and emerging, and we are actually
building on dma-bufs here.  There are a bunch of different ways how
guest display output is handled.  At the end of the day it boils down to
only two fundamental cases though:

  (a) Where qemu doesn't need access to the guest framebuffer
      - qemu directly renders via opengl (works today with virtio-gpu
        and will be in the qemu 2.5 release)
      - qemu passed on the dma-buf to spice client for local display
        (experimental code exists).
      - qemu feeds the guest display into gpu-assisted video encoder
        to send a stream over the network (no code yet).

  (b) Where qemu must read the guest framebuffer.
      - qemu's builtin vnc server.
      - qemu writing screenshots to file.
      - (non-opengl legacy code paths for local display, will
         hopefully disappear long-term though ...)

So, the question is how to support (b) best.  Even with OpenGL support
in qemu improving over time I don't expect this going away completely
anytime soon.

I think it makes sense to have a special vfio region for that.  I don't
think remapping makes sense there.  It doesn't need to be "live", it
doesn't need support high refresh rates.  Placing a copy of the guest
framebuffer there on request (and convert from tiled to linear while
being at it) is perfectly fine.  qemu has a adaptive update rate and
will stop doing frequent update requests when the vnc client
disconnects, so there will be nothing to do if nobody wants actually see
the guest display.

Possible alternative approach would be to import a dma-buf, then use
glReadPixels().  I suspect when doing the copy in the kernel the driver
could ask just the gpu to blit the guest framebuffer.  Don't know gfx
hardware good enough to be sure though, comments are welcome.

cheers,
  Gerd

WARNING: multiple messages have this Message-ID (diff)
From: Gerd Hoffmann <kraxel@redhat.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: "igvt-g@ml01.01.org" <igvt-g@ml01.01.org>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Reddy, Raghuveer" <raghuveer.reddy@intel.com>,
	"White, Michael L" <michael.l.white@intel.com>,
	"Cowperthwaite, David J" <david.j.cowperthwaite@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"Li, Susie" <susie.li@intel.com>,
	"Dong, Eddie" <eddie.dong@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	"Zhou, Chao" <chao.zhou@intel.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Zhu, Libo" <libo.zhu@intel.com>,
	"Wang, Hongbo" <hongbo.wang@intel.com>
Subject: Re: [Announcement] 2015-Q3 release of XenGT - a Mediated Graphics Passthrough Solution from Intel
Date: Tue, 24 Nov 2015 13:38:55 +0100	[thread overview]
Message-ID: <1448368735.27648.110.camel@redhat.com> (raw)
In-Reply-To: <20151124111917.GO17050@phenom.ffwll.local>

  Hi,

> > Yes, vGPU may have additional features, like a framebuffer area, that
> > aren't present or optional for direct assignment.  Obviously we support
> > direct assignment of GPUs for some vendors already without this feature.
> 
> For exposing framebuffers for spice/vnc I highly recommend against
> anything that looks like a bar/fixed mmio range mapping. First this means
> the kernel driver needs to internally fake remapping, which isn't fun.

Sure.  I don't think we should remap here.  More below.

> My recoomendation is to build the actual memory access for underlying
> framebuffers on top of dma-buf, so that it can be vacuumed up by e.g. the
> host gpu driver again for rendering.

We want that too ;)

Some more background:

OpenGL support in qemu is still young and emerging, and we are actually
building on dma-bufs here.  There are a bunch of different ways how
guest display output is handled.  At the end of the day it boils down to
only two fundamental cases though:

  (a) Where qemu doesn't need access to the guest framebuffer
      - qemu directly renders via opengl (works today with virtio-gpu
        and will be in the qemu 2.5 release)
      - qemu passed on the dma-buf to spice client for local display
        (experimental code exists).
      - qemu feeds the guest display into gpu-assisted video encoder
        to send a stream over the network (no code yet).

  (b) Where qemu must read the guest framebuffer.
      - qemu's builtin vnc server.
      - qemu writing screenshots to file.
      - (non-opengl legacy code paths for local display, will
         hopefully disappear long-term though ...)

So, the question is how to support (b) best.  Even with OpenGL support
in qemu improving over time I don't expect this going away completely
anytime soon.

I think it makes sense to have a special vfio region for that.  I don't
think remapping makes sense there.  It doesn't need to be "live", it
doesn't need support high refresh rates.  Placing a copy of the guest
framebuffer there on request (and convert from tiled to linear while
being at it) is perfectly fine.  qemu has a adaptive update rate and
will stop doing frequent update requests when the vnc client
disconnects, so there will be nothing to do if nobody wants actually see
the guest display.

Possible alternative approach would be to import a dma-buf, then use
glReadPixels().  I suspect when doing the copy in the kernel the driver
could ask just the gpu to blit the guest framebuffer.  Don't know gfx
hardware good enough to be sure though, comments are welcome.

cheers,
  Gerd


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2015-11-24 12:39 UTC|newest]

Thread overview: 176+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-25  8:31 [Intel-gfx] [Announcement] Updates to XenGT - a Mediated Graphics Passthrough Solution from Intel Jike Song
2014-07-25  8:31 ` Jike Song
2014-07-29 10:09 ` [Xen-devel] [Intel-gfx] " Dario Faggioli
2014-07-29 10:09   ` Dario Faggioli
2014-07-30  9:39   ` Jike Song
2014-07-30  9:39   ` [Xen-devel] " Jike Song
2014-07-30  9:39     ` [Xen-devel] " Jike Song
2014-07-31 13:58     ` Dario Faggioli
2014-07-31 13:58     ` [Intel-gfx] " Dario Faggioli
2014-07-29 10:09 ` Dario Faggioli
2014-12-04  2:45 ` [Intel-gfx] [Announcement] 2014-Q3 release of " Jike Song
2014-12-04  2:45 ` Jike Song
2014-12-04  2:45   ` Jike Song
2014-12-04 10:20   ` [Intel-gfx] " Fabio Fantoni
2014-12-04 10:20   ` [Xen-devel] " Fabio Fantoni
2014-12-04 10:26     ` Tian, Kevin
2015-01-09  8:51   ` [Intel-gfx] [Announcement] 2015-Q1 " Jike Song
2015-01-09  8:51     ` Jike Song
2015-01-12  3:04     ` [Intel-gfx] [Announcement] 2014-Q4 " Jike Song
2015-01-12  3:04     ` Jike Song
2015-01-12  3:04       ` Jike Song
2015-04-10 13:23     ` [Intel-gfx] [Announcement] 2015-Q1 " Jike Song
2015-04-10 13:23     ` Jike Song
2015-04-10 13:23       ` Jike Song
2015-07-07  2:49       ` [Intel-gfx] [Announcement] 2015-Q2 " Jike Song
2015-07-07  2:49       ` Jike Song
2015-07-07  2:49         ` Jike Song
2015-10-27  9:25         ` [Intel-gfx] [Announcement] 2015-Q3 " Jike Song
2015-10-27  9:25           ` Jike Song
2015-11-18 18:12           ` [Intel-gfx] " Alex Williamson
2015-11-18 18:12             ` Alex Williamson
2015-11-18 18:12             ` [Qemu-devel] [Intel-gfx] " Alex Williamson
2015-11-19  4:06             ` Tian, Kevin
2015-11-19  4:06               ` Tian, Kevin
2015-11-19  4:06               ` [Qemu-devel] [Intel-gfx] " Tian, Kevin
2015-11-19  7:22               ` Jike Song
2015-11-19  7:22               ` Jike Song
2015-11-19  7:22                 ` Jike Song
2015-11-19  7:22                 ` [Qemu-devel] [Intel-gfx] " Jike Song
2015-11-19 15:32                 ` Stefano Stabellini
2015-11-19 15:32                 ` Stefano Stabellini
2015-11-19 15:32                   ` Stefano Stabellini
2015-11-19 15:32                   ` [Qemu-devel] " Stefano Stabellini
2015-11-19 15:49                   ` Paolo Bonzini
2015-11-19 15:49                     ` Paolo Bonzini
2015-11-19 15:49                     ` [Qemu-devel] [Intel-gfx] " Paolo Bonzini
2015-11-19 16:12                     ` Stefano Stabellini
2015-11-19 16:12                     ` Stefano Stabellini
2015-11-19 16:12                       ` [Qemu-devel] " Stefano Stabellini
2015-11-19 15:49                   ` Paolo Bonzini
2015-11-19 15:52                   ` Alex Williamson
2015-11-19 15:52                     ` Alex Williamson
2015-11-19 15:52                     ` [Qemu-devel] [Intel-gfx] " Alex Williamson
2015-11-20  2:58                     ` Jike Song
2015-11-20  2:58                       ` Jike Song
2015-11-20  2:58                       ` [Qemu-devel] [Intel-gfx] " Jike Song
2015-11-20  4:22                       ` Alex Williamson
2015-11-20  4:22                       ` Alex Williamson
2015-11-20  4:22                         ` Alex Williamson
2015-11-20  4:22                         ` [Qemu-devel] [Intel-gfx] " Alex Williamson
2015-11-20  5:51                         ` Jike Song
2015-11-20  5:51                           ` Jike Song
2015-11-20  5:51                           ` [Qemu-devel] [Intel-gfx] " Jike Song
2015-11-20  6:01                           ` Tian, Kevin
2015-11-20  6:01                             ` Tian, Kevin
2015-11-20  6:01                             ` [Qemu-devel] [Intel-gfx] " Tian, Kevin
2015-11-20  6:01                           ` Tian, Kevin
2015-11-20 16:40                           ` Alex Williamson
2015-11-20 16:40                             ` Alex Williamson
2015-11-20 16:40                             ` [Qemu-devel] [Intel-gfx] " Alex Williamson
2015-11-23  4:52                             ` Jike Song
2015-11-23  4:52                               ` Jike Song
2015-11-23  4:52                             ` Jike Song
2015-11-20 16:40                           ` Alex Williamson
2015-11-20  5:51                         ` Jike Song
2015-11-20  2:58                     ` Jike Song
2015-11-19 15:52                   ` Alex Williamson
2015-11-19  8:40               ` Gerd Hoffmann
2015-11-19  8:40               ` Gerd Hoffmann
2015-11-19  8:40                 ` Gerd Hoffmann
2015-11-19  8:40                 ` [Qemu-devel] [Intel-gfx] " Gerd Hoffmann
2015-11-19 11:09                 ` Paolo Bonzini
2015-11-19 11:09                   ` [Qemu-devel] " Paolo Bonzini
2015-11-20  2:46                   ` Jike Song
2015-11-20  2:46                   ` Jike Song
2015-11-20  2:46                     ` Jike Song
2015-11-20  2:46                     ` [Qemu-devel] [Intel-gfx] " Jike Song
2015-11-19 11:09                 ` Paolo Bonzini
2015-11-20  6:12                 ` Tian, Kevin
2015-11-20  6:12                   ` Tian, Kevin
2015-11-20  6:12                   ` [Qemu-devel] " Tian, Kevin
2015-11-20  8:26                   ` Gerd Hoffmann
2015-11-20  8:26                   ` Gerd Hoffmann
2015-11-20  8:26                     ` Gerd Hoffmann
2015-11-20  8:26                     ` [Qemu-devel] [Intel-gfx] " Gerd Hoffmann
2015-11-20  8:36                     ` Tian, Kevin
2015-11-20  8:36                     ` Tian, Kevin
2015-11-20  8:36                       ` Tian, Kevin
2015-11-20  8:36                       ` [Qemu-devel] [Intel-gfx] " Tian, Kevin
2015-11-20  8:46                       ` Zhiyuan Lv
2015-11-20  8:46                       ` Zhiyuan Lv
2015-11-20  8:46                         ` Zhiyuan Lv
2015-11-20  8:46                         ` [Qemu-devel] [Intel-gfx] " Zhiyuan Lv
2015-12-03  6:57                     ` Tian, Kevin
2015-12-03  6:57                       ` Tian, Kevin
2015-12-03  6:57                       ` [Qemu-devel] [Intel-gfx] " Tian, Kevin
2015-12-04 10:13                       ` Gerd Hoffmann
2015-12-04 10:13                         ` Gerd Hoffmann
2015-12-04 10:13                         ` [Qemu-devel] [Intel-gfx] " Gerd Hoffmann
2015-12-04 10:13                       ` Gerd Hoffmann
2015-12-03  6:57                     ` Tian, Kevin
2015-11-20  6:12                 ` Tian, Kevin
2015-11-19 20:02               ` Alex Williamson
2015-11-19 20:02                 ` Alex Williamson
2015-11-19 20:02                 ` [Qemu-devel] [Intel-gfx] " Alex Williamson
2015-11-20  7:09                 ` Tian, Kevin
2015-11-20  7:09                 ` Tian, Kevin
2015-11-20  7:09                   ` Tian, Kevin
2015-11-20  7:09                   ` [Qemu-devel] [Intel-gfx] " Tian, Kevin
2015-11-20 17:03                   ` Alex Williamson
2015-11-20 17:03                   ` Alex Williamson
2015-11-20 17:03                     ` Alex Williamson
2015-11-20 17:03                     ` [Qemu-devel] [Intel-gfx] " Alex Williamson
2015-11-20  8:10                 ` Tian, Kevin
2015-11-20  8:10                 ` Tian, Kevin
2015-11-20  8:10                   ` Tian, Kevin
2015-11-20  8:10                   ` [Qemu-devel] [Intel-gfx] " Tian, Kevin
2015-11-20 17:25                   ` Alex Williamson
2015-11-20 17:25                   ` Alex Williamson
2015-11-20 17:25                     ` Alex Williamson
2015-11-20 17:25                     ` [Qemu-devel] [Intel-gfx] " Alex Williamson
2015-11-23  5:05                     ` Jike Song
2015-11-23  5:05                     ` Jike Song
2015-11-23  5:05                       ` Jike Song
2015-11-23  5:05                       ` [Qemu-devel] [Intel-gfx] " Jike Song
2015-11-24 11:19                 ` Daniel Vetter
2015-11-24 11:19                   ` Daniel Vetter
2015-11-24 11:19                   ` [Qemu-devel] [Intel-gfx] " Daniel Vetter
2015-11-24 11:49                   ` Chris Wilson
2015-11-24 11:49                   ` Chris Wilson
2015-11-24 11:49                     ` Chris Wilson
2015-11-24 11:49                     ` [Qemu-devel] [Intel-gfx] " Chris Wilson
2015-11-24 12:38                   ` Gerd Hoffmann
2015-11-24 12:38                   ` Gerd Hoffmann [this message]
2015-11-24 12:38                     ` Gerd Hoffmann
2015-11-24 12:38                     ` [Qemu-devel] [Intel-gfx] " Gerd Hoffmann
2015-11-24 13:31                     ` Daniel Vetter
2015-11-24 13:31                       ` Daniel Vetter
2015-11-24 13:31                       ` [Qemu-devel] [Intel-gfx] " Daniel Vetter
2015-11-24 14:12                       ` Gerd Hoffmann
2015-11-24 14:12                       ` Gerd Hoffmann
2015-11-24 14:12                         ` Gerd Hoffmann
2015-11-24 14:12                         ` [Qemu-devel] [Intel-gfx] " Gerd Hoffmann
2015-11-24 14:19                         ` Daniel Vetter
2015-11-24 14:19                         ` Daniel Vetter
2015-11-24 14:19                           ` Daniel Vetter
2015-11-24 14:19                           ` [Qemu-devel] [Intel-gfx] " Daniel Vetter
2015-11-24 13:31                     ` Daniel Vetter
2015-11-24 11:19                 ` Daniel Vetter
2015-11-19 20:02               ` Alex Williamson
2015-11-19  4:06             ` Tian, Kevin
2015-11-18 18:12           ` Alex Williamson
2016-01-27  6:21           ` [Intel-gfx] [Announcement] 2015-Q4 " Jike Song
2016-01-27  6:21           ` Jike Song
2016-01-27  6:21             ` Jike Song
2016-04-28  5:29             ` [Intel-gfx] [Announcement] 2016-Q1 " Jike Song
2016-04-28  5:29               ` Jike Song
2016-07-22  5:42               ` [Intel-gfx] [Announcement] 2016-Q2 " Jike Song
2016-07-22  5:42               ` Jike Song
2016-07-22  5:42                 ` Jike Song
2016-11-06 14:59                 ` [Intel-gfx] [Announcement] 2016-Q3 " Jike Song
2016-11-06 14:59                 ` Jike Song
2016-11-06 14:59                   ` Jike Song
2016-04-28  5:29             ` [Intel-gfx] [Announcement] 2016-Q1 " Jike Song
2015-10-27  9:25         ` [Intel-gfx] [Announcement] 2015-Q3 " Jike Song
2015-01-09  8:51   ` [Intel-gfx] [Announcement] 2015-Q1 " Jike Song

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=1448368735.27648.110.camel@redhat.com \
    --to=kraxel@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=chao.zhou@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=david.j.cowperthwaite@intel.com \
    --cc=eddie.dong@intel.com \
    --cc=hongbo.wang@intel.com \
    --cc=igvt-g@ml01.01.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=libo.zhu@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael.l.white@intel.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=raghuveer.reddy@intel.com \
    --cc=susie.li@intel.com \
    --cc=xen-devel@lists.xen.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.