From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: edk2-devel@lists.sourceforge.net, lersek@redhat.com,
olivier.martin@arm.com, roy.franz@linaro.org,
leif.lindholm@linaro.org, stefano.stabellini@eu.citrix.com,
ian.campbell@citrix.com, anthony.perard@citrix.com,
christoffer.dall@linaro.org, xen-devel@lists.xen.org,
ilias.biris@linaro.org, julien.grall@linaro.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: [PATCH v3 00/27] Xen/ARM guest support
Date: Tue, 3 Feb 2015 19:19:45 +0000 [thread overview]
Message-ID: <1422991212-9257-1-git-send-email-ard.biesheuvel@linaro.org> (raw)
This series implements support for executing Tianocore inside a Xen
guest domain on 64-bit ARM systems (AArch64)
The first part addresses ARM platform specifics, primarily to allow a
Tianocore binary image to be runtime relocatable, and execute from DRAM.
The second part refactors the XenBus support, and adds some missing device
drivers that are needed to execute on ARM: a Xen PV console and a real time
clock driver.
Finally, patch #27 wraps it all together and implements the .dsc and .fdf
platform descriptions that can be used to build the binary image.
NOTES:
- the Xen RTC driver is a dummy implementation, as it is a Runtime driver which
is callable through Runtime Services from the OS, and this is currently not
supportable under Xen, due to the need to share the shared info page between
the OS and the firmware
- UEFI maps the entire physical memory space as cached, and relies on Xen to
use the correct stage2 mappings for regions that are backed by devices, such
as the GIC or device passthrough. The reason is that the I/O console ring and
grant table are backed by RAM that Xen maps as cached, which means that UEFI
*must* maps those as cached as well. Instead of discovering those regions
early on (i.e., before enabling the MMU) it is much easier to rely on the
architecturally mandated behavior that stage2 device mappings supersede stage1
cached mappings for the same region.
- this code is not yet tested on x86 (still only build tested for v3)
Changes since v2:
- rebased onto latest upstream containing Laszlo's ARM generic timer changes,
with Olivier's pending GICv3 patches applied on top;
- moved the relocatable PrePi to a completely separate module, and dropped
patches changing the original ARM PrePi code: all required changes have been
incorporated directly into the split off version
- dropped the ARM BDS entirely, only Intel BDS supported as of now
- added a constructor to XenConsoleSerialPortLib, otherwise there is no output
from the release build;
- implemented all review comments regarding style and correctness, including
cleaning up the DSC in the final patch
- added acks and R-b's
Changes since v1:
- move to PatchableInModule PCDs for the runtime self-relocating PrePi: this is
semantically more correct, and will make the build system help us spot if
there are remaining instances of FixedPcdGetXX() which need attention
- split some prepi and xen patches to make it easier on the reviewers
- split off the PCI support from XenBusDxe instead of the frankenstein DXE from
v1
- implemented review comments regarding moving of files, splitting of libraries
and some EDK2 optimizations suggested by Laszlo (casting, use of specific
types etc)
- added some acks and R-b's
Ard Biesheuvel (27):
ArmPkg: allow HYP timer interrupt to be omitted
ArmPkg: allow patchable PCDs for memory, FD and FV addresses
ArmPlatformPkg: allow patchable PCD for FD base address
ArmVirtualizationPkg: add GICv3 detection to VirtFdtDxe
ArmVirtualizationPkg: allow patchable PCD for device tree base address
ArmVirtualizationPkg: move early UART discovery to PlatformPeim
ArmVirtualizationPkg: use a HOB to store device tree blob
ArmVirtualizationPkg: add padding to FDT allocation
ArmVirtualizationPkg: add a relocatable version of PrePi
ArmVirtualizationPkg: implement custom MemoryInitPeiLib
ArmVirtualizationPkg: allow patchable PCD for FV and DT base addresses
ArmVirtualizationPkg: Xen/PV relocatable platformlib instance
Ovmf/Xen: move Xen interface version to <xen.h>
Ovmf/Xen: fix pointer to int cast in XenBusDxe
Ovmf/Xen: refactor XenBusDxe hypercall implementation
Ovmf/Xen: move XenBusDxe hypercall code to separate library
Ovmf/Xen: introduce XENIO_PROTOCOL
Ovmf/Xen: add separate driver for Xen PCI device
Ovmf/Xen: move XenBusDxe to abstract XENIO_PROTOCOL
Ovmf/Xen: implement XenHypercallLib for ARM
Ovmf/Xen: add ARM and AArch64 support to XenBusDxe
Ovmf/Xen: add Xen PV console SerialPortLib driver
Ovmf/Xen: implement dummy RealTimeClockLib for Xen
Ovfm/Xen: add a Vendor Hardware device path GUID for the XenBus root
ArmVirtualizationPkg: add XenIoMmioLib
ArmVirtualizationPkg/VirtFdtDxe: wire up XenBusDxe to "xen,xen" DT
node
ArmVirtualizationPkg: add platform description for Xen guests
ArmPkg/ArmPkg.dec | 25 +-
ArmPkg/Drivers/TimerDxe/TimerDxe.c | 14 +-
.../ArmVirtualizationPkg/ArmVirtualization.dsc.inc | 2 +
.../ArmVirtualizationPkg/ArmVirtualizationPkg.dec | 10 +-
.../ArmVirtualizationPkg/ArmVirtualizationQemu.dsc | 4 +-
.../ArmVirtualizationPkg/ArmVirtualizationXen.dsc | 218 +++++++++++
.../ArmVirtualizationPkg/ArmVirtualizationXen.fdf | 302 ++++++++++++++
.../ArmVirtualizationMemoryInitPeiLib.c | 91 +++++
.../ArmVirtualizationMemoryInitPeiLib.inf | 66 ++++
.../ArmVirtualizationPlatformLib.inf | 6 +-
.../Library/ArmVirtualizationPlatformLib/Virt.c | 48 +--
.../AARCH64/MemnodeParser.S | 232 +++++++++++
.../AARCH64/RelocatableVirtHelper.S | 161 ++++++++
.../ArmXenRelocatablePlatformLib.inf | 59 +++
.../ArmXenRelocatablePlatformLib/RelocatableVirt.c | 71 ++++
.../ArmXenRelocatablePlatformLib/XenVirtMem.c | 83 ++++
.../Library/PlatformPeiLib/PlatformPeiLib.c | 65 ++-
.../Library/PlatformPeiLib/PlatformPeiLib.inf | 10 +-
.../XenRealTimeClockLib/XenRealTimeClockLib.c | 196 +++++++++
.../XenRealTimeClockLib/XenRealTimeClockLib.inf | 38 ++
.../ArmVirtualizationPkg/PrePi/AArch64/ArchPrePi.c | 33 ++
.../PrePi/AArch64/ModuleEntryPoint.S | 170 ++++++++
.../PrePi/ArmVirtPrePiUniCoreRelocatable.inf | 107 +++++
.../ArmVirtualizationPkg/PrePi/LzmaDecompress.h | 103 +++++
ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.c | 203 ++++++++++
ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.h | 77 ++++
.../PrePi/Scripts/PrePi-PIE.lds | 28 ++
.../ArmVirtualizationPkg/VirtFdtDxe/VirtFdtDxe.c | 70 +++-
.../ArmVirtualizationPkg/VirtFdtDxe/VirtFdtDxe.inf | 5 +-
.../PrePi/PrePiArmPlatformGlobalVariableLib.inf | 2 +-
EmbeddedPkg/EmbeddedPkg.dec | 2 +
EmbeddedPkg/Include/Guid/FdtHob.h | 26 ++
OvmfPkg/Include/Guid/XenBusRootDevice.h | 24 ++
.../Include/IndustryStandard/Xen/arch-arm/xen.h | 436 +++++++++++++++++++++
OvmfPkg/Include/IndustryStandard/Xen/io/console.h | 51 +++
OvmfPkg/Include/IndustryStandard/Xen/xen.h | 7 +-
.../Library/XenHypercallLib.h} | 44 +--
OvmfPkg/Include/Library/XenIoMmioLib.h | 64 +++
OvmfPkg/Include/Protocol/XenIo.h | 48 +++
.../XenConsoleSerialPortLib.c | 156 ++++++++
.../XenConsoleSerialPortLib.inf | 35 ++
.../Library/XenHypercallLib/Aarch64/Hypercall.S | 26 ++
OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S | 25 ++
.../XenHypercallLib}/Ia32/hypercall.nasm | 6 +-
.../XenHypercallLib}/X64/hypercall.nasm | 6 +-
OvmfPkg/Library/XenHypercallLib/XenHypercall.c | 63 +++
.../Library/XenHypercallLib/XenHypercallIntel.c | 77 ++++
.../Library/XenHypercallLib/XenHypercallLibArm.inf | 40 ++
.../XenHypercallLib/XenHypercallLibIntel.inf | 52 +++
OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.c | 166 ++++++++
OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.inf | 39 ++
OvmfPkg/OvmfPkg.dec | 10 +
OvmfPkg/OvmfPkgIa32.dsc | 2 +
OvmfPkg/OvmfPkgIa32.fdf | 1 +
OvmfPkg/OvmfPkgIa32X64.dsc | 2 +
OvmfPkg/OvmfPkgIa32X64.fdf | 1 +
OvmfPkg/OvmfPkgX64.dsc | 2 +
OvmfPkg/OvmfPkgX64.fdf | 1 +
OvmfPkg/XenBusDxe/AtomicsGcc.c | 44 +++
OvmfPkg/XenBusDxe/ComponentName.c | 2 +-
OvmfPkg/XenBusDxe/EventChannel.c | 14 +-
OvmfPkg/XenBusDxe/GrantTable.c | 15 +-
OvmfPkg/XenBusDxe/GrantTable.h | 3 +-
OvmfPkg/XenBusDxe/XenBus.c | 6 +-
OvmfPkg/XenBusDxe/XenBusDxe.c | 106 ++---
OvmfPkg/XenBusDxe/XenBusDxe.h | 14 +-
OvmfPkg/XenBusDxe/XenBusDxe.inf | 16 +-
OvmfPkg/XenBusDxe/XenHypercall.c | 118 ------
OvmfPkg/XenBusDxe/XenStore.c | 6 +-
OvmfPkg/XenIoPciDxe/XenIoPciDxe.c | 367 +++++++++++++++++
OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf | 45 +++
OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.h | 4 -
72 files changed, 4318 insertions(+), 353 deletions(-)
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationXen.dsc
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationXen.fdf
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.c
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmVirtualizationMemoryInitPeiLib/ArmVirtualizationMemoryInitPeiLib.inf
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/AARCH64/MemnodeParser.S
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/AARCH64/RelocatableVirtHelper.S
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/ArmXenRelocatablePlatformLib.inf
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/RelocatableVirt.c
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/ArmXenRelocatablePlatformLib/XenVirtMem.c
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.c
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/Library/XenRealTimeClockLib/XenRealTimeClockLib.inf
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/AArch64/ArchPrePi.c
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/AArch64/ModuleEntryPoint.S
create mode 100755 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/LzmaDecompress.h
create mode 100755 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.c
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/PrePi.h
create mode 100644 ArmPlatformPkg/ArmVirtualizationPkg/PrePi/Scripts/PrePi-PIE.lds
create mode 100644 EmbeddedPkg/Include/Guid/FdtHob.h
create mode 100644 OvmfPkg/Include/Guid/XenBusRootDevice.h
create mode 100644 OvmfPkg/Include/IndustryStandard/Xen/arch-arm/xen.h
create mode 100644 OvmfPkg/Include/IndustryStandard/Xen/io/console.h
rename OvmfPkg/{XenBusDxe/XenHypercall.h => Include/Library/XenHypercallLib.h} (59%)
create mode 100644 OvmfPkg/Include/Library/XenIoMmioLib.h
create mode 100644 OvmfPkg/Include/Protocol/XenIo.h
create mode 100644 OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.c
create mode 100644 OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf
create mode 100644 OvmfPkg/Library/XenHypercallLib/Aarch64/Hypercall.S
create mode 100644 OvmfPkg/Library/XenHypercallLib/Arm/Hypercall.S
rename OvmfPkg/{XenBusDxe => Library/XenHypercallLib}/Ia32/hypercall.nasm (81%)
rename OvmfPkg/{XenBusDxe => Library/XenHypercallLib}/X64/hypercall.nasm (78%)
create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercall.c
create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercallIntel.c
create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercallLibArm.inf
create mode 100644 OvmfPkg/Library/XenHypercallLib/XenHypercallLibIntel.inf
create mode 100644 OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.c
create mode 100644 OvmfPkg/Library/XenIoMmioLib/XenIoMmioLib.inf
create mode 100644 OvmfPkg/XenBusDxe/AtomicsGcc.c
delete mode 100644 OvmfPkg/XenBusDxe/XenHypercall.c
create mode 100644 OvmfPkg/XenIoPciDxe/XenIoPciDxe.c
create mode 100644 OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf
--
1.8.3.2
next reply other threads:[~2015-02-03 19:19 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-03 19:19 Ard Biesheuvel [this message]
2015-02-03 19:19 ` [PATCH v3 01/27] ArmPkg: allow HYP timer interrupt to be omitted Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 02/27] ArmPkg: allow patchable PCDs for memory, FD and FV addresses Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 03/27] ArmPlatformPkg: allow patchable PCD for FD base address Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 04/27] ArmVirtualizationPkg: add GICv3 detection to VirtFdtDxe Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 05/27] ArmVirtualizationPkg: allow patchable PCD for device tree base address Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 06/27] ArmVirtualizationPkg: move early UART discovery to PlatformPeim Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 07/27] ArmVirtualizationPkg: use a HOB to store device tree blob Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 08/27] ArmVirtualizationPkg: add padding to FDT allocation Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 09/27] ArmVirtualizationPkg: add a relocatable version of PrePi Ard Biesheuvel
2015-02-11 6:27 ` Olivier Martin
2015-02-03 19:19 ` [PATCH v3 10/27] ArmVirtualizationPkg: implement custom MemoryInitPeiLib Ard Biesheuvel
2015-02-11 6:40 ` Olivier Martin
2015-02-03 19:19 ` [PATCH v3 11/27] ArmVirtualizationPkg: allow patchable PCD for FV and DT base addresses Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 12/27] ArmVirtualizationPkg: Xen/PV relocatable platformlib instance Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 13/27] Ovmf/Xen: move Xen interface version to <xen.h> Ard Biesheuvel
2015-02-03 19:19 ` [PATCH v3 14/27] Ovmf/Xen: fix pointer to int cast in XenBusDxe Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 15/27] Ovmf/Xen: refactor XenBusDxe hypercall implementation Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 16/27] Ovmf/Xen: move XenBusDxe hypercall code to separate library Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 17/27] Ovmf/Xen: introduce XENIO_PROTOCOL Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 18/27] Ovmf/Xen: add separate driver for Xen PCI device Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 19/27] Ovmf/Xen: move XenBusDxe to abstract XENIO_PROTOCOL Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 20/27] Ovmf/Xen: implement XenHypercallLib for ARM Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 21/27] Ovmf/Xen: add ARM and AArch64 support to XenBusDxe Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 22/27] Ovmf/Xen: add Xen PV console SerialPortLib driver Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 23/27] Ovmf/Xen: implement dummy RealTimeClockLib for Xen Ard Biesheuvel
2015-02-10 12:50 ` Laszlo Ersek
2015-02-11 6:45 ` Olivier Martin
2015-02-03 19:20 ` [PATCH v3 24/27] Ovfm/Xen: add a Vendor Hardware device path GUID for the XenBus root Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 25/27] ArmVirtualizationPkg: add XenIoMmioLib Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 26/27] ArmVirtualizationPkg/VirtFdtDxe: wire up XenBusDxe to "xen, xen" DT node Ard Biesheuvel
2015-02-03 19:20 ` [PATCH v3 27/27] ArmVirtualizationPkg: add platform description for Xen guests Ard Biesheuvel
[not found] ` <1422991212-9257-22-git-send-email-ard.biesheuvel@linaro.org>
2015-02-04 16:48 ` [PATCH v3 21/27] Ovmf/Xen: add ARM and AArch64 support to XenBusDxe Stefano Stabellini
2015-02-04 21:10 ` [edk2] " Jordan Justen
[not found] ` <20150204211035.11847.54872@jljusten-ivy>
2015-02-05 9:56 ` Ard Biesheuvel
[not found] ` <CAKv+Gu-viz4uHj5PxZ1rQz8yc=qtqZGxcC4hgTO2=AdvXbdUgA@mail.gmail.com>
2015-02-07 22:00 ` Jordan Justen
[not found] ` <20150207220049.4180.15991@jljusten-ivy>
2015-02-10 3:41 ` Olivier Martin
[not found] ` <1422991212-9257-8-git-send-email-ard.biesheuvel@linaro.org>
2015-02-09 5:06 ` [PATCH v3 07/27] ArmVirtualizationPkg: use a HOB to store device tree blob Olivier Martin
[not found] ` <1422991212-9257-9-git-send-email-ard.biesheuvel@linaro.org>
2015-02-09 5:08 ` [PATCH v3 08/27] ArmVirtualizationPkg: add padding to FDT allocation Olivier Martin
[not found] ` <1422991212-9257-5-git-send-email-ard.biesheuvel@linaro.org>
2015-02-10 4:05 ` [PATCH v3 04/27] ArmVirtualizationPkg: add GICv3 detection to VirtFdtDxe olimar01
[not found] ` <1422991212-9257-12-git-send-email-ard.biesheuvel@linaro.org>
2015-02-10 9:10 ` [PATCH v3 11/27] ArmVirtualizationPkg: allow patchable PCD for FV and DT base addresses Olivier Martin
[not found] ` <1422991212-9257-19-git-send-email-ard.biesheuvel@linaro.org>
2015-02-10 11:53 ` [PATCH v3 18/27] Ovmf/Xen: add separate driver for Xen PCI device Laszlo Ersek
[not found] ` <1422991212-9257-23-git-send-email-ard.biesheuvel@linaro.org>
2015-02-10 12:46 ` [PATCH v3 22/27] Ovmf/Xen: add Xen PV console SerialPortLib driver Laszlo Ersek
[not found] ` <1422991212-9257-26-git-send-email-ard.biesheuvel@linaro.org>
2015-02-10 13:52 ` [PATCH v3 25/27] ArmVirtualizationPkg: add XenIoMmioLib Laszlo Ersek
[not found] ` <1422991212-9257-13-git-send-email-ard.biesheuvel@linaro.org>
2015-02-11 3:11 ` [PATCH v3 12/27] ArmVirtualizationPkg: Xen/PV relocatable platformlib instance Olivier Martin
[not found] ` <1422991212-9257-27-git-send-email-ard.biesheuvel@linaro.org>
2015-02-11 6:46 ` [PATCH v3 26/27] ArmVirtualizationPkg/VirtFdtDxe: wire up XenBusDxe to "xen, xen" DT node Olivier Martin
[not found] ` <1422991212-9257-28-git-send-email-ard.biesheuvel@linaro.org>
2015-02-11 6:50 ` [PATCH v3 27/27] ArmVirtualizationPkg: add platform description for Xen guests Olivier Martin
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=1422991212-9257-1-git-send-email-ard.biesheuvel@linaro.org \
--to=ard.biesheuvel@linaro.org \
--cc=anthony.perard@citrix.com \
--cc=christoffer.dall@linaro.org \
--cc=edk2-devel@lists.sourceforge.net \
--cc=ian.campbell@citrix.com \
--cc=ilias.biris@linaro.org \
--cc=julien.grall@linaro.org \
--cc=leif.lindholm@linaro.org \
--cc=lersek@redhat.com \
--cc=olivier.martin@arm.com \
--cc=roy.franz@linaro.org \
--cc=stefano.stabellini@eu.citrix.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.