* [igt-dev] [PATCH V2 i-g-t] Skip VBlank tests in modules without VBlank
@ 2018-08-23 17:18 Rodrigo Siqueira
2018-08-23 17:47 ` [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2) Patchwork
2018-08-23 19:22 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
0 siblings, 2 replies; 7+ messages in thread
From: Rodrigo Siqueira @ 2018-08-23 17:18 UTC (permalink / raw)
To: Petri Latvala, Arkadiusz Hiler; +Cc: igt-dev, Gustavo Padovan, intel-gfx
The kms_flip test does not support drivers without VBlank which exclude
some virtual drivers. This patch adds a function that checks if a module
has a VBlank or not; if a module has VBlank than kms_flip will execute
all the VBlank tests, otherwise, VBlank tests will be skipped.
Changes since V1:
Chris Wilson:
- Change function name from igt_there_is_vblank to kms_has_vblank
- Move vblank function check from igt_aux to igt_kms
- Utilizes memset in dummy_vbl variable
- Directly return the result of drmWaitVblank()
Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
---
lib/igt_kms.c | 10 ++++++++++
lib/igt_kms.h | 2 ++
tests/kms_flip.c | 26 ++++++++++++++++++++++++--
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index c9e00c3b..21636093 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -1684,6 +1684,16 @@ void igt_assert_plane_visible(int fd, enum pipe pipe, bool visibility)
igt_assert_eq(visible, visibility);
}
+bool kms_has_vblank(int fd)
+{
+ drmVBlank dummy_vbl;
+
+ memset(&dummy_vbl, 0, sizeof(drmVBlank));
+ dummy_vbl.request.type = DRM_VBLANK_ABSOLUTE;
+
+ return drmWaitVBlank(fd, &dummy_vbl) == 0;
+}
+
/*
* A small modeset API
*/
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 4222a341..9543debd 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -226,6 +226,8 @@ void kmstest_wait_for_pageflip(int fd);
unsigned int kmstest_get_vblank(int fd, int pipe, unsigned int flags);
void igt_assert_plane_visible(int fd, enum pipe pipe, bool visibility);
+bool kms_has_vblank(int fd);
+
/*
* A small modeset API
*/
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 393d690a..13b408a6 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -73,6 +73,7 @@
#define TEST_TS_CONT (1 << 27)
#define TEST_BO_TOOBIG (1 << 28)
+#define TEST_NO_VBLANK (1 << 29)
#define TEST_BASIC (1 << 30)
#define EVENT_FLIP (1 << 0)
@@ -125,6 +126,18 @@ struct event_state {
int seq_step;
};
+static bool vblank_dependence(int flags)
+{
+ int vblank_flags = TEST_VBLANK | TEST_VBLANK_BLOCK |
+ TEST_VBLANK_ABSOLUTE | TEST_VBLANK_EXPIRED_SEQ |
+ TEST_TS_CONT | TEST_CHECK_TS | TEST_VBLANK_RACE;
+
+ if (flags & vblank_flags)
+ return true;
+
+ return false;
+}
+
static float timeval_float(const struct timeval *tv)
{
return tv->tv_sec + tv->tv_usec / 1000000.0f;
@@ -493,11 +506,11 @@ static void check_state(const struct test_output *o, const struct event_state *e
/* check only valid if no modeset happens in between, that increments by
* (1 << 23) on each step. This bounding matches the one in
* DRM_IOCTL_WAIT_VBLANK. */
- if (!(o->flags & (TEST_DPMS | TEST_MODESET)))
+ if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK))) {
igt_assert_f(es->current_seq - (es->last_seq + o->seq_step) <= 1UL << 23,
"unexpected %s seq %u, should be >= %u\n",
es->name, es->current_seq, es->last_seq + o->seq_step);
-
+ }
/* Check that the vblank frame didn't wrap unexpectedly. */
if (o->flags & TEST_TS_CONT) {
/* Ignore seq_step here since vblank waits time out immediately
@@ -1204,6 +1217,7 @@ static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
unsigned bo_size = 0;
uint64_t tiling;
int i;
+ bool vblank = true;
switch (crtc_count) {
case 1:
@@ -1297,6 +1311,14 @@ static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
}
igt_assert(fb_is_bound(o, o->fb_ids[0]));
+ vblank = kms_has_vblank(drm_fd);
+ if (!vblank) {
+ if (vblank_dependence(o->flags))
+ igt_require_f(vblank, "There is no Vblank\n");
+ else
+ o->flags |= TEST_NO_VBLANK;
+ }
+
/* quiescent the hw a bit so ensure we don't miss a single frame */
if (o->flags & TEST_CHECK_TS)
calibrate_ts(o, crtc_idxs[0]);
--
2.18.0
--
Rodrigo Siqueira
http://siqueira.tech
Graduate Student
Department of Computer Science
University of São Paulo
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 7+ messages in thread* [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2)
2018-08-23 17:18 [igt-dev] [PATCH V2 i-g-t] Skip VBlank tests in modules without VBlank Rodrigo Siqueira
@ 2018-08-23 17:47 ` Patchwork
2018-08-27 11:33 ` Arkadiusz Hiler
2018-08-23 19:22 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
1 sibling, 1 reply; 7+ messages in thread
From: Patchwork @ 2018-08-23 17:47 UTC (permalink / raw)
To: Rodrigo Siqueira; +Cc: igt-dev
== Series Details ==
Series: Skip VBlank tests in modules without VBlank (rev2)
URL : https://patchwork.freedesktop.org/series/48468/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4702 -> IGTPW_1741 =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_1741 need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1741, 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/48468/revisions/2/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1741:
=== IGT changes ===
==== Warnings ====
igt@kms_flip@basic-flip-vs-wf_vblank:
fi-hsw-peppy: PASS -> SKIP
fi-snb-2600: PASS -> SKIP
fi-skl-6260u: PASS -> SKIP
fi-hsw-4770r: PASS -> SKIP
{fi-bdw-samus}: PASS -> SKIP
{fi-cfl-8109u}: PASS -> SKIP
fi-blb-e6850: PASS -> SKIP
fi-kbl-r: PASS -> SKIP
fi-bwr-2160: PASS -> SKIP
fi-bdw-5557u: PASS -> SKIP
fi-skl-6600u: PASS -> SKIP
fi-kbl-7560u: PASS -> SKIP
fi-hsw-4770: PASS -> SKIP
fi-byt-j1900: PASS -> SKIP
fi-skl-6700k2: PASS -> SKIP
fi-ivb-3770: PASS -> SKIP
fi-cnl-psr: PASS -> SKIP
{fi-bsw-kefka}: PASS -> SKIP
fi-skl-6700hq: PASS -> SKIP
fi-bxt-j4205: PASS -> SKIP
fi-bsw-n3050: PASS -> SKIP
fi-skl-gvtdvm: PASS -> SKIP
{fi-byt-clapper}: PASS -> SKIP
fi-gdg-551: PASS -> SKIP
fi-glk-dsi: PASS -> SKIP
fi-glk-j4005: PASS -> SKIP
fi-skl-guc: PASS -> SKIP
fi-kbl-7567u: PASS -> SKIP
fi-bdw-gvtdvm: PASS -> SKIP
fi-ivb-3520m: PASS -> SKIP
fi-kbl-7500u: PASS -> SKIP
fi-cfl-8700k: PASS -> SKIP
fi-whl-u: PASS -> SKIP
fi-pnv-d510: PASS -> SKIP
fi-snb-2520m: PASS -> SKIP
fi-cfl-s3: PASS -> SKIP
{fi-skl-iommu}: PASS -> SKIP
fi-cfl-guc: PASS -> SKIP
fi-byt-n2820: PASS -> SKIP
fi-skl-6770hq: PASS -> SKIP
fi-elk-e7500: PASS -> SKIP
fi-ilk-650: PASS -> SKIP
{igt@kms_psr@primary_page_flip}:
fi-cnl-psr: DMESG-FAIL -> DMESG-WARN
{igt@pm_rpm@module-reload}:
fi-byt-n2820: DMESG-FAIL -> DMESG-WARN
== Known issues ==
Here are the changes found in IGTPW_1741 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@drv_selftest@live_coherency:
fi-gdg-551: PASS -> DMESG-FAIL (fdo#107164)
igt@kms_frontbuffer_tracking@basic:
fi-hsw-peppy: PASS -> DMESG-FAIL (fdo#102614)
{fi-byt-clapper}: PASS -> FAIL (fdo#103167)
==== Possible fixes ====
{igt@kms_psr@primary_mmap_gtt}:
fi-cnl-psr: DMESG-WARN -> PASS
{igt@pm_rpm@module-reload}:
fi-cnl-psr: WARN (fdo#107602) -> 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#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#107164 https://bugs.freedesktop.org/show_bug.cgi?id=107164
fdo#107602 https://bugs.freedesktop.org/show_bug.cgi?id=107602
== Participating hosts (53 -> 47) ==
Missing (6): fi-ilk-m540 fi-bxt-dsi fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600
== Build changes ==
* IGT: IGT_4608 -> IGTPW_1741
CI_DRM_4702: 0349bfb08204a6b44f16551c2be3b58563ff73d2 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1741: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1741/
IGT_4608: 94ebd21177feedf03e8f6dd1e73dca1a6ec7a0ac @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1741/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2)
2018-08-23 17:47 ` [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2) Patchwork
@ 2018-08-27 11:33 ` Arkadiusz Hiler
2019-01-13 20:31 ` Rodrigo Siqueira
0 siblings, 1 reply; 7+ messages in thread
From: Arkadiusz Hiler @ 2018-08-27 11:33 UTC (permalink / raw)
To: igt-dev; +Cc: Rodrigo Siqueira
On Thu, Aug 23, 2018 at 05:47:41PM +0000, Patchwork wrote:
> == Series Details ==
>
> Series: Skip VBlank tests in modules without VBlank (rev2)
> URL : https://patchwork.freedesktop.org/series/48468/
> State : success
>
> == Summary ==
>
> = CI Bug Log - changes from CI_DRM_4702 -> IGTPW_1741 =
>
> == Summary - WARNING ==
>
> Minor unknown changes coming with IGTPW_1741 need to be verified
> manually.
>
> If you think the reported changes have nothing to do with the changes
> introduced in IGTPW_1741, 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/48468/revisions/2/mbox/
>
> == Possible new issues ==
>
> Here are the unknown changes that may have been introduced in IGTPW_1741:
>
> === IGT changes ===
>
> ==== Warnings ====
>
> igt@kms_flip@basic-flip-vs-wf_vblank:
> fi-hsw-peppy: PASS -> SKIP
> fi-snb-2600: PASS -> SKIP
> fi-skl-6260u: PASS -> SKIP
> fi-hsw-4770r: PASS -> SKIP
> {fi-bdw-samus}: PASS -> SKIP
> {fi-cfl-8109u}: PASS -> SKIP
> fi-blb-e6850: PASS -> SKIP
> fi-kbl-r: PASS -> SKIP
> fi-bwr-2160: PASS -> SKIP
> fi-bdw-5557u: PASS -> SKIP
> fi-skl-6600u: PASS -> SKIP
> fi-kbl-7560u: PASS -> SKIP
> fi-hsw-4770: PASS -> SKIP
> fi-byt-j1900: PASS -> SKIP
> fi-skl-6700k2: PASS -> SKIP
> fi-ivb-3770: PASS -> SKIP
> fi-cnl-psr: PASS -> SKIP
> {fi-bsw-kefka}: PASS -> SKIP
> fi-skl-6700hq: PASS -> SKIP
> fi-bxt-j4205: PASS -> SKIP
> fi-bsw-n3050: PASS -> SKIP
> fi-skl-gvtdvm: PASS -> SKIP
> {fi-byt-clapper}: PASS -> SKIP
> fi-gdg-551: PASS -> SKIP
> fi-glk-dsi: PASS -> SKIP
> fi-glk-j4005: PASS -> SKIP
> fi-skl-guc: PASS -> SKIP
> fi-kbl-7567u: PASS -> SKIP
> fi-bdw-gvtdvm: PASS -> SKIP
> fi-ivb-3520m: PASS -> SKIP
> fi-kbl-7500u: PASS -> SKIP
> fi-cfl-8700k: PASS -> SKIP
> fi-whl-u: PASS -> SKIP
> fi-pnv-d510: PASS -> SKIP
> fi-snb-2520m: PASS -> SKIP
> fi-cfl-s3: PASS -> SKIP
> {fi-skl-iommu}: PASS -> SKIP
> fi-cfl-guc: PASS -> SKIP
> fi-byt-n2820: PASS -> SKIP
> fi-skl-6770hq: PASS -> SKIP
> fi-elk-e7500: PASS -> SKIP
> fi-ilk-650: PASS -> SKIP
Hey,
The patch makes overall sense and thanks for sending it.
The test result changes seen above suggest that something is off with
the logic in the patch or flags for the tests.
There are more of those in the IGT run (NOTE: if you see +43, that means
that 43 changes like that were observerd).
They were passing before now they are skipping. Please investigate that.
--
Cheers,
Arek
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2)
2018-08-27 11:33 ` Arkadiusz Hiler
@ 2019-01-13 20:31 ` Rodrigo Siqueira
2019-01-14 10:19 ` Daniel Vetter
0 siblings, 1 reply; 7+ messages in thread
From: Rodrigo Siqueira @ 2019-01-13 20:31 UTC (permalink / raw)
To: Arkadiusz Hiler; +Cc: igt-dev
Hi Arkadiusz,
On 08/27, Arkadiusz Hiler wrote:
> On Thu, Aug 23, 2018 at 05:47:41PM +0000, Patchwork wrote:
> > == Series Details ==
> >
> > Series: Skip VBlank tests in modules without VBlank (rev2)
> > URL : https://patchwork.freedesktop.org/series/48468/
> > State : success
> >
> > == Summary ==
> >
> > = CI Bug Log - changes from CI_DRM_4702 -> IGTPW_1741 =
> >
> > == Summary - WARNING ==
> >
> > Minor unknown changes coming with IGTPW_1741 need to be verified
> > manually.
> >
> > If you think the reported changes have nothing to do with the changes
> > introduced in IGTPW_1741, 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/48468/revisions/2/mbox/
> >
> > == Possible new issues ==
> >
> > Here are the unknown changes that may have been introduced in IGTPW_1741:
> >
> > === IGT changes ===
> >
> > ==== Warnings ====
> >
> > igt@kms_flip@basic-flip-vs-wf_vblank:
> > fi-hsw-peppy: PASS -> SKIP
> > fi-snb-2600: PASS -> SKIP
> > fi-skl-6260u: PASS -> SKIP
> > fi-hsw-4770r: PASS -> SKIP
> > {fi-bdw-samus}: PASS -> SKIP
> > {fi-cfl-8109u}: PASS -> SKIP
> > fi-blb-e6850: PASS -> SKIP
> > fi-kbl-r: PASS -> SKIP
> > fi-bwr-2160: PASS -> SKIP
> > fi-bdw-5557u: PASS -> SKIP
> > fi-skl-6600u: PASS -> SKIP
> > fi-kbl-7560u: PASS -> SKIP
> > fi-hsw-4770: PASS -> SKIP
> > fi-byt-j1900: PASS -> SKIP
> > fi-skl-6700k2: PASS -> SKIP
> > fi-ivb-3770: PASS -> SKIP
> > fi-cnl-psr: PASS -> SKIP
> > {fi-bsw-kefka}: PASS -> SKIP
> > fi-skl-6700hq: PASS -> SKIP
> > fi-bxt-j4205: PASS -> SKIP
> > fi-bsw-n3050: PASS -> SKIP
> > fi-skl-gvtdvm: PASS -> SKIP
> > {fi-byt-clapper}: PASS -> SKIP
> > fi-gdg-551: PASS -> SKIP
> > fi-glk-dsi: PASS -> SKIP
> > fi-glk-j4005: PASS -> SKIP
> > fi-skl-guc: PASS -> SKIP
> > fi-kbl-7567u: PASS -> SKIP
> > fi-bdw-gvtdvm: PASS -> SKIP
> > fi-ivb-3520m: PASS -> SKIP
> > fi-kbl-7500u: PASS -> SKIP
> > fi-cfl-8700k: PASS -> SKIP
> > fi-whl-u: PASS -> SKIP
> > fi-pnv-d510: PASS -> SKIP
> > fi-snb-2520m: PASS -> SKIP
> > fi-cfl-s3: PASS -> SKIP
> > {fi-skl-iommu}: PASS -> SKIP
> > fi-cfl-guc: PASS -> SKIP
> > fi-byt-n2820: PASS -> SKIP
> > fi-skl-6770hq: PASS -> SKIP
> > fi-elk-e7500: PASS -> SKIP
> > fi-ilk-650: PASS -> SKIP
>
>
> Hey,
>
> The patch makes overall sense and thanks for sending it.
>
> The test result changes seen above suggest that something is off with
> the logic in the patch or flags for the tests.
>
> There are more of those in the IGT run (NOTE: if you see +43, that means
> that 43 changes like that were observerd).
>
> They were passing before now they are skipping. Please investigate that.
First of all, sorry for the long time to take a look at this.
I tried to understand the skipping problem by investigating the test
“basic-flip-vs-wf_vblank()” in “kms_flip.c”, and I replicated the issue
in my local machine running i915 driver. Without my patch, the
"flip-vs-wf_vblank" worked like a charm; however, after applied my patch
I got the following log:
IGT-Version: 1.23-g8d81c2c2 (x86_64) (Linux: 4.20.0-arch1-1-ARCH x86_64)
Using monotonic timestamps
Starting subtest: basic-flip-vs-wf_vblank
Beginning basic-flip-vs-wf_vblank on pipe A, connector eDP-1
1920x1080 60 1920 2028 2076 2100 1080 1090 1100 1126 0xa 0x48 142000
Expected frametime: 16652us; measured 16652.4us +- 5.726us accuracy 0.10%
basic-flip-vs-wf_vblank on pipe A, connector eDP-1: PASSED
Beginning basic-flip-vs-wf_vblank on pipe B, connector eDP-1
1920x1080 60 1920 2028 2076 2100 1080 1090 1100 1126 0xa 0x48 142000
Test requirement not met in function run_test_on_crtc_set, file ../tests/kms_flip.c:1317:
Test requirement: vblank
There is no Vblank
Last errno: 22, Invalid argument
Subtest basic-flip-vs-wf_vblank: SKIP (4.441s)
The test was skipped because we get EINVAL (-22) which means many things
in this case (I'll detail this ahead). To better understand the problem,
I highlighted the function that I used in the patch for checking if a
driver has or not vblank support:
+bool kms_has_vblank(int fd)
+{
+ drmVBlank dummy_vbl;
+
+ memset(&dummy_vbl, 0, sizeof(drmVBlank));
+ dummy_vbl.request.type = DRM_VBLANK_ABSOLUTE;
+
+ return drmWaitVBlank(fd, &dummy_vbl) == 0;
+}
As you can see in the return line, we just check if “drmWaitVBlank()”
returns 0 and this is the problem. If you take a look at
“drivers/gpu/drm/drm_vblank.c” (kernel), the function
“drm_wait_vblank_ioctl()”, you'll notice that the only error returned to
the user space is “EINVAL”; which includes the check if a driver support
vblank or not (“dev->irq_enabled”).
IMHO the correct solution is changing the “drm_wait_vblank_ioctl()” to
return “EOPNOTSUPP” in the case that a driver does not support vblank. I
I already sent a patch to change it, and you can see the discussion here:
https://lkml.org/lkml/2018/10/15/609
So... for checking my point, I applied the above patch and made a change
in “kms_has_vblank” as follows:
+bool kms_has_vblank(int fd)
+{
+ drmVBlank dummy_vbl;
+
+ memset(&dummy_vbl, 0, sizeof(drmVBlank));
+ dummy_vbl.request.type = DRM_VBLANK_ABSOLUTE;
+
+ drmWaitVBlank(fd, &dummy_vbl);
+ return (errno != EOPNOTSUPP);
+}
After that, the “basic-flip-vs-wf_vblank()” worked as expected. I tested
in i915, Bosch (no vblank), and VKMS. Everything looks right now.
So... make sense? Do you see another alternative to solve this problem?
Additionally, it is weird for me that “drm_wait_vblank_ioctl()” returns
EINVAL in some case related to “basic-flip-vs-wf_vblank()”.
Best Regards
> --
> Cheers,
> Arek
>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2)
2019-01-13 20:31 ` Rodrigo Siqueira
@ 2019-01-14 10:19 ` Daniel Vetter
2019-01-14 10:38 ` Rodrigo Siqueira
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Vetter @ 2019-01-14 10:19 UTC (permalink / raw)
To: Rodrigo Siqueira; +Cc: igt-dev
On Sun, Jan 13, 2019 at 06:31:07PM -0200, Rodrigo Siqueira wrote:
> Hi Arkadiusz,
>
> On 08/27, Arkadiusz Hiler wrote:
> > On Thu, Aug 23, 2018 at 05:47:41PM +0000, Patchwork wrote:
> > > == Series Details ==
> > >
> > > Series: Skip VBlank tests in modules without VBlank (rev2)
> > > URL : https://patchwork.freedesktop.org/series/48468/
> > > State : success
> > >
> > > == Summary ==
> > >
> > > = CI Bug Log - changes from CI_DRM_4702 -> IGTPW_1741 =
> > >
> > > == Summary - WARNING ==
> > >
> > > Minor unknown changes coming with IGTPW_1741 need to be verified
> > > manually.
> > >
> > > If you think the reported changes have nothing to do with the changes
> > > introduced in IGTPW_1741, 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/48468/revisions/2/mbox/
> > >
> > > == Possible new issues ==
> > >
> > > Here are the unknown changes that may have been introduced in IGTPW_1741:
> > >
> > > === IGT changes ===
> > >
> > > ==== Warnings ====
> > >
> > > igt@kms_flip@basic-flip-vs-wf_vblank:
> > > fi-hsw-peppy: PASS -> SKIP
> > > fi-snb-2600: PASS -> SKIP
> > > fi-skl-6260u: PASS -> SKIP
> > > fi-hsw-4770r: PASS -> SKIP
> > > {fi-bdw-samus}: PASS -> SKIP
> > > {fi-cfl-8109u}: PASS -> SKIP
> > > fi-blb-e6850: PASS -> SKIP
> > > fi-kbl-r: PASS -> SKIP
> > > fi-bwr-2160: PASS -> SKIP
> > > fi-bdw-5557u: PASS -> SKIP
> > > fi-skl-6600u: PASS -> SKIP
> > > fi-kbl-7560u: PASS -> SKIP
> > > fi-hsw-4770: PASS -> SKIP
> > > fi-byt-j1900: PASS -> SKIP
> > > fi-skl-6700k2: PASS -> SKIP
> > > fi-ivb-3770: PASS -> SKIP
> > > fi-cnl-psr: PASS -> SKIP
> > > {fi-bsw-kefka}: PASS -> SKIP
> > > fi-skl-6700hq: PASS -> SKIP
> > > fi-bxt-j4205: PASS -> SKIP
> > > fi-bsw-n3050: PASS -> SKIP
> > > fi-skl-gvtdvm: PASS -> SKIP
> > > {fi-byt-clapper}: PASS -> SKIP
> > > fi-gdg-551: PASS -> SKIP
> > > fi-glk-dsi: PASS -> SKIP
> > > fi-glk-j4005: PASS -> SKIP
> > > fi-skl-guc: PASS -> SKIP
> > > fi-kbl-7567u: PASS -> SKIP
> > > fi-bdw-gvtdvm: PASS -> SKIP
> > > fi-ivb-3520m: PASS -> SKIP
> > > fi-kbl-7500u: PASS -> SKIP
> > > fi-cfl-8700k: PASS -> SKIP
> > > fi-whl-u: PASS -> SKIP
> > > fi-pnv-d510: PASS -> SKIP
> > > fi-snb-2520m: PASS -> SKIP
> > > fi-cfl-s3: PASS -> SKIP
> > > {fi-skl-iommu}: PASS -> SKIP
> > > fi-cfl-guc: PASS -> SKIP
> > > fi-byt-n2820: PASS -> SKIP
> > > fi-skl-6770hq: PASS -> SKIP
> > > fi-elk-e7500: PASS -> SKIP
> > > fi-ilk-650: PASS -> SKIP
> >
> >
> > Hey,
> >
> > The patch makes overall sense and thanks for sending it.
> >
> > The test result changes seen above suggest that something is off with
> > the logic in the patch or flags for the tests.
> >
> > There are more of those in the IGT run (NOTE: if you see +43, that means
> > that 43 changes like that were observerd).
> >
> > They were passing before now they are skipping. Please investigate that.
>
> First of all, sorry for the long time to take a look at this.
>
> I tried to understand the skipping problem by investigating the test
> “basic-flip-vs-wf_vblank()” in “kms_flip.c”, and I replicated the issue
> in my local machine running i915 driver. Without my patch, the
> "flip-vs-wf_vblank" worked like a charm; however, after applied my patch
> I got the following log:
>
> IGT-Version: 1.23-g8d81c2c2 (x86_64) (Linux: 4.20.0-arch1-1-ARCH x86_64)
> Using monotonic timestamps
> Starting subtest: basic-flip-vs-wf_vblank
> Beginning basic-flip-vs-wf_vblank on pipe A, connector eDP-1
> 1920x1080 60 1920 2028 2076 2100 1080 1090 1100 1126 0xa 0x48 142000
> Expected frametime: 16652us; measured 16652.4us +- 5.726us accuracy 0.10%
>
> basic-flip-vs-wf_vblank on pipe A, connector eDP-1: PASSED
>
> Beginning basic-flip-vs-wf_vblank on pipe B, connector eDP-1
> 1920x1080 60 1920 2028 2076 2100 1080 1090 1100 1126 0xa 0x48 142000
> Test requirement not met in function run_test_on_crtc_set, file ../tests/kms_flip.c:1317:
> Test requirement: vblank
> There is no Vblank
> Last errno: 22, Invalid argument
> Subtest basic-flip-vs-wf_vblank: SKIP (4.441s)
>
> The test was skipped because we get EINVAL (-22) which means many things
> in this case (I'll detail this ahead). To better understand the problem,
> I highlighted the function that I used in the patch for checking if a
> driver has or not vblank support:
>
> +bool kms_has_vblank(int fd)
> +{
> + drmVBlank dummy_vbl;
> +
> + memset(&dummy_vbl, 0, sizeof(drmVBlank));
> + dummy_vbl.request.type = DRM_VBLANK_ABSOLUTE;
> +
> + return drmWaitVBlank(fd, &dummy_vbl) == 0;
> +}
>
> As you can see in the return line, we just check if “drmWaitVBlank()”
> returns 0 and this is the problem. If you take a look at
> “drivers/gpu/drm/drm_vblank.c” (kernel), the function
> “drm_wait_vblank_ioctl()”, you'll notice that the only error returned to
> the user space is “EINVAL”; which includes the check if a driver support
> vblank or not (“dev->irq_enabled”).
>
> IMHO the correct solution is changing the “drm_wait_vblank_ioctl()” to
> return “EOPNOTSUPP” in the case that a driver does not support vblank. I
> I already sent a patch to change it, and you can see the discussion here:
>
> https://lkml.org/lkml/2018/10/15/609
>
> So... for checking my point, I applied the above patch and made a change
> in “kms_has_vblank” as follows:
>
> +bool kms_has_vblank(int fd)
> +{
> + drmVBlank dummy_vbl;
> +
> + memset(&dummy_vbl, 0, sizeof(drmVBlank));
> + dummy_vbl.request.type = DRM_VBLANK_ABSOLUTE;
> +
> + drmWaitVBlank(fd, &dummy_vbl);
> + return (errno != EOPNOTSUPP);
> +}
>
> After that, the “basic-flip-vs-wf_vblank()” worked as expected. I tested
> in i915, Bosch (no vblank), and VKMS. Everything looks right now.
>
> So... make sense? Do you see another alternative to solve this problem?
Yup. Even with your patch we can still get -EINVAL (when the crtc is off),
so merging the EOPNOTSUPP patches first, then this here, and only skipping
if EOPNOTSUPP is the only way to go I think.
The above is probably good in a comment in kms_has_vblank().
Btw I thought the EOPNOTSUPP was merged already, why is it stuck? Or
should retesting this fix things?
-Daniel
>
> Additionally, it is weird for me that “drm_wait_vblank_ioctl()” returns
> EINVAL in some case related to “basic-flip-vs-wf_vblank()”.
>
> Best Regards
>
> > --
> > Cheers,
> > Arek
> >
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2)
2019-01-14 10:19 ` Daniel Vetter
@ 2019-01-14 10:38 ` Rodrigo Siqueira
0 siblings, 0 replies; 7+ messages in thread
From: Rodrigo Siqueira @ 2019-01-14 10:38 UTC (permalink / raw)
To: Daniel Vetter; +Cc: igt-dev
On 01/14, Daniel Vetter wrote:
> On Sun, Jan 13, 2019 at 06:31:07PM -0200, Rodrigo Siqueira wrote:
> > Hi Arkadiusz,
> >
> > On 08/27, Arkadiusz Hiler wrote:
> > > On Thu, Aug 23, 2018 at 05:47:41PM +0000, Patchwork wrote:
> > > > == Series Details ==
> > > >
> > > > Series: Skip VBlank tests in modules without VBlank (rev2)
> > > > URL : https://patchwork.freedesktop.org/series/48468/
> > > > State : success
> > > >
> > > > == Summary ==
> > > >
> > > > = CI Bug Log - changes from CI_DRM_4702 -> IGTPW_1741 =
> > > >
> > > > == Summary - WARNING ==
> > > >
> > > > Minor unknown changes coming with IGTPW_1741 need to be verified
> > > > manually.
> > > >
> > > > If you think the reported changes have nothing to do with the changes
> > > > introduced in IGTPW_1741, 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/48468/revisions/2/mbox/
> > > >
> > > > == Possible new issues ==
> > > >
> > > > Here are the unknown changes that may have been introduced in IGTPW_1741:
> > > >
> > > > === IGT changes ===
> > > >
> > > > ==== Warnings ====
> > > >
> > > > igt@kms_flip@basic-flip-vs-wf_vblank:
> > > > fi-hsw-peppy: PASS -> SKIP
> > > > fi-snb-2600: PASS -> SKIP
> > > > fi-skl-6260u: PASS -> SKIP
> > > > fi-hsw-4770r: PASS -> SKIP
> > > > {fi-bdw-samus}: PASS -> SKIP
> > > > {fi-cfl-8109u}: PASS -> SKIP
> > > > fi-blb-e6850: PASS -> SKIP
> > > > fi-kbl-r: PASS -> SKIP
> > > > fi-bwr-2160: PASS -> SKIP
> > > > fi-bdw-5557u: PASS -> SKIP
> > > > fi-skl-6600u: PASS -> SKIP
> > > > fi-kbl-7560u: PASS -> SKIP
> > > > fi-hsw-4770: PASS -> SKIP
> > > > fi-byt-j1900: PASS -> SKIP
> > > > fi-skl-6700k2: PASS -> SKIP
> > > > fi-ivb-3770: PASS -> SKIP
> > > > fi-cnl-psr: PASS -> SKIP
> > > > {fi-bsw-kefka}: PASS -> SKIP
> > > > fi-skl-6700hq: PASS -> SKIP
> > > > fi-bxt-j4205: PASS -> SKIP
> > > > fi-bsw-n3050: PASS -> SKIP
> > > > fi-skl-gvtdvm: PASS -> SKIP
> > > > {fi-byt-clapper}: PASS -> SKIP
> > > > fi-gdg-551: PASS -> SKIP
> > > > fi-glk-dsi: PASS -> SKIP
> > > > fi-glk-j4005: PASS -> SKIP
> > > > fi-skl-guc: PASS -> SKIP
> > > > fi-kbl-7567u: PASS -> SKIP
> > > > fi-bdw-gvtdvm: PASS -> SKIP
> > > > fi-ivb-3520m: PASS -> SKIP
> > > > fi-kbl-7500u: PASS -> SKIP
> > > > fi-cfl-8700k: PASS -> SKIP
> > > > fi-whl-u: PASS -> SKIP
> > > > fi-pnv-d510: PASS -> SKIP
> > > > fi-snb-2520m: PASS -> SKIP
> > > > fi-cfl-s3: PASS -> SKIP
> > > > {fi-skl-iommu}: PASS -> SKIP
> > > > fi-cfl-guc: PASS -> SKIP
> > > > fi-byt-n2820: PASS -> SKIP
> > > > fi-skl-6770hq: PASS -> SKIP
> > > > fi-elk-e7500: PASS -> SKIP
> > > > fi-ilk-650: PASS -> SKIP
> > >
> > >
> > > Hey,
> > >
> > > The patch makes overall sense and thanks for sending it.
> > >
> > > The test result changes seen above suggest that something is off with
> > > the logic in the patch or flags for the tests.
> > >
> > > There are more of those in the IGT run (NOTE: if you see +43, that means
> > > that 43 changes like that were observerd).
> > >
> > > They were passing before now they are skipping. Please investigate that.
> >
> > First of all, sorry for the long time to take a look at this.
> >
> > I tried to understand the skipping problem by investigating the test
> > “basic-flip-vs-wf_vblank()” in “kms_flip.c”, and I replicated the issue
> > in my local machine running i915 driver. Without my patch, the
> > "flip-vs-wf_vblank" worked like a charm; however, after applied my patch
> > I got the following log:
> >
> > IGT-Version: 1.23-g8d81c2c2 (x86_64) (Linux: 4.20.0-arch1-1-ARCH x86_64)
> > Using monotonic timestamps
> > Starting subtest: basic-flip-vs-wf_vblank
> > Beginning basic-flip-vs-wf_vblank on pipe A, connector eDP-1
> > 1920x1080 60 1920 2028 2076 2100 1080 1090 1100 1126 0xa 0x48 142000
> > Expected frametime: 16652us; measured 16652.4us +- 5.726us accuracy 0.10%
> >
> > basic-flip-vs-wf_vblank on pipe A, connector eDP-1: PASSED
> >
> > Beginning basic-flip-vs-wf_vblank on pipe B, connector eDP-1
> > 1920x1080 60 1920 2028 2076 2100 1080 1090 1100 1126 0xa 0x48 142000
> > Test requirement not met in function run_test_on_crtc_set, file ../tests/kms_flip.c:1317:
> > Test requirement: vblank
> > There is no Vblank
> > Last errno: 22, Invalid argument
> > Subtest basic-flip-vs-wf_vblank: SKIP (4.441s)
> >
> > The test was skipped because we get EINVAL (-22) which means many things
> > in this case (I'll detail this ahead). To better understand the problem,
> > I highlighted the function that I used in the patch for checking if a
> > driver has or not vblank support:
> >
> > +bool kms_has_vblank(int fd)
> > +{
> > + drmVBlank dummy_vbl;
> > +
> > + memset(&dummy_vbl, 0, sizeof(drmVBlank));
> > + dummy_vbl.request.type = DRM_VBLANK_ABSOLUTE;
> > +
> > + return drmWaitVBlank(fd, &dummy_vbl) == 0;
> > +}
> >
> > As you can see in the return line, we just check if “drmWaitVBlank()”
> > returns 0 and this is the problem. If you take a look at
> > “drivers/gpu/drm/drm_vblank.c” (kernel), the function
> > “drm_wait_vblank_ioctl()”, you'll notice that the only error returned to
> > the user space is “EINVAL”; which includes the check if a driver support
> > vblank or not (“dev->irq_enabled”).
> >
> > IMHO the correct solution is changing the “drm_wait_vblank_ioctl()” to
> > return “EOPNOTSUPP” in the case that a driver does not support vblank. I
> > I already sent a patch to change it, and you can see the discussion here:
> >
> > https://lkml.org/lkml/2018/10/15/609
> >
> > So... for checking my point, I applied the above patch and made a change
> > in “kms_has_vblank” as follows:
> >
> > +bool kms_has_vblank(int fd)
> > +{
> > + drmVBlank dummy_vbl;
> > +
> > + memset(&dummy_vbl, 0, sizeof(drmVBlank));
> > + dummy_vbl.request.type = DRM_VBLANK_ABSOLUTE;
> > +
> > + drmWaitVBlank(fd, &dummy_vbl);
> > + return (errno != EOPNOTSUPP);
> > +}
> >
> > After that, the “basic-flip-vs-wf_vblank()” worked as expected. I tested
> > in i915, Bosch (no vblank), and VKMS. Everything looks right now.
> >
> > So... make sense? Do you see another alternative to solve this problem?
>
> Yup. Even with your patch we can still get -EINVAL (when the crtc is off),
> so merging the EOPNOTSUPP patches first, then this here, and only skipping
> if EOPNOTSUPP is the only way to go I think.
>
> The above is probably good in a comment in kms_has_vblank().
Hi, thanks for the review.
I will prepare a V3 with this fix.
> Btw I thought the EOPNOTSUPP was merged already, why is it stuck? Or
> should retesting this fix things?
About the patch, we have some discussion about it because two tests failed
in the CI. Probably I have to send another patch for making the tests
correctly handling EOPNOTSUPP.
Thanks.
> -Daniel
> >
> > Additionally, it is weird for me that “drm_wait_vblank_ioctl()” returns
> > EINVAL in some case related to “basic-flip-vs-wf_vblank()”.
> >
> > Best Regards
> >
> > > --
> > > Cheers,
> > > Arek
> > >
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for Skip VBlank tests in modules without VBlank (rev2)
2018-08-23 17:18 [igt-dev] [PATCH V2 i-g-t] Skip VBlank tests in modules without VBlank Rodrigo Siqueira
2018-08-23 17:47 ` [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2) Patchwork
@ 2018-08-23 19:22 ` Patchwork
1 sibling, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-08-23 19:22 UTC (permalink / raw)
To: Rodrigo Siqueira; +Cc: igt-dev
== Series Details ==
Series: Skip VBlank tests in modules without VBlank (rev2)
URL : https://patchwork.freedesktop.org/series/48468/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4608_full -> IGTPW_1741_full =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_1741_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1741_full, 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/48468/revisions/2/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1741_full:
=== IGT changes ===
==== Warnings ====
igt@kms_draw_crc@draw-method-xrgb8888-mmap-cpu-xtiled:
shard-snb: SKIP -> PASS
igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
shard-hsw: PASS -> SKIP +43
igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
shard-snb: PASS -> SKIP +21
igt@kms_flip@plain-flip-fb-recreate-interruptible:
shard-glk: PASS -> SKIP +39
igt@kms_flip@wf_vblank-ts-check:
shard-apl: PASS -> SKIP +21
igt@kms_flip@wf_vblank-ts-check-interruptible:
shard-kbl: PASS -> SKIP +16
== Known issues ==
Here are the changes found in IGTPW_1741_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@gem_exec_schedule@pi-ringfull-render:
shard-kbl: NOTRUN -> FAIL (fdo#103158)
igt@kms_available_modes_crc@available_mode_test_crc:
shard-kbl: NOTRUN -> FAIL (fdo#106641)
igt@kms_cursor_legacy@cursor-vs-flip-toggle:
shard-hsw: PASS -> FAIL (fdo#103355)
igt@perf_pmu@rc6-runtime-pm-long:
shard-apl: PASS -> FAIL (fdo#105010)
igt@testdisplay:
shard-glk: PASS -> INCOMPLETE (fdo#107093, k.org#198133, fdo#103359)
==== Possible fixes ====
igt@gem_ctx_isolation@vcs1-s3:
shard-kbl: INCOMPLETE (fdo#103665) -> PASS
igt@gem_ppgtt@blt-vs-render-ctx0:
shard-kbl: INCOMPLETE (fdo#106023, fdo#103665) -> PASS
igt@kms_available_modes_crc@available_mode_test_crc:
shard-snb: FAIL (fdo#106641) -> PASS
igt@kms_flip@dpms-vs-vblank-race:
shard-kbl: FAIL (fdo#103060) -> SKIP
igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-cpu:
shard-snb: INCOMPLETE (fdo#105411) -> PASS
igt@kms_rotation_crc@sprite-rotation-180:
shard-snb: FAIL (fdo#103925) -> PASS
igt@pm_rpm@system-suspend:
shard-kbl: INCOMPLETE (fdo#103665, fdo#107556) -> PASS
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#103158 https://bugs.freedesktop.org/show_bug.cgi?id=103158
fdo#103355 https://bugs.freedesktop.org/show_bug.cgi?id=103355
fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
fdo#105010 https://bugs.freedesktop.org/show_bug.cgi?id=105010
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#106023 https://bugs.freedesktop.org/show_bug.cgi?id=106023
fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
fdo#107093 https://bugs.freedesktop.org/show_bug.cgi?id=107093
fdo#107556 https://bugs.freedesktop.org/show_bug.cgi?id=107556
k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133
== Participating hosts (5 -> 5) ==
No changes in participating hosts
== Build changes ==
* IGT: IGT_4608 -> IGTPW_1741
* Linux: CI_DRM_4693 -> CI_DRM_4702
CI_DRM_4693: f22275363ffa04dbd719032810154e857110cd75 @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_4702: 0349bfb08204a6b44f16551c2be3b58563ff73d2 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1741: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1741/
IGT_4608: 94ebd21177feedf03e8f6dd1e73dca1a6ec7a0ac @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1741/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-01-14 10:38 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-23 17:18 [igt-dev] [PATCH V2 i-g-t] Skip VBlank tests in modules without VBlank Rodrigo Siqueira
2018-08-23 17:47 ` [igt-dev] ✓ Fi.CI.BAT: success for Skip VBlank tests in modules without VBlank (rev2) Patchwork
2018-08-27 11:33 ` Arkadiusz Hiler
2019-01-13 20:31 ` Rodrigo Siqueira
2019-01-14 10:19 ` Daniel Vetter
2019-01-14 10:38 ` Rodrigo Siqueira
2018-08-23 19:22 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
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).