From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: David Airlie <airlied@gmail.com>
Cc: linux-fbdev@vger.kernel.org,
Sui Jingfeng <suijingfeng@loongson.cn>,
Daniel Vetter <daniel@ffwll.ch>,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
Jocelyn Falempe <jfalempe@redhat.com>,
amd-gfx@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v3 8/9] drm/ast: Register as a vga client to vgaarb by calling vga_client_register()
Date: Wed, 12 Jul 2023 00:43:09 +0800 [thread overview]
Message-ID: <20230711164310.791756-9-sui.jingfeng@linux.dev> (raw)
In-Reply-To: <20230711164310.791756-1-sui.jingfeng@linux.dev>
From: Sui Jingfeng <suijingfeng@loongson.cn>
Becasuse the VGA Display Controller in the ASpeed BMC chip is also a PCIe
device, the Software Programming guide of AST2400 say that it is Fully
IBM VGA compliant, thus, it should also particiate in the arbitration.
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
---
drivers/gpu/drm/ast/ast_drv.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index e1224ef4ad83..0e53b0cd3f09 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -28,6 +28,7 @@
#include <linux/module.h>
#include <linux/pci.h>
+#include <linux/vgaarb.h>
#include <drm/drm_aperture.h>
#include <drm/drm_atomic_helper.h>
@@ -89,6 +90,32 @@ static const struct pci_device_id ast_pciidlist[] = {
MODULE_DEVICE_TABLE(pci, ast_pciidlist);
+static bool ast_vga_is_primary_gpu(struct pci_dev *pdev)
+{
+ struct drm_device *drm = pci_get_drvdata(pdev);
+ struct ast_device *ast = to_ast_device(drm);
+
+ return drm_aperture_contain_firmware_fb(ast->vram_base, ast->vram_size);
+}
+
+static unsigned int ast_vga_set_decode(struct pci_dev *pdev, bool state)
+{
+ struct drm_device *drm = pci_get_drvdata(pdev);
+ struct ast_device *ast = to_ast_device(drm);
+
+ if (state) {
+ /* Enable standard VGA decode and Enable normal VGA decode */
+ ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
+
+ return VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM |
+ VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
+ }
+
+ ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x07);
+
+ return VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
+}
+
static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct ast_device *ast;
@@ -112,6 +139,8 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (ret)
return ret;
+ vga_client_register(pdev, ast_vga_set_decode, ast_vga_is_primary_gpu);
+
drm_fbdev_generic_setup(dev, 32);
return 0;
--
2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: David Airlie <airlied@gmail.com>
Cc: linux-fbdev@vger.kernel.org,
Sui Jingfeng <suijingfeng@loongson.cn>,
Daniel Vetter <daniel@ffwll.ch>,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
Jocelyn Falempe <jfalempe@redhat.com>,
amd-gfx@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [Intel-gfx] [PATCH v3 8/9] drm/ast: Register as a vga client to vgaarb by calling vga_client_register()
Date: Wed, 12 Jul 2023 00:43:09 +0800 [thread overview]
Message-ID: <20230711164310.791756-9-sui.jingfeng@linux.dev> (raw)
In-Reply-To: <20230711164310.791756-1-sui.jingfeng@linux.dev>
From: Sui Jingfeng <suijingfeng@loongson.cn>
Becasuse the VGA Display Controller in the ASpeed BMC chip is also a PCIe
device, the Software Programming guide of AST2400 say that it is Fully
IBM VGA compliant, thus, it should also particiate in the arbitration.
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
---
drivers/gpu/drm/ast/ast_drv.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index e1224ef4ad83..0e53b0cd3f09 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -28,6 +28,7 @@
#include <linux/module.h>
#include <linux/pci.h>
+#include <linux/vgaarb.h>
#include <drm/drm_aperture.h>
#include <drm/drm_atomic_helper.h>
@@ -89,6 +90,32 @@ static const struct pci_device_id ast_pciidlist[] = {
MODULE_DEVICE_TABLE(pci, ast_pciidlist);
+static bool ast_vga_is_primary_gpu(struct pci_dev *pdev)
+{
+ struct drm_device *drm = pci_get_drvdata(pdev);
+ struct ast_device *ast = to_ast_device(drm);
+
+ return drm_aperture_contain_firmware_fb(ast->vram_base, ast->vram_size);
+}
+
+static unsigned int ast_vga_set_decode(struct pci_dev *pdev, bool state)
+{
+ struct drm_device *drm = pci_get_drvdata(pdev);
+ struct ast_device *ast = to_ast_device(drm);
+
+ if (state) {
+ /* Enable standard VGA decode and Enable normal VGA decode */
+ ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
+
+ return VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM |
+ VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
+ }
+
+ ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x07);
+
+ return VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
+}
+
static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct ast_device *ast;
@@ -112,6 +139,8 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (ret)
return ret;
+ vga_client_register(pdev, ast_vga_set_decode, ast_vga_is_primary_gpu);
+
drm_fbdev_generic_setup(dev, 32);
return 0;
--
2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: David Airlie <airlied@gmail.com>
Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, intel-gfx@lists.freedesktop.org,
kvm@vger.kernel.org, linux-fbdev@vger.kernel.org,
Sui Jingfeng <suijingfeng@loongson.cn>,
Thomas Zimmermann <tzimmermann@suse.de>,
Jocelyn Falempe <jfalempe@redhat.com>,
Daniel Vetter <daniel@ffwll.ch>
Subject: [PATCH v3 8/9] drm/ast: Register as a vga client to vgaarb by calling vga_client_register()
Date: Wed, 12 Jul 2023 00:43:09 +0800 [thread overview]
Message-ID: <20230711164310.791756-9-sui.jingfeng@linux.dev> (raw)
In-Reply-To: <20230711164310.791756-1-sui.jingfeng@linux.dev>
From: Sui Jingfeng <suijingfeng@loongson.cn>
Becasuse the VGA Display Controller in the ASpeed BMC chip is also a PCIe
device, the Software Programming guide of AST2400 say that it is Fully
IBM VGA compliant, thus, it should also particiate in the arbitration.
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
---
drivers/gpu/drm/ast/ast_drv.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index e1224ef4ad83..0e53b0cd3f09 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -28,6 +28,7 @@
#include <linux/module.h>
#include <linux/pci.h>
+#include <linux/vgaarb.h>
#include <drm/drm_aperture.h>
#include <drm/drm_atomic_helper.h>
@@ -89,6 +90,32 @@ static const struct pci_device_id ast_pciidlist[] = {
MODULE_DEVICE_TABLE(pci, ast_pciidlist);
+static bool ast_vga_is_primary_gpu(struct pci_dev *pdev)
+{
+ struct drm_device *drm = pci_get_drvdata(pdev);
+ struct ast_device *ast = to_ast_device(drm);
+
+ return drm_aperture_contain_firmware_fb(ast->vram_base, ast->vram_size);
+}
+
+static unsigned int ast_vga_set_decode(struct pci_dev *pdev, bool state)
+{
+ struct drm_device *drm = pci_get_drvdata(pdev);
+ struct ast_device *ast = to_ast_device(drm);
+
+ if (state) {
+ /* Enable standard VGA decode and Enable normal VGA decode */
+ ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
+
+ return VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM |
+ VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
+ }
+
+ ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x07);
+
+ return VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
+}
+
static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct ast_device *ast;
@@ -112,6 +139,8 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (ret)
return ret;
+ vga_client_register(pdev, ast_vga_set_decode, ast_vga_is_primary_gpu);
+
drm_fbdev_generic_setup(dev, 32);
return 0;
--
2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: David Airlie <airlied@gmail.com>
Cc: linux-fbdev@vger.kernel.org,
Sui Jingfeng <suijingfeng@loongson.cn>,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
Jocelyn Falempe <jfalempe@redhat.com>,
amd-gfx@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v3 8/9] drm/ast: Register as a vga client to vgaarb by calling vga_client_register()
Date: Wed, 12 Jul 2023 00:43:09 +0800 [thread overview]
Message-ID: <20230711164310.791756-9-sui.jingfeng@linux.dev> (raw)
In-Reply-To: <20230711164310.791756-1-sui.jingfeng@linux.dev>
From: Sui Jingfeng <suijingfeng@loongson.cn>
Becasuse the VGA Display Controller in the ASpeed BMC chip is also a PCIe
device, the Software Programming guide of AST2400 say that it is Fully
IBM VGA compliant, thus, it should also particiate in the arbitration.
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
---
drivers/gpu/drm/ast/ast_drv.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index e1224ef4ad83..0e53b0cd3f09 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -28,6 +28,7 @@
#include <linux/module.h>
#include <linux/pci.h>
+#include <linux/vgaarb.h>
#include <drm/drm_aperture.h>
#include <drm/drm_atomic_helper.h>
@@ -89,6 +90,32 @@ static const struct pci_device_id ast_pciidlist[] = {
MODULE_DEVICE_TABLE(pci, ast_pciidlist);
+static bool ast_vga_is_primary_gpu(struct pci_dev *pdev)
+{
+ struct drm_device *drm = pci_get_drvdata(pdev);
+ struct ast_device *ast = to_ast_device(drm);
+
+ return drm_aperture_contain_firmware_fb(ast->vram_base, ast->vram_size);
+}
+
+static unsigned int ast_vga_set_decode(struct pci_dev *pdev, bool state)
+{
+ struct drm_device *drm = pci_get_drvdata(pdev);
+ struct ast_device *ast = to_ast_device(drm);
+
+ if (state) {
+ /* Enable standard VGA decode and Enable normal VGA decode */
+ ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04);
+
+ return VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM |
+ VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
+ }
+
+ ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x07);
+
+ return VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
+}
+
static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct ast_device *ast;
@@ -112,6 +139,8 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (ret)
return ret;
+ vga_client_register(pdev, ast_vga_set_decode, ast_vga_is_primary_gpu);
+
drm_fbdev_generic_setup(dev, 32);
return 0;
--
2.25.1
next prev parent reply other threads:[~2023-07-11 17:06 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-11 16:43 [PATCH v3 0/9] PCI/VGA: Improve the default VGA device selection Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 1/9] video/aperture: Add a helper to detect if an aperture contains firmware FB Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` [Intel-gfx] " Bjorn Helgaas
2023-07-19 21:18 ` suijingfeng
2023-07-19 21:18 ` suijingfeng
2023-07-19 21:18 ` suijingfeng
2023-07-19 21:18 ` [Intel-gfx] " suijingfeng
2023-07-11 16:43 ` [PATCH v3 2/9] video/aperture: Add a helper for determining if an unmoved aperture contain FB Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 3/9] PCI/VGA: Switch to aperture_contain_firmware_fb_nonreloc() Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 20:43 ` Bjorn Helgaas
2023-07-19 22:04 ` suijingfeng
2023-07-19 22:04 ` suijingfeng
2023-07-19 22:04 ` suijingfeng
2023-07-11 16:43 ` [PATCH v3 4/9] PCI/VGA: Improve the default VGA device selection Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-17 14:07 ` suijingfeng
2023-07-17 14:07 ` suijingfeng
2023-07-17 14:07 ` suijingfeng
2023-07-17 14:07 ` [Intel-gfx] " suijingfeng
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` [Intel-gfx] " Bjorn Helgaas
2023-07-19 22:32 ` suijingfeng
2023-07-19 22:32 ` suijingfeng
2023-07-19 22:32 ` suijingfeng
2023-07-19 22:32 ` [Intel-gfx] " suijingfeng
2023-07-19 22:44 ` Sui Jingfeng
2023-07-19 22:44 ` Sui Jingfeng
2023-07-19 22:44 ` Sui Jingfeng
2023-07-19 22:44 ` [Intel-gfx] " Sui Jingfeng
2023-07-19 22:51 ` suijingfeng
2023-07-19 22:51 ` suijingfeng
2023-07-19 22:51 ` suijingfeng
2023-07-19 22:51 ` [Intel-gfx] " suijingfeng
2023-07-24 11:56 ` suijingfeng
2023-07-24 11:56 ` suijingfeng
2023-07-24 11:56 ` suijingfeng
2023-07-24 11:56 ` [Intel-gfx] " suijingfeng
2023-07-24 12:16 ` suijingfeng
2023-07-24 12:16 ` suijingfeng
2023-07-24 12:16 ` suijingfeng
2023-07-24 12:16 ` [Intel-gfx] " suijingfeng
2023-07-25 21:30 ` Bjorn Helgaas
2023-07-25 21:30 ` Bjorn Helgaas
2023-07-25 21:30 ` Bjorn Helgaas
2023-07-25 21:30 ` [Intel-gfx] " Bjorn Helgaas
2023-07-24 12:28 ` suijingfeng
2023-07-24 12:28 ` suijingfeng
2023-07-24 12:28 ` suijingfeng
2023-07-24 12:28 ` [Intel-gfx] " suijingfeng
2023-07-11 16:43 ` [PATCH v3 5/9] drm/amdgpu: Implement the is_primary_gpu callback of vga_client_register() Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 6/9] drm/radeon: Add an implement for the is_primary_gpu function callback Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 7/9] drm/i915: Add an implement for the is_primary_gpu hook Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng [this message]
2023-07-11 16:43 ` [PATCH v3 8/9] drm/ast: Register as a vga client to vgaarb by calling vga_client_register() Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 16:43 ` [PATCH v3 9/9] drm/loongson: Add an implement for the is_primary_gpu function callback Sui Jingfeng
2023-07-11 16:43 ` Sui Jingfeng
2023-07-11 16:43 ` [Intel-gfx] " Sui Jingfeng
2023-07-11 18:24 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for PCI/VGA: Improve the default VGA device selection Patchwork
2023-07-19 19:32 ` [PATCH v3 0/9] " Bjorn Helgaas
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` Bjorn Helgaas
2023-07-19 19:32 ` [Intel-gfx] " Bjorn Helgaas
2023-07-20 9:17 ` Sui Jingfeng
2023-07-20 9:17 ` Sui Jingfeng
2023-07-20 9:17 ` Sui Jingfeng
2023-07-20 9:17 ` [Intel-gfx] " Sui Jingfeng
2023-07-24 12:47 ` suijingfeng
2023-07-24 12:47 ` suijingfeng
2023-07-24 12:47 ` suijingfeng
2023-07-24 12:47 ` [Intel-gfx] " suijingfeng
2023-07-25 21:32 ` Bjorn Helgaas
2023-07-25 21:32 ` Bjorn Helgaas
2023-07-25 21:32 ` Bjorn Helgaas
2023-07-25 21:32 ` [Intel-gfx] " Bjorn Helgaas
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=20230711164310.791756-9-sui.jingfeng@linux.dev \
--to=sui.jingfeng@linux.dev \
--cc=airlied@gmail.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jfalempe@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=suijingfeng@loongson.cn \
--cc=tzimmermann@suse.de \
/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.