* [PATCH] drm/i915: Try GGTT mmapping whole object as partial
@ 2018-06-30 8:12 Chris Wilson
2018-06-30 8:44 ` ✗ Fi.CI.BAT: failure for " Patchwork
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Chris Wilson @ 2018-06-30 8:12 UTC (permalink / raw)
To: intel-gfx
If the whole object is already pinned by HW for use as scanout, we will
fail to move it to the mappable region and so must resort to using a
partial VMA covering the whole object.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104513
Fixes: aa136d9d72c2 ("drm/i915: Convert partial ggtt vma to full ggtt if it spans the entire object")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
---
drivers/gpu/drm/i915/i915_gem.c | 28 +++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 8954db6ab083..048b722cf27c 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2006,7 +2006,6 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf)
bool write = !!(vmf->flags & FAULT_FLAG_WRITE);
struct i915_vma *vma;
pgoff_t page_offset;
- unsigned int flags;
int ret;
/* We don't use vmf->pgoff since that has the fake offset */
@@ -2042,27 +2041,34 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf)
goto err_unlock;
}
- /* If the object is smaller than a couple of partial vma, it is
- * not worth only creating a single partial vma - we may as well
- * clear enough space for the full object.
- */
- flags = PIN_MAPPABLE;
- if (obj->base.size > 2 * MIN_CHUNK_PAGES << PAGE_SHIFT)
- flags |= PIN_NONBLOCK | PIN_NONFAULT;
/* Now pin it into the GTT as needed */
- vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, flags);
+ vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0,
+ PIN_MAPPABLE |
+ PIN_NONBLOCK |
+ PIN_NONFAULT);
if (IS_ERR(vma)) {
/* Use a partial view if it is bigger than available space */
struct i915_ggtt_view view =
compute_partial_view(obj, page_offset, MIN_CHUNK_PAGES);
+ unsigned int flags;
- /* Userspace is now writing through an untracked VMA, abandon
+ flags = PIN_MAPPABLE;
+ if (view.type == I915_GGTT_VIEW_NORMAL)
+ flags |= PIN_NONBLOCK; /* avoid warnings for pinned */
+
+ /*
+ * Userspace is now writing through an untracked VMA, abandon
* all hope that the hardware is able to track future writes.
*/
obj->frontbuffer_ggtt_origin = ORIGIN_CPU;
- vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, PIN_MAPPABLE);
+ vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, flags);
+ if (IS_ERR(vma) && !view.type) {
+ flags = PIN_MAPPABLE;
+ view.type = I915_GGTT_VIEW_PARTIAL;
+ vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, flags);
+ }
}
if (IS_ERR(vma)) {
ret = PTR_ERR(vma);
--
2.18.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 7+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/i915: Try GGTT mmapping whole object as partial
2018-06-30 8:12 [PATCH] drm/i915: Try GGTT mmapping whole object as partial Chris Wilson
@ 2018-06-30 8:44 ` Patchwork
2018-06-30 9:05 ` [PATCH v2] " Chris Wilson
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-06-30 8:44 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Try GGTT mmapping whole object as partial
URL : https://patchwork.freedesktop.org/series/45699/
State : failure
== Summary ==
= CI Bug Log - changes from CI_DRM_4409 -> Patchwork_9490 =
== Summary - FAILURE ==
Serious unknown changes coming with Patchwork_9490 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_9490, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/45699/revisions/1/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in Patchwork_9490:
=== IGT changes ===
==== Possible regressions ====
igt@gem_exec_reloc@basic-cpu-gtt:
fi-hsw-4770: PASS -> INCOMPLETE
fi-ivb-3770: PASS -> INCOMPLETE
fi-hsw-peppy: PASS -> INCOMPLETE
fi-snb-2600: PASS -> INCOMPLETE
igt@gem_exec_reloc@basic-gtt:
fi-ivb-3520m: PASS -> INCOMPLETE
fi-hsw-4770r: PASS -> INCOMPLETE
== Known issues ==
Here are the changes found in Patchwork_9490 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@debugfs_test@read_all_entries:
fi-snb-2520m: PASS -> INCOMPLETE (fdo#103713)
igt@gem_exec_reloc@basic-cpu-gtt:
fi-byt-j1900: PASS -> INCOMPLETE (fdo#102657)
igt@gem_exec_reloc@basic-gtt:
fi-byt-n2820: PASS -> INCOMPLETE (fdo#102657)
igt@kms_chamelium@dp-edid-read:
fi-kbl-7500u: PASS -> FAIL (fdo#103841)
igt@pm_rpm@basic-pci-d3-state:
fi-glk-j4005: PASS -> DMESG-WARN (fdo#106097)
fdo#102657 https://bugs.freedesktop.org/show_bug.cgi?id=102657
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fdo#103841 https://bugs.freedesktop.org/show_bug.cgi?id=103841
fdo#106097 https://bugs.freedesktop.org/show_bug.cgi?id=106097
== Participating hosts (45 -> 40) ==
Missing (5): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u
== Build changes ==
* Linux: CI_DRM_4409 -> Patchwork_9490
CI_DRM_4409: bf99024d9c80d81968d3621ead0c0c05343fe826 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4532: 840d12e2f050b784552197403d6575a57b6e896d @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_9490: ed5253c409372a352d756e637e3a4805be7d0753 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
ed5253c40937 drm/i915: Try GGTT mmapping whole object as partial
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9490/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2] drm/i915: Try GGTT mmapping whole object as partial
2018-06-30 8:12 [PATCH] drm/i915: Try GGTT mmapping whole object as partial Chris Wilson
2018-06-30 8:44 ` ✗ Fi.CI.BAT: failure for " Patchwork
@ 2018-06-30 9:05 ` Chris Wilson
2018-07-02 13:57 ` Matthew Auld
2018-06-30 9:30 ` ✓ Fi.CI.BAT: success for drm/i915: Try GGTT mmapping whole object as partial (rev2) Patchwork
2018-06-30 10:26 ` ✓ Fi.CI.IGT: " Patchwork
3 siblings, 1 reply; 7+ messages in thread
From: Chris Wilson @ 2018-06-30 9:05 UTC (permalink / raw)
To: intel-gfx
If the whole object is already pinned by HW for use as scanout, we will
fail to move it to the mappable region and so must resort to using a
partial VMA covering the whole object.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104513
Fixes: aa136d9d72c2 ("drm/i915: Convert partial ggtt vma to full ggtt if it spans the entire object")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
---
Relax an assertion to allow full-sized partials
---
drivers/gpu/drm/i915/i915_gem.c | 28 +++++++++++++++++-----------
drivers/gpu/drm/i915/i915_vma.c | 2 +-
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 8954db6ab083..048b722cf27c 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2006,7 +2006,6 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf)
bool write = !!(vmf->flags & FAULT_FLAG_WRITE);
struct i915_vma *vma;
pgoff_t page_offset;
- unsigned int flags;
int ret;
/* We don't use vmf->pgoff since that has the fake offset */
@@ -2042,27 +2041,34 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf)
goto err_unlock;
}
- /* If the object is smaller than a couple of partial vma, it is
- * not worth only creating a single partial vma - we may as well
- * clear enough space for the full object.
- */
- flags = PIN_MAPPABLE;
- if (obj->base.size > 2 * MIN_CHUNK_PAGES << PAGE_SHIFT)
- flags |= PIN_NONBLOCK | PIN_NONFAULT;
/* Now pin it into the GTT as needed */
- vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, flags);
+ vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0,
+ PIN_MAPPABLE |
+ PIN_NONBLOCK |
+ PIN_NONFAULT);
if (IS_ERR(vma)) {
/* Use a partial view if it is bigger than available space */
struct i915_ggtt_view view =
compute_partial_view(obj, page_offset, MIN_CHUNK_PAGES);
+ unsigned int flags;
- /* Userspace is now writing through an untracked VMA, abandon
+ flags = PIN_MAPPABLE;
+ if (view.type == I915_GGTT_VIEW_NORMAL)
+ flags |= PIN_NONBLOCK; /* avoid warnings for pinned */
+
+ /*
+ * Userspace is now writing through an untracked VMA, abandon
* all hope that the hardware is able to track future writes.
*/
obj->frontbuffer_ggtt_origin = ORIGIN_CPU;
- vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, PIN_MAPPABLE);
+ vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, flags);
+ if (IS_ERR(vma) && !view.type) {
+ flags = PIN_MAPPABLE;
+ view.type = I915_GGTT_VIEW_PARTIAL;
+ vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, flags);
+ }
}
if (IS_ERR(vma)) {
ret = PTR_ERR(vma);
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index d0e606e9b27a..de2b6d65e865 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -143,7 +143,7 @@ vma_create(struct drm_i915_gem_object *obj,
obj->base.size >> PAGE_SHIFT));
vma->size = view->partial.size;
vma->size <<= PAGE_SHIFT;
- GEM_BUG_ON(vma->size >= obj->base.size);
+ GEM_BUG_ON(vma->size > obj->base.size);
} else if (view->type == I915_GGTT_VIEW_ROTATED) {
vma->size = intel_rotation_info_size(&view->rotated);
vma->size <<= PAGE_SHIFT;
--
2.18.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 7+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915: Try GGTT mmapping whole object as partial (rev2)
2018-06-30 8:12 [PATCH] drm/i915: Try GGTT mmapping whole object as partial Chris Wilson
2018-06-30 8:44 ` ✗ Fi.CI.BAT: failure for " Patchwork
2018-06-30 9:05 ` [PATCH v2] " Chris Wilson
@ 2018-06-30 9:30 ` Patchwork
2018-06-30 10:26 ` ✓ Fi.CI.IGT: " Patchwork
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-06-30 9:30 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Try GGTT mmapping whole object as partial (rev2)
URL : https://patchwork.freedesktop.org/series/45699/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4409 -> Patchwork_9491 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/45699/revisions/2/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in Patchwork_9491:
=== IGT changes ===
==== Possible regressions ====
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
{fi-cfl-8109u}: PASS -> INCOMPLETE
== Known issues ==
Here are the changes found in Patchwork_9491 that come from known issues:
=== IGT changes ===
==== Possible fixes ====
igt@kms_frontbuffer_tracking@basic:
fi-hsw-peppy: DMESG-FAIL (fdo#106103, fdo#102614) -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
fdo#106103 https://bugs.freedesktop.org/show_bug.cgi?id=106103
== Participating hosts (45 -> 39) ==
Missing (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-glk-j4005
== Build changes ==
* Linux: CI_DRM_4409 -> Patchwork_9491
CI_DRM_4409: bf99024d9c80d81968d3621ead0c0c05343fe826 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4532: 840d12e2f050b784552197403d6575a57b6e896d @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_9491: 8a256f18eded2c91abb53075b18070852ae9fe28 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
8a256f18eded drm/i915: Try GGTT mmapping whole object as partial
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9491/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* ✓ Fi.CI.IGT: success for drm/i915: Try GGTT mmapping whole object as partial (rev2)
2018-06-30 8:12 [PATCH] drm/i915: Try GGTT mmapping whole object as partial Chris Wilson
` (2 preceding siblings ...)
2018-06-30 9:30 ` ✓ Fi.CI.BAT: success for drm/i915: Try GGTT mmapping whole object as partial (rev2) Patchwork
@ 2018-06-30 10:26 ` Patchwork
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-06-30 10:26 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Try GGTT mmapping whole object as partial (rev2)
URL : https://patchwork.freedesktop.org/series/45699/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4409_full -> Patchwork_9491_full =
== Summary - WARNING ==
Minor unknown changes coming with Patchwork_9491_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_9491_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
== Possible new issues ==
Here are the unknown changes that may have been introduced in Patchwork_9491_full:
=== IGT changes ===
==== Warnings ====
igt@gem_exec_schedule@deep-bsd1:
shard-kbl: SKIP -> PASS +1
== Known issues ==
Here are the changes found in Patchwork_9491_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@drv_selftest@live_gtt:
shard-glk: PASS -> FAIL (fdo#105347)
igt@drv_selftest@mock_scatterlist:
shard-kbl: NOTRUN -> DMESG-WARN (fdo#103667)
igt@gem_tiled_fence_blits@normal:
shard-snb: NOTRUN -> INCOMPLETE (fdo#105411)
igt@gem_workarounds@suspend-resume-context:
shard-kbl: PASS -> INCOMPLETE (fdo#103665)
igt@kms_sysfs_edid_timing:
shard-kbl: NOTRUN -> FAIL (fdo#100047)
igt@perf@polling:
shard-hsw: PASS -> FAIL (fdo#102252)
==== Possible fixes ====
igt@kms_flip_tiling@flip-x-tiled:
shard-glk: FAIL (fdo#104724) -> PASS
igt@kms_setmode@basic:
shard-apl: FAIL (fdo#99912) -> PASS
igt@perf_pmu@busy-idle-no-semaphores-vecs0:
shard-snb: INCOMPLETE (fdo#105411) -> SKIP
fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
fdo#103667 https://bugs.freedesktop.org/show_bug.cgi?id=103667
fdo#104724 https://bugs.freedesktop.org/show_bug.cgi?id=104724
fdo#105347 https://bugs.freedesktop.org/show_bug.cgi?id=105347
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
== Participating hosts (5 -> 5) ==
No changes in participating hosts
== Build changes ==
* Linux: CI_DRM_4409 -> Patchwork_9491
CI_DRM_4409: bf99024d9c80d81968d3621ead0c0c05343fe826 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4532: 840d12e2f050b784552197403d6575a57b6e896d @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_9491: 8a256f18eded2c91abb53075b18070852ae9fe28 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9491/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] drm/i915: Try GGTT mmapping whole object as partial
2018-06-30 9:05 ` [PATCH v2] " Chris Wilson
@ 2018-07-02 13:57 ` Matthew Auld
2018-07-03 9:40 ` Chris Wilson
0 siblings, 1 reply; 7+ messages in thread
From: Matthew Auld @ 2018-07-02 13:57 UTC (permalink / raw)
To: Chris Wilson; +Cc: Intel Graphics Development
On 30 June 2018 at 10:05, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> If the whole object is already pinned by HW for use as scanout, we will
> fail to move it to the mappable region and so must resort to using a
> partial VMA covering the whole object.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104513
> Fixes: aa136d9d72c2 ("drm/i915: Convert partial ggtt vma to full ggtt if it spans the entire object")
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Matthew Auld <matthew.william.auld@gmail.com>
Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] drm/i915: Try GGTT mmapping whole object as partial
2018-07-02 13:57 ` Matthew Auld
@ 2018-07-03 9:40 ` Chris Wilson
0 siblings, 0 replies; 7+ messages in thread
From: Chris Wilson @ 2018-07-03 9:40 UTC (permalink / raw)
To: Matthew Auld; +Cc: Intel Graphics Development
Quoting Matthew Auld (2018-07-02 14:57:33)
> On 30 June 2018 at 10:05, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> > If the whole object is already pinned by HW for use as scanout, we will
> > fail to move it to the mappable region and so must resort to using a
> > partial VMA covering the whole object.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104513
> > Fixes: aa136d9d72c2 ("drm/i915: Convert partial ggtt vma to full ggtt if it spans the entire object")
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> > Cc: Matthew Auld <matthew.william.auld@gmail.com>
> Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
And pushed yesterday, mainly as a test for a new dim setup.
Thanks,
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-07-03 9:40 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-30 8:12 [PATCH] drm/i915: Try GGTT mmapping whole object as partial Chris Wilson
2018-06-30 8:44 ` ✗ Fi.CI.BAT: failure for " Patchwork
2018-06-30 9:05 ` [PATCH v2] " Chris Wilson
2018-07-02 13:57 ` Matthew Auld
2018-07-03 9:40 ` Chris Wilson
2018-06-30 9:30 ` ✓ Fi.CI.BAT: success for drm/i915: Try GGTT mmapping whole object as partial (rev2) Patchwork
2018-06-30 10:26 ` ✓ Fi.CI.IGT: " Patchwork
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.