* [Qemu-devel] [PATCH v2 1/1] target/arm: Fix vector operation segfault
@ 2019-05-15 0:21 Alistair Francis
2019-05-15 0:28 ` Richard Henderson
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Alistair Francis @ 2019-05-15 0:21 UTC (permalink / raw)
To: qemu-devel, qemu-arm
Cc: peter.maydell, Alistair Francis, richard.henderson, alistair23
Commit 89e68b575 "target/arm: Use vector operations for saturation"
causes this abort() when booting QEMU ARM with a Cortex-A15:
0 0x00007ffff4c2382f in raise () at /usr/lib/libc.so.6
1 0x00007ffff4c0e672 in abort () at /usr/lib/libc.so.6
2 0x00005555559c1839 in disas_neon_data_insn (insn=<optimized out>, s=<optimized out>) at ./target/arm/translate.c:6673
3 0x00005555559c1839 in disas_neon_data_insn (s=<optimized out>, insn=<optimized out>) at ./target/arm/translate.c:6386
4 0x00005555559cd8a4 in disas_arm_insn (insn=4081107068, s=0x7fffe59a9510) at ./target/arm/translate.c:9289
5 0x00005555559cd8a4 in arm_tr_translate_insn (dcbase=0x7fffe59a9510, cpu=<optimized out>) at ./target/arm/translate.c:13612
6 0x00005555558d1d39 in translator_loop (ops=0x5555561cc580 <arm_translator_ops>, db=0x7fffe59a9510, cpu=0x55555686a2f0, tb=<optimized out>, max_insns=<optimized out>) at ./accel/tcg/translator.c:96
7 0x00005555559d10d4 in gen_intermediate_code (cpu=cpu@entry=0x55555686a2f0, tb=tb@entry=0x7fffd7840080 <code_gen_buffer+126091347>, max_insns=max_insns@entry=512) at ./target/arm/translate.c:13901
8 0x00005555558d06b9 in tb_gen_code (cpu=cpu@entry=0x55555686a2f0, pc=3067096216, cs_base=0, flags=192, cflags=-16252928, cflags@entry=524288) at ./accel/tcg/translate-all.c:1736
9 0x00005555558ce467 in tb_find (cf_mask=524288, tb_exit=1, last_tb=0x7fffd783e640 <code_gen_buffer+126084627>, cpu=0x1) at ./accel/tcg/cpu-exec.c:407
10 0x00005555558ce467 in cpu_exec (cpu=cpu@entry=0x55555686a2f0) at ./accel/tcg/cpu-exec.c:728
11 0x000055555588b0cf in tcg_cpu_exec (cpu=0x55555686a2f0) at ./cpus.c:1431
12 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=0x55555686a2f0) at ./cpus.c:1735
13 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=arg@entry=0x55555686a2f0) at ./cpus.c:1709
14 0x0000555555d2629a in qemu_thread_start (args=<optimized out>) at ./util/qemu-thread-posix.c:502
15 0x00007ffff4db8a92 in start_thread () at /usr/lib/libpthread.
This patch ensures that we don't hit the abort() in the second switch
case in disas_neon_data_insn() as we will return from the first case.
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
---
target/arm/translate.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/arm/translate.c b/target/arm/translate.c
index dd053c80d6..298c262825 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -6598,13 +6598,13 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
rn_ofs, rm_ofs, vec_size, vec_size,
(u ? uqadd_op : sqadd_op) + size);
- break;
+ return 0;
case NEON_3R_VQSUB:
tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
rn_ofs, rm_ofs, vec_size, vec_size,
(u ? uqsub_op : sqsub_op) + size);
- break;
+ return 0;
case NEON_3R_VMUL: /* VMUL */
if (u) {
--
2.21.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/1] target/arm: Fix vector operation segfault
2019-05-15 0:21 [Qemu-devel] [PATCH v2 1/1] target/arm: Fix vector operation segfault Alistair Francis
@ 2019-05-15 0:28 ` Richard Henderson
2019-05-15 6:43 ` Philippe Mathieu-Daudé
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Richard Henderson @ 2019-05-15 0:28 UTC (permalink / raw)
To: Alistair Francis, qemu-devel, qemu-arm; +Cc: peter.maydell, alistair23
On 5/14/19 5:21 PM, Alistair Francis wrote:
> diff --git a/target/arm/translate.c b/target/arm/translate.c
> index dd053c80d6..298c262825 100644
> --- a/target/arm/translate.c
> +++ b/target/arm/translate.c
> @@ -6598,13 +6598,13 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
> tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
> rn_ofs, rm_ofs, vec_size, vec_size,
> (u ? uqadd_op : sqadd_op) + size);
> - break;
> + return 0;
>
> case NEON_3R_VQSUB:
> tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
> rn_ofs, rm_ofs, vec_size, vec_size,
> (u ? uqsub_op : sqsub_op) + size);
> - break;
> + return 0;
>
> case NEON_3R_VMUL: /* VMUL */
> if (u) {
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/1] target/arm: Fix vector operation segfault
2019-05-15 0:21 [Qemu-devel] [PATCH v2 1/1] target/arm: Fix vector operation segfault Alistair Francis
2019-05-15 0:28 ` Richard Henderson
@ 2019-05-15 6:43 ` Philippe Mathieu-Daudé
2019-05-15 13:11 ` [Qemu-devel] [Qemu-arm] " Alex Bennée
2019-05-16 6:54 ` Alex Bennée
3 siblings, 0 replies; 7+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-05-15 6:43 UTC (permalink / raw)
To: Alistair Francis, qemu-devel, qemu-arm
Cc: peter.maydell, richard.henderson, alistair23
On 5/15/19 2:21 AM, Alistair Francis wrote:
> Commit 89e68b575 "target/arm: Use vector operations for saturation"
> causes this abort() when booting QEMU ARM with a Cortex-A15:
>
> 0 0x00007ffff4c2382f in raise () at /usr/lib/libc.so.6
> 1 0x00007ffff4c0e672 in abort () at /usr/lib/libc.so.6
> 2 0x00005555559c1839 in disas_neon_data_insn (insn=<optimized out>, s=<optimized out>) at ./target/arm/translate.c:6673
> 3 0x00005555559c1839 in disas_neon_data_insn (s=<optimized out>, insn=<optimized out>) at ./target/arm/translate.c:6386
> 4 0x00005555559cd8a4 in disas_arm_insn (insn=4081107068, s=0x7fffe59a9510) at ./target/arm/translate.c:9289
> 5 0x00005555559cd8a4 in arm_tr_translate_insn (dcbase=0x7fffe59a9510, cpu=<optimized out>) at ./target/arm/translate.c:13612
> 6 0x00005555558d1d39 in translator_loop (ops=0x5555561cc580 <arm_translator_ops>, db=0x7fffe59a9510, cpu=0x55555686a2f0, tb=<optimized out>, max_insns=<optimized out>) at ./accel/tcg/translator.c:96
> 7 0x00005555559d10d4 in gen_intermediate_code (cpu=cpu@entry=0x55555686a2f0, tb=tb@entry=0x7fffd7840080 <code_gen_buffer+126091347>, max_insns=max_insns@entry=512) at ./target/arm/translate.c:13901
> 8 0x00005555558d06b9 in tb_gen_code (cpu=cpu@entry=0x55555686a2f0, pc=3067096216, cs_base=0, flags=192, cflags=-16252928, cflags@entry=524288) at ./accel/tcg/translate-all.c:1736
> 9 0x00005555558ce467 in tb_find (cf_mask=524288, tb_exit=1, last_tb=0x7fffd783e640 <code_gen_buffer+126084627>, cpu=0x1) at ./accel/tcg/cpu-exec.c:407
> 10 0x00005555558ce467 in cpu_exec (cpu=cpu@entry=0x55555686a2f0) at ./accel/tcg/cpu-exec.c:728
> 11 0x000055555588b0cf in tcg_cpu_exec (cpu=0x55555686a2f0) at ./cpus.c:1431
> 12 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=0x55555686a2f0) at ./cpus.c:1735
> 13 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=arg@entry=0x55555686a2f0) at ./cpus.c:1709
> 14 0x0000555555d2629a in qemu_thread_start (args=<optimized out>) at ./util/qemu-thread-posix.c:502
> 15 0x00007ffff4db8a92 in start_thread () at /usr/lib/libpthread.
>
> This patch ensures that we don't hit the abort() in the second switch
> case in disas_neon_data_insn() as we will return from the first case.
>
> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
> ---
> target/arm/translate.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/target/arm/translate.c b/target/arm/translate.c
> index dd053c80d6..298c262825 100644
> --- a/target/arm/translate.c
> +++ b/target/arm/translate.c
> @@ -6598,13 +6598,13 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
> tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
> rn_ofs, rm_ofs, vec_size, vec_size,
> (u ? uqadd_op : sqadd_op) + size);
> - break;
> + return 0;
>
> case NEON_3R_VQSUB:
> tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
> rn_ofs, rm_ofs, vec_size, vec_size,
> (u ? uqsub_op : sqsub_op) + size);
> - break;
> + return 0;
>
> case NEON_3R_VMUL: /* VMUL */
> if (u) {
>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [Qemu-arm] [PATCH v2 1/1] target/arm: Fix vector operation segfault
2019-05-15 0:21 [Qemu-devel] [PATCH v2 1/1] target/arm: Fix vector operation segfault Alistair Francis
2019-05-15 0:28 ` Richard Henderson
2019-05-15 6:43 ` Philippe Mathieu-Daudé
@ 2019-05-15 13:11 ` Alex Bennée
2019-05-15 23:07 ` Alistair Francis
2019-05-16 6:54 ` Alex Bennée
3 siblings, 1 reply; 7+ messages in thread
From: Alex Bennée @ 2019-05-15 13:11 UTC (permalink / raw)
To: qemu-arm
Cc: peter.maydell, richard.henderson, Alistair Francis, qemu-devel,
alistair23
Alistair Francis <Alistair.Francis@wdc.com> writes:
> Commit 89e68b575 "target/arm: Use vector operations for saturation"
> causes this abort() when booting QEMU ARM with a Cortex-A15:
You may want to check your email settings because when I tried to apply
this patch it failed because the message is base64 encoded which choked git-am:
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
--
Alex Bennée
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [Qemu-arm] [PATCH v2 1/1] target/arm: Fix vector operation segfault
2019-05-15 13:11 ` [Qemu-devel] [Qemu-arm] " Alex Bennée
@ 2019-05-15 23:07 ` Alistair Francis
0 siblings, 0 replies; 7+ messages in thread
From: Alistair Francis @ 2019-05-15 23:07 UTC (permalink / raw)
To: Alex Bennée
Cc: peter.maydell, richard.henderson, qemu-arm, Alistair Francis, qemu-devel
On Wed, May 15, 2019 at 6:11 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
>
> Alistair Francis <Alistair.Francis@wdc.com> writes:
>
> > Commit 89e68b575 "target/arm: Use vector operations for saturation"
> > causes this abort() when booting QEMU ARM with a Cortex-A15:
>
> You may want to check your email settings because when I tried to apply
> this patch it failed because the message is base64 encoded which choked git-am:
>
> Content-Type: text/plain; charset="utf-8"
> Content-Transfer-Encoding: base64
Yeah, it does look strange. I'll look into it, thanks for pointing it out.
Alistair
>
> --
> Alex Bennée
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [Qemu-arm] [PATCH v2 1/1] target/arm: Fix vector operation segfault
2019-05-15 0:21 [Qemu-devel] [PATCH v2 1/1] target/arm: Fix vector operation segfault Alistair Francis
` (2 preceding siblings ...)
2019-05-15 13:11 ` [Qemu-devel] [Qemu-arm] " Alex Bennée
@ 2019-05-16 6:54 ` Alex Bennée
2019-05-16 15:56 ` Alistair Francis
3 siblings, 1 reply; 7+ messages in thread
From: Alex Bennée @ 2019-05-16 6:54 UTC (permalink / raw)
To: qemu-arm
Cc: peter.maydell, richard.henderson, Alistair Francis, qemu-devel,
alistair23
Alistair Francis <Alistair.Francis@wdc.com> writes:
> Commit 89e68b575 "target/arm: Use vector operations for saturation"
> causes this abort() when booting QEMU ARM with a Cortex-A15:
>
> 0 0x00007ffff4c2382f in raise () at /usr/lib/libc.so.6
> 1 0x00007ffff4c0e672 in abort () at /usr/lib/libc.so.6
> 2 0x00005555559c1839 in disas_neon_data_insn (insn=<optimized out>, s=<optimized out>) at ./target/arm/translate.c:6673
> 3 0x00005555559c1839 in disas_neon_data_insn (s=<optimized out>, insn=<optimized out>) at ./target/arm/translate.c:6386
> 4 0x00005555559cd8a4 in disas_arm_insn (insn=4081107068, s=0x7fffe59a9510) at ./target/arm/translate.c:9289
> 5 0x00005555559cd8a4 in arm_tr_translate_insn (dcbase=0x7fffe59a9510, cpu=<optimized out>) at ./target/arm/translate.c:13612
> 6 0x00005555558d1d39 in translator_loop (ops=0x5555561cc580 <arm_translator_ops>, db=0x7fffe59a9510, cpu=0x55555686a2f0, tb=<optimized out>, max_insns=<optimized out>) at ./accel/tcg/translator.c:96
> 7 0x00005555559d10d4 in gen_intermediate_code (cpu=cpu@entry=0x55555686a2f0, tb=tb@entry=0x7fffd7840080 <code_gen_buffer+126091347>, max_insns=max_insns@entry=512) at ./target/arm/translate.c:13901
> 8 0x00005555558d06b9 in tb_gen_code (cpu=cpu@entry=0x55555686a2f0, pc=3067096216, cs_base=0, flags=192, cflags=-16252928, cflags@entry=524288) at ./accel/tcg/translate-all.c:1736
> 9 0x00005555558ce467 in tb_find (cf_mask=524288, tb_exit=1, last_tb=0x7fffd783e640 <code_gen_buffer+126084627>, cpu=0x1) at ./accel/tcg/cpu-exec.c:407
> 10 0x00005555558ce467 in cpu_exec (cpu=cpu@entry=0x55555686a2f0) at ./accel/tcg/cpu-exec.c:728
> 11 0x000055555588b0cf in tcg_cpu_exec (cpu=0x55555686a2f0) at ./cpus.c:1431
> 12 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=0x55555686a2f0) at ./cpus.c:1735
> 13 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=arg@entry=0x55555686a2f0) at ./cpus.c:1709
> 14 0x0000555555d2629a in qemu_thread_start (args=<optimized out>) at ./util/qemu-thread-posix.c:502
> 15 0x00007ffff4db8a92 in start_thread () at /usr/lib/libpthread.
>
> This patch ensures that we don't hit the abort() in the second switch
> case in disas_neon_data_insn() as we will return from the first case.
>
> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This fixes the abort()'s I was seeing while running the qemu-iotests
under an emulated Debian Buster armhf system so:
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> target/arm/translate.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/target/arm/translate.c b/target/arm/translate.c
> index dd053c80d6..298c262825 100644
> --- a/target/arm/translate.c
> +++ b/target/arm/translate.c
> @@ -6598,13 +6598,13 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
> tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
> rn_ofs, rm_ofs, vec_size, vec_size,
> (u ? uqadd_op : sqadd_op) + size);
> - break;
> + return 0;
>
> case NEON_3R_VQSUB:
> tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
> rn_ofs, rm_ofs, vec_size, vec_size,
> (u ? uqsub_op : sqsub_op) + size);
> - break;
> + return 0;
>
> case NEON_3R_VMUL: /* VMUL */
> if (u) {
--
Alex Bennée
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [Qemu-arm] [PATCH v2 1/1] target/arm: Fix vector operation segfault
2019-05-16 6:54 ` Alex Bennée
@ 2019-05-16 15:56 ` Alistair Francis
0 siblings, 0 replies; 7+ messages in thread
From: Alistair Francis @ 2019-05-16 15:56 UTC (permalink / raw)
To: alex.bennee, qemu-arm
Cc: peter.maydell, richard.henderson, qemu-devel, alistair23
On Thu, 2019-05-16 at 07:54 +0100, Alex Bennée wrote:
> Alistair Francis <Alistair.Francis@wdc.com> writes:
>
> > Commit 89e68b575 "target/arm: Use vector operations for saturation"
> > causes this abort() when booting QEMU ARM with a Cortex-A15:
> >
> > 0 0x00007ffff4c2382f in raise () at /usr/lib/libc.so.6
> > 1 0x00007ffff4c0e672 in abort () at /usr/lib/libc.so.6
> > 2 0x00005555559c1839 in disas_neon_data_insn (insn=<optimized
> > out>, s=<optimized out>) at ./target/arm/translate.c:6673
> > 3 0x00005555559c1839 in disas_neon_data_insn (s=<optimized out>,
> > insn=<optimized out>) at ./target/arm/translate.c:6386
> > 4 0x00005555559cd8a4 in disas_arm_insn (insn=4081107068,
> > s=0x7fffe59a9510) at ./target/arm/translate.c:9289
> > 5 0x00005555559cd8a4 in arm_tr_translate_insn
> > (dcbase=0x7fffe59a9510, cpu=<optimized out>) at
> > ./target/arm/translate.c:13612
> > 6 0x00005555558d1d39 in translator_loop (ops=0x5555561cc580
> > <arm_translator_ops>, db=0x7fffe59a9510, cpu=0x55555686a2f0,
> > tb=<optimized out>, max_insns=<optimized out>) at
> > ./accel/tcg/translator.c:96
> > 7 0x00005555559d10d4 in gen_intermediate_code (cpu=cpu@entry=0x555
> > 55686a2f0, tb=tb@entry=0x7fffd7840080 <code_gen_buffer+126091347>,
> > max_insns=max_insns@entry=512) at ./target/arm/translate.c:13901
> > 8 0x00005555558d06b9 in tb_gen_code (cpu=cpu@entry=0x55555686a2f0,
> > pc=3067096216, cs_base=0, flags=192, cflags=-16252928, cflags@entry
> > =524288) at ./accel/tcg/translate-all.c:1736
> > 9 0x00005555558ce467 in tb_find (cf_mask=524288, tb_exit=1,
> > last_tb=0x7fffd783e640 <code_gen_buffer+126084627>, cpu=0x1) at
> > ./accel/tcg/cpu-exec.c:407
> > 10 0x00005555558ce467 in cpu_exec (cpu=cpu@entry=0x55555686a2f0) at
> > ./accel/tcg/cpu-exec.c:728
> > 11 0x000055555588b0cf in tcg_cpu_exec (cpu=0x55555686a2f0) at
> > ./cpus.c:1431
> > 12 0x000055555588d223 in qemu_tcg_cpu_thread_fn
> > (arg=0x55555686a2f0) at ./cpus.c:1735
> > 13 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=arg@entry=0x55
> > 555686a2f0) at ./cpus.c:1709
> > 14 0x0000555555d2629a in qemu_thread_start (args=<optimized out>)
> > at ./util/qemu-thread-posix.c:502
> > 15 0x00007ffff4db8a92 in start_thread () at /usr/lib/libpthread.
> >
> > This patch ensures that we don't hit the abort() in the second
> > switch
> > case in disas_neon_data_insn() as we will return from the first
> > case.
> >
> > Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
>
> This fixes the abort()'s I was seeing while running the qemu-iotests
> under an emulated Debian Buster armhf system so:
Great! I just send a v3 which should be plain text.
Alistair
>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> Tested-by: Alex Bennée <alex.bennee@linaro.org>
>
>
> > ---
> > target/arm/translate.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/target/arm/translate.c b/target/arm/translate.c
> > index dd053c80d6..298c262825 100644
> > --- a/target/arm/translate.c
> > +++ b/target/arm/translate.c
> > @@ -6598,13 +6598,13 @@ static int
> > disas_neon_data_insn(DisasContext *s, uint32_t insn)
> > tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
> > rn_ofs, rm_ofs, vec_size, vec_size,
> > (u ? uqadd_op : sqadd_op) + size);
> > - break;
> > + return 0;
> >
> > case NEON_3R_VQSUB:
> > tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
> > rn_ofs, rm_ofs, vec_size, vec_size,
> > (u ? uqsub_op : sqsub_op) + size);
> > - break;
> > + return 0;
> >
> > case NEON_3R_VMUL: /* VMUL */
> > if (u) {
>
> --
> Alex Bennée
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-05-16 15:58 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-15 0:21 [Qemu-devel] [PATCH v2 1/1] target/arm: Fix vector operation segfault Alistair Francis
2019-05-15 0:28 ` Richard Henderson
2019-05-15 6:43 ` Philippe Mathieu-Daudé
2019-05-15 13:11 ` [Qemu-devel] [Qemu-arm] " Alex Bennée
2019-05-15 23:07 ` Alistair Francis
2019-05-16 6:54 ` Alex Bennée
2019-05-16 15:56 ` Alistair Francis
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.