From: Lucas Stach <l.stach@pengutronix.de>
To: dri-devel@lists.freedesktop.org
Cc: Russell King <linux@arm.linux.org.uk>, kernel@pengutronix.de
Subject: [PATCH RFC 021/111] staging: etnaviv: respect the submission command offset
Date: Thu, 2 Apr 2015 17:29:23 +0200 [thread overview]
Message-ID: <1427988653-754-22-git-send-email-l.stach@pengutronix.de> (raw)
In-Reply-To: <1427988653-754-1-git-send-email-l.stach@pengutronix.de>
From: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
drivers/staging/etnaviv/etnaviv_buffer.c | 10 ++++++++--
drivers/staging/etnaviv/etnaviv_gem.h | 1 +
drivers/staging/etnaviv/etnaviv_gem_submit.c | 8 ++++++++
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/etnaviv/etnaviv_buffer.c b/drivers/staging/etnaviv/etnaviv_buffer.c
index 729387571537..30ef93aed22a 100644
--- a/drivers/staging/etnaviv/etnaviv_buffer.c
+++ b/drivers/staging/etnaviv/etnaviv_buffer.c
@@ -165,7 +165,8 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, unsigned int event, struct et
/* update offset for every cmd stream */
for (i = 0; i < submit->nr_cmds; i++)
- submit->cmd[i].obj->offset = submit->cmd[i].size;
+ submit->cmd[i].obj->offset = submit->cmd[i].offset +
+ submit->cmd[i].size;
/* TODO: inter-connect all cmd buffers */
@@ -173,6 +174,11 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, unsigned int event, struct et
cmd = submit->cmd[submit->nr_cmds - 1].obj;
CMD_LINK(cmd, 4, buffer->paddr + (back * 4));
+ /* update the size */
+ for (i = 0; i < submit->nr_cmds; i++)
+ submit->cmd[i].size = submit->cmd[i].obj->offset -
+ submit->cmd[i].offset;
+
printk(KERN_ERR "stream link @ 0x%08x\n", cmd->paddr + ((cmd->offset - 1) * 4));
printk(KERN_ERR "stream link @ %p\n", cmd->vaddr + ((cmd->offset - 1) * 4));
@@ -193,7 +199,7 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, unsigned int event, struct et
/* Change WAIT into a LINK command; write the address first. */
i = VIV_FE_LINK_HEADER_OP_LINK | VIV_FE_LINK_HEADER_PREFETCH(submit->cmd[0].size * 2);
- *(lw + 1) = submit->cmd[0].obj->paddr;
+ *(lw + 1) = submit->cmd[0].obj->paddr + submit->cmd[0].offset * 4;
mb();
*(lw)= i;
mb();
diff --git a/drivers/staging/etnaviv/etnaviv_gem.h b/drivers/staging/etnaviv/etnaviv_gem.h
index 597ff8233fb1..97302ca6efaa 100644
--- a/drivers/staging/etnaviv/etnaviv_gem.h
+++ b/drivers/staging/etnaviv/etnaviv_gem.h
@@ -87,6 +87,7 @@ struct etnaviv_gem_submit {
unsigned int nr_bos;
struct {
uint32_t type;
+ uint32_t offset; /* in dwords */
uint32_t size; /* in dwords */
struct etnaviv_gem_object *obj;
} cmd[MAX_CMDS];
diff --git a/drivers/staging/etnaviv/etnaviv_gem_submit.c b/drivers/staging/etnaviv/etnaviv_gem_submit.c
index 78c56adfcffc..7eb02a121cff 100644
--- a/drivers/staging/etnaviv/etnaviv_gem_submit.c
+++ b/drivers/staging/etnaviv/etnaviv_gem_submit.c
@@ -382,6 +382,13 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
goto out;
}
+ if (submit_cmd.submit_offset % 8) {
+ DRM_ERROR("non-aligned cmdstream buffer size: %u\n",
+ submit_cmd.size);
+ ret = -EINVAL;
+ goto out;
+ }
+
/*
* We must have space to add a LINK command at the end of
* the command buffer.
@@ -396,6 +403,7 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
}
submit->cmd[i].type = submit_cmd.type;
+ submit->cmd[i].offset = submit_cmd.submit_offset / 4;
submit->cmd[i].size = submit_cmd.size / 4;
submit->cmd[i].obj = etnaviv_obj;
--
2.1.4
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-04-02 15:30 UTC|newest]
Thread overview: 181+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-02 15:29 [PATCH RFC 000/111] Etnaviv DRM driver Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 001/111] of: Add vendor prefix for Vivante Corporation Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 002/111] staging: etnaviv: add devicetree bindings Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 003/111] staging: etnaviv: add drm driver Lucas Stach
2015-04-05 19:26 ` Christian Gmeiner
2015-04-07 7:35 ` Lucas Stach
2015-04-07 9:04 ` Christian Gmeiner
2015-04-07 9:20 ` Lucas Stach
2015-04-07 9:40 ` Christian Gmeiner
2015-04-07 9:47 ` Lucas Stach
2015-04-07 9:58 ` Christian Gmeiner
2015-04-07 10:27 ` Lucas Stach
2015-04-08 0:13 ` Dave Airlie
2015-04-08 9:02 ` Lucas Stach
2015-04-07 10:46 ` Russell King - ARM Linux
2015-04-07 12:52 ` Lucas Stach
2015-04-07 23:56 ` Jerome Glisse
2015-04-02 15:29 ` [PATCH RFC 004/111] staging: etnaviv: import new headers Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 005/111] staging: etnaviv: remove IOMMUv2 stubs Lucas Stach
2015-04-02 17:14 ` Robert Nelson
2015-04-02 17:41 ` Lucas Stach
2015-04-05 18:32 ` Christian Gmeiner
2015-04-07 7:24 ` Lucas Stach
2015-04-07 8:13 ` Christian Gmeiner
2015-04-02 15:29 ` [PATCH RFC 006/111] staging: etnaviv: fix oops on unbind Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 007/111] staging: etnaviv: fix oops in timer subsystem caused by hangcheck timer Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 008/111] staging: etnaviv: fix etnaviv_add_components() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 009/111] staging: etnaviv: fix etnaviv_hw_reset() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 010/111] staging: etnaviv: fix etnaviv gpu debugfs output Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 011/111] staging: etnaviv: fix fence implementation Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 012/111] staging: etnaviv: fix buffer dumping code Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 013/111] staging: etnaviv: fix ring buffer overflow check Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 014/111] staging: etnaviv: fix cleanup of imported dmabufs Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 015/111] staging: etnaviv: fix printk formats Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 016/111] staging: etnaviv: validation: ensure space for the LINK command Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 017/111] staging: etnaviv: validation: improve command buffer size checks Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 018/111] staging: etnaviv: validation: improve relocation validation Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 019/111] staging: etnaviv: fix sparse warnings Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 020/111] staging: etnaviv: use devm_ioremap_resource() Lucas Stach
2015-04-02 15:29 ` Lucas Stach [this message]
2015-04-02 15:29 ` [PATCH RFC 022/111] staging: etnaviv: add an offset for buffer dumping Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 023/111] staging: etnaviv: quieten down submission debugging Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 024/111] staging: etnaviv: fix multiple command buffer submission in etnaviv_buffer_queue() Lucas Stach
2015-04-05 18:36 ` Christian Gmeiner
2015-04-02 15:29 ` [PATCH RFC 025/111] staging: etnaviv: package up events into etnaviv_event struct Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 026/111] staging: etnaviv: track the last known GPU position Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 027/111] staging: etnaviv: ensure that ring buffer wraps Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 028/111] staging: etnaviv: fix checkpatch errors Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 029/111] staging: etnaviv: fix checkpatch warnings Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 030/111] staging: etnaviv: fix get_pages() failure path Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 031/111] staging: etnaviv: add gem operations structure to etnaviv objects Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 032/111] staging: etnaviv: convert prime import to use etnaviv_gem_ops Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 033/111] staging: etnaviv: convert shmem release " Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 034/111] staging: etnaviv: convert cmdbuf " Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 035/111] staging: etnaviv: move drm_gem_object_release() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 036/111] staging: etnaviv: ensure cleanup of reservation object Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 037/111] staging: etnaviv: clean up etnaviv_gem_free_object() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 038/111] staging: etnaviv: provide etnaviv_gem_new_private() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 039/111] staging: etnaviv: move msm_gem_import() etc to etnaviv_gem_prime.c Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 040/111] staging: etnaviv: clean up prime import Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 041/111] staging: etnaviv: convert get_pages()/put_pages() to take etnaviv_obj Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 042/111] staging: etnaviv: clean up etnaviv_gem_{get, put}_pages() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 043/111] staging: etnaviv: add gem get_pages() method Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 044/111] staging: etnaviv: fix DMA API usage Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 045/111] staging: etnaviv: add support to insert a MMU flush into GPU stream Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 046/111] staging: etnaviv: move GPU memory management into MMU Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 047/111] staging: etnaviv: publish and use mmu geometry Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 048/111] staging: etnaviv: mmuv1: ensure we unmap all entries Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 049/111] staging: etnaviv: move MMU setup and teardown code to etnaviv_mmu.c Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 050/111] staging: etnaviv: hack: bypass iommu with contiguous buffers Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 051/111] staging: etnaviv: implement round-robin GPU MMU allocation Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 052/111] staging: etnaviv: fix etnaviv_iommu_map_gem() return paths Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 053/111] staging: etnaviv: implement MMU reaping Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 054/111] staging: etnaviv: move scatterlist creation to etnaviv_gem_get_pages() Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 055/111] staging: etnaviv: add userptr mapping support Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 056/111] staging: etnaviv: call the DRM device 'drm' Lucas Stach
2015-04-02 15:29 ` [PATCH RFC 057/111] staging: etnaviv: clean up printk()s etc Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 058/111] staging: etnaviv: safely take down hangcheck Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 059/111] staging: etnaviv: move hangcheck disable to separate function Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 060/111] staging: etnaviv: stop the hangcheck timer mis-firing Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 061/111] staging: etnaviv: ensure that we retire all pending events Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 062/111] staging: etnaviv: ensure GPU reset times out Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 063/111] staging: etnaviv: add workarounds for GC320 on iMX6 Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 064/111] staging: etnaviv: increase iommu page table size to 512KiB Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 065/111] staging: etnaviv: allow non-DT use Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 066/111] staging: etnaviv: dump mmu allocations Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 067/111] staging: etnaviv: use definitions for constants Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 068/111] staging: etnaviv: fix fence wrapping for gem objects Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 069/111] staging: etnaviv: move scatterlist map/unmap Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 070/111] staging: etnaviv: remove presumption of BO addresses Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 071/111] staging: etnaviv: clean up etnaviv mmu scatterlist code Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 072/111] staging: etnaviv: "better" DMA API usage Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 073/111] staging: etnaviv: iommu: add a poisoned bad page Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 074/111] staging: etnaviv: validate user supplied command stream Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 075/111] staging: etnaviv: allow get_param without auth Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 076/111] staging: etnaviv: fix busy reporting Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 077/111] staging: etnaviv: fix event allocation failure path Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 078/111] staging: etnaviv: remove powerrail support Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 079/111] staging: etnaviv: NULL out stale pointers at unbind time Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 080/111] staging: etnaviv: move mutex around component_{un, }bind_all() Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 081/111] staging: etnaviv: move PM calls into bind/unbind callbacks Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 082/111] staging: etnaviv: separate out etnaviv gpu hardware initialisation Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 083/111] staging: etnaviv: add support to shutdown and restore the front end Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 084/111] staging: etnaviv: runtime PM: add initial support Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 085/111] staging: etnaviv: add support for offset physical memory Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 086/111] staging: etnaviv: allow to draw up to 256 rectangles in one draw call Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 087/111] staging: etnaviv: align command stream size to 64 bit Lucas Stach
2015-04-02 16:20 ` Russell King - ARM Linux
2015-04-02 16:29 ` Lucas Stach
2015-04-02 16:45 ` Russell King - ARM Linux
2015-04-02 16:49 ` Lucas Stach
2015-04-05 19:38 ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 088/111] staging: etnaviv: correct instruction count for GC2000 and GC880 Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 089/111] staging: etnaviv: reconfigure bus mapping on GC2000 Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 090/111] staging: etnaviv: fix cache cleaning for uncached SHM buffers Lucas Stach
2015-04-02 16:22 ` Russell King - ARM Linux
2015-04-02 16:36 ` Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 091/111] staging: etnaviv: properly flush all TLBs on MMUv1 Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 092/111] staging: etnaviv: convert to_etnaviv_bo() to real function Lucas Stach
2015-04-02 16:29 ` Russell King - ARM Linux
2015-04-05 19:29 ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 093/111] staging: etnaviv: take gpu instead of pipe as input to fence wait function Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 094/111] staging: etnaviv: plug in fence waiting in cpu_prepare Lucas Stach
2015-04-05 18:51 ` Christian Gmeiner
2015-04-07 7:26 ` Lucas Stach
2015-04-07 8:14 ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 095/111] staging: etnaviv: allow to map buffer object into multiple address spaces Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 096/111] staging: etnaviv: don't pretend to have a single MMU Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 097/111] staging: etnaviv: use GPU device to construct MMU Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 098/111] staging: etnaviv: flush MMU when switching context Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 099/111] staging: etnaviv: add flag to force buffer through MMU Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 100/111] staging: etnaviv: use more natural devicetree abstraction Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 101/111] staging: etnaviv: don't override platform provided IRQ flags Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 102/111] staging: etnaviv: separate GPU pipes from execution state Lucas Stach
2015-04-02 16:37 ` Russell King - ARM Linux
2015-04-05 19:41 ` Christian Gmeiner
2015-04-07 7:46 ` Lucas Stach
2015-04-07 8:03 ` Christian Gmeiner
2015-04-07 9:05 ` Lucas Stach
2015-04-07 11:31 ` Russell King - ARM Linux
2015-04-07 13:01 ` Lucas Stach
2015-04-07 14:38 ` Alex Deucher
2015-04-07 14:51 ` Jon Nettleton
2015-04-07 15:01 ` Lucas Stach
2015-04-07 15:07 ` Jon Nettleton
2015-04-07 15:13 ` Christian Gmeiner
2015-04-07 15:29 ` Lucas Stach
2015-04-07 16:59 ` Christian Gmeiner
2015-04-07 21:25 ` Russell King - ARM Linux
2015-04-08 7:28 ` Christian Gmeiner
2015-04-08 8:52 ` Lucas Stach
2015-04-07 22:14 ` Rob Clark
2015-04-08 8:59 ` Lucas Stach
2015-04-08 8:48 ` Lucas Stach
2015-04-07 14:52 ` Christian Gmeiner
2015-04-07 15:06 ` Christian König
2015-04-07 15:09 ` Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 103/111] staging: etnaviv: make sure to unlock DRM mutex when component bind fails Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 104/111] staging: etnaviv: clean up public API Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 105/111] staging: etnaviv: prune dumb buffer support Lucas Stach
2015-04-07 7:37 ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 106/111] staging: etnaviv: properly prefix all prime functions to etnaviv Lucas Stach
2015-04-07 7:35 ` Christian Gmeiner
2015-04-02 15:30 ` [PATCH RFC 107/111] staging: etnaviv: rename last remaining bits from msm " Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 108/111] staging: etnaviv: quiten down kernel log output Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 109/111] staging: etnaviv: add proper license header to all files Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 110/111] staging: etnaviv: some final trivial changes to the module Lucas Stach
2015-04-02 15:30 ` [PATCH RFC 111/111] ARM: imx6: add Vivante GPU nodes Lucas Stach
2015-04-02 15:43 ` [PATCH RFC 000/111] Etnaviv DRM driver Russell King - ARM Linux
2015-04-02 15:59 ` Lucas Stach
2015-04-02 20:01 ` Robert Nelson
2015-04-05 19:55 ` Christian Gmeiner
2015-04-08 9:58 ` Jean-Michel Hautbois
2015-04-07 6:05 ` Daniel Vetter
2015-05-27 12:45 ` Etnaviv DRM driver - oops when unloading Alexander Holler
2015-05-27 12:49 ` Lucas Stach
2015-05-27 23:03 ` Russell King - ARM Linux
2015-06-09 10:13 ` Moving Etnaviv forward (Was: Re: Etnaviv DRM driver - oops when unloading) Lucas Stach
2015-06-09 10:47 ` Russell King - ARM Linux
2015-05-27 17:35 ` Etnaviv DRM driver - oops when unloading Russell King - ARM Linux
2015-05-28 8:24 ` Alexander Holler
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=1427988653-754-22-git-send-email-l.stach@pengutronix.de \
--to=l.stach@pengutronix.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=kernel@pengutronix.de \
--cc=linux@arm.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).