Skip to contentSkip to conversation

igt_chamelium: Increase timeout for CaptureVideo

PATCH In review Neel Desai 3 participants 5 messages Apr 16, 2019 – Apr 17, 2019 Library code

lore
Share & tools
lore

Neel Desai

author
#0 lore raw

cover igt_chamelium: Increase timeout for CaptureVideo

For some chamelium boards, we observed that the chamelium_rpc() call with method_name as CaptureVideo timed out because the display resolution read by the FPGA using the VideoDumper did not match the resolution in the RX chip. The resolution read by the FPGA from the memory was incorrect after 10 seconds and needed more time to stabilize to the correct value.

So, instead of checking the chamelium->env.fault_occured in the chamelium_rpc() funtion, we defer the check in the parent function chamelium_capture(). We iterate upto 10 times if chamelium_rpc() with method name as CaptureVideo fails thus effectively increasing the timeout to 100 seconds instead if 10 seconds. If after 10 iterations, chamelium->env.fault_occured is still set, we return an error.

This looks like an issue from Google's end in the FPGA code. This patch introduces a workaround till we get the issue resolved from Google's end.

Neel Desai (1):
lib/igt_chamelium: Increase timeout for CaptureVideo

 lib/igt_chamelium.c | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

--
2.17.1

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#1 lore raw

PATCH 1/1 lib/igt_chamelium: Increase timeout for CaptureVideo

For some chamelium boards, we observed that the chamelium_rpc() call with method_name as CaptureVideo timed out because the display resolution read by the FPGA using the VideoDumper did not match the resolution in the RX chip. The resolution read by the FPGA from the memory was incorrect after 10 seconds and needed more time to stabilize to the correct value.

So, instead of checking the chamelium->env.fault_occured in the chamelium_rpc() funtion, we defer the check in the parent function chamelium_capture(). We iterate upto 10 times if chamelium_rpc() with method name as CaptureVideo fails thus effectively increasing the timeout to 100 seconds instead if 10 seconds. If after 10 iterations, chamelium->env.fault_occured is still set, we return an error.

This looks like an issue from Google's end in the FPGA code. This patch introduces a workaround till we get the issue resolved from Google's end.

---
 lib/igt_chamelium.c | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)
lib/igt_chamelium.c +31 -2
index 02cc9b2c..497d4421 100644
@@ -301,6 +301,25 @@ static xmlrpc_value *chamelium_rpc(struct chamelium *chamelium,
 		igt_cleanup_hotplug(monitor_args.mon);
 	}
 
+	/*
+	 * For some chamelium boards, we observed that the
+	 * chamelium_rpc() call with method_name as CaptureVideo timed
+	 * out because the display resolution read by the FPGA using
+	 * VideoDumper did not match the resolution in the rx chip. The
+	 * resolution read by the FPGA from the memory was
+	 * incorrect and needed more time to stabilize to the correct
+	 * value. So, instead of checking the
+	 * chamelium->env.fault_occured here, we defer checking in the
+	 * parent (chamelium_capture()) call and retry for 10 times.
+	 * This increases the timeout to 100 seconds instead of 10
+	 * seconds for CaptureVideo. After 10 iterations of
+	 * chamelium_rpc with method_name as CaptureVideo if the
+	 * chamelium->env.fault_occured is still set, we return an
+	 * error.
+	 */
+	if (!strcmp(method_name, "CaptureVideo"))
+		return res;
+
 	igt_assert_f(!chamelium->env.fault_occurred,
 		     "Chamelium RPC call failed: %s\n",
 		     chamelium->env.fault_string);
@@ -838,9 +857,19 @@ void chamelium_stop_capture(struct chamelium *chamelium, int frame_count)
 void chamelium_capture(struct chamelium *chamelium, struct chamelium_port *port,
 		       int x, int y, int w, int h, int frame_count)
 {
-	xmlrpc_DECREF(chamelium_rpc(chamelium, port, "CaptureVideo",
+	int iter = 0;
+	xmlrpc_value *res;
+	do {
+		res = chamelium_rpc(chamelium, port, "CaptureVideo",
 				    (w && h) ? "(iiiiii)" : "(iinnnn)",
-				    port->id, frame_count, x, y, w, h));
+				    port->id, frame_count, x, y, w, h);
+		iter++;
+	} while (chamelium->env.fault_occurred && iter < 10);
+
+	igt_assert_f(!chamelium->env.fault_occurred,
+		     "Chamelium RPC call failed: %s\n",
+		     chamelium->env.fault_string);
+	xmlrpc_DECREF(res);
 	chamelium->capturing_port = port;
 }
 
Signature · 6 lines
2.17.1

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
#2 lore raw

Re: [igt-dev] [PATCH i-g-t 1/1] lib/igt_chamelium: Increase timeout for CaptureVideo

Quoted 43 lines · Neel Desai

For some chamelium boards, we observed that the chamelium_rpc() call with method_name as CaptureVideo timed out because the display resolution read by the FPGA using the VideoDumper did not match the resolution in the RX chip. The resolution read by the FPGA from the memory was incorrect after 10 seconds and needed more time to stabilize
to the correct value.

So, instead of checking the chamelium->env.fault_occured in the chamelium_rpc() funtion, we defer the check in the parent function chamelium_capture(). We iterate upto 10 times if chamelium_rpc() with method name as CaptureVideo fails thus effectively increasing the timeout to 100 seconds instead if 10 seconds. If after 10 iterations, chamelium->env.fault_occured is still set, we return an error.

This looks like an issue from Google's end in the FPGA code. This patch
introduces a workaround till we get the issue resolved from Google's end.

---
 lib/igt_chamelium.c | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)
lib/igt_chamelium.c +9 -0
index 02cc9b2c..497d4421 100644
@@ -301,6 +301,25 @@ static xmlrpc_value *chamelium_rpc(struct
 chamelium *chamelium,
 		igt_cleanup_hotplug(monitor_args.mon);
 	}
 
+	/*
+	 * For some chamelium boards, we observed that the
+	 * chamelium_rpc() call with method_name as CaptureVideo timed
+	 * out because the display resolution read by the FPGA using
+	 * VideoDumper did not match the resolution in the rx chip. The
+	 * resolution read by the FPGA from the memory was
+	 * incorrect and needed more time to stabilize to the correct
+	 * value. So, instead of checking the
+	 * chamelium->env.fault_occured here, we defer checking in the

lib/igt_chamelium.c static xmlrpc_value *chamelium_rpc(struct · line 323

Quoted 10 lines
lib/igt_chamelium.c +10 -0
+	 * parent (chamelium_capture()) call and retry for 10 times.
+	 * This increases the timeout to 100 seconds instead of 10
+	 * seconds for CaptureVideo. After 10 iterations of
+	 * chamelium_rpc with method_name as CaptureVideo if the
+	 * chamelium->env.fault_occured is still set, we return an
+	 * error.
+	 */
+	if (!strcmp(method_name, "CaptureVideo"))
+		return res;
+

Why not make this a standard capability for all RPC interaction? What if we hit this in one of the other calls?

-Stuart

Quoted 25 lines
lib/igt_chamelium.c +0 -0
 	igt_assert_f(!chamelium->env.fault_occurred,
 		     "Chamelium RPC call failed: %s\n",
lib/igt_chamelium.c +12 -2
 		     chamelium->env.fault_string);
@@ -838,9 +857,19 @@ void chamelium_stop_capture(struct chamelium
 *chamelium, int frame_count)
 void chamelium_capture(struct chamelium *chamelium, struct
 chamelium_port *port,
 		       int x, int y, int w, int h, int frame_count)
 {
-	xmlrpc_DECREF(chamelium_rpc(chamelium, port, "CaptureVideo",
+	int iter = 0;
+	xmlrpc_value *res;
+	do {
+		res = chamelium_rpc(chamelium, port, "CaptureVideo",
 				    (w && h) ? "(iiiiii)" : "(iinnnn)",
-				    port->id, frame_count, x, y, w,
 h));
+				    port->id, frame_count, x, y, w, h);
+		iter++;
+	} while (chamelium->env.fault_occurred && iter < 10);
+
+	igt_assert_f(!chamelium->env.fault_occurred,
+		     "Chamelium RPC call failed: %s\n",
+		     chamelium->env.fault_string);
+	xmlrpc_DECREF(res);
Quoted 3 lines

chamelium->capturing_port = port;
}

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#3 lore raw

[igt-dev] ✓ Fi.CI.BAT: success for igt_chamelium: Increase timeout for CaptureVideo

In reply to Neel Desai
== Series Details ==

== Series Details ==

Series: igt_chamelium: Increase timeout for CaptureVideo
URL : https://patchwork.freedesktop.org/series/59599/
State : success

== Summary ==

CI Bug Log - changes from IGT_4953 -> IGTPW_2873
====================================================

Summary
-------

**SUCCESS**

No regressions found.

External URL: https://patchwork.freedesktop.org/api/1.0/series/59599/revisions/1/mbox/

Known issues
------------

Here are the changes found in IGTPW_2873 that come from known issues:

### IGT changes ###

#### Issues hit ####

* igt@amdgpu/amd_basic@cs-compute:
- fi-kbl-8809g: NOTRUN -> FAIL [fdo#108094]

* igt@amdgpu/amd_basic@query-info:
- fi-bsw-kefka: NOTRUN -> SKIP [fdo#109271] +50

* igt@amdgpu/amd_basic@semaphore:
- fi-bdw-5557u: NOTRUN -> SKIP [fdo#109271] +38

* igt@gem_exec_basic@basic-bsd2:
- fi-kbl-7500u: NOTRUN -> SKIP [fdo#109271] +9

* igt@gem_exec_basic@gtt-bsd2:
- fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] +52

* igt@i915_selftest@live_execlists:
- fi-apl-guc: NOTRUN -> INCOMPLETE [fdo#103927] / [fdo#109720]

* igt@kms_busy@basic-flip-c:
- fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] / [fdo#109278]
- fi-bsw-kefka: NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

* igt@kms_chamelium@dp-crc-fast:
- fi-kbl-7500u: NOTRUN -> DMESG-WARN [fdo#103841]

* igt@kms_chamelium@hdmi-edid-read:
- fi-hsw-peppy: NOTRUN -> SKIP [fdo#109271] +46
- fi-kbl-8809g: NOTRUN -> SKIP [fdo#109271] +54

* igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy: NOTRUN -> DMESG-FAIL [fdo#102614] / [fdo#107814]
- fi-byt-clapper: NOTRUN -> FAIL [fdo#103167]

* igt@kms_pipe_crc_basic@read-crc-pipe-a:
- fi-byt-clapper: NOTRUN -> FAIL [fdo#103191] +1

* igt@kms_psr@primary_page_flip:
- fi-apl-guc: NOTRUN -> SKIP [fdo#109271] +48

* igt@runner@aborted:
- fi-kbl-7500u: NOTRUN -> FAIL [fdo#103841]
- fi-apl-guc: NOTRUN -> FAIL [fdo#108622] / [fdo#109720]

#### Possible fixes ####

* igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm: DMESG-FAIL -> PASS

* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- fi-glk-dsi: FAIL [fdo#103191] -> PASS

[fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#103841]: https://bugs.freedesktop.org/show_bug.cgi?id=103841
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#107814]: https://bugs.freedesktop.org/show_bug.cgi?id=107814
[fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
[fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720

Participating hosts (42 -> 40)
------------------------------

Additional (7): fi-bdw-5557u fi-hsw-peppy fi-apl-guc fi-kbl-7500u fi-kbl-8809g fi-bsw-kefka fi-byt-clapper
Missing (9): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-j1900 fi-bsw-cyan fi-ctg-p8600 fi-icl-y fi-bdw-samus fi-skl-6700k2

Build changes
-------------

* IGT: IGT_4953 -> IGTPW_2873

CI_DRM_5939: 757f5370dc4baed0475b6e28efd67ecc267e8745 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2873: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2873/
IGT_4953: e03d0030391689cfd0fbca293d44d83dd7d9e356 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2873/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#4 lore raw

[igt-dev] ✓ Fi.CI.IGT: success for igt_chamelium: Increase timeout for CaptureVideo

In reply to Neel Desai
== Series Details ==

== Series Details ==

Series: igt_chamelium: Increase timeout for CaptureVideo
URL : https://patchwork.freedesktop.org/series/59599/
State : success

== Summary ==

CI Bug Log - changes from IGT_4953_full -> IGTPW_2873_full
====================================================

Summary
-------

**SUCCESS**

No regressions found.

External URL: https://patchwork.freedesktop.org/api/1.0/series/59599/revisions/1/mbox/

Known issues
------------

Here are the changes found in IGTPW_2873_full that come from known issues:

### IGT changes ###

#### Issues hit ####

* igt@gem_exec_schedule@preemptive-hang-bsd2:
- shard-hsw: NOTRUN -> SKIP [fdo#109271] +24

* igt@gem_pread@stolen-uncached:
- shard-kbl: NOTRUN -> SKIP [fdo#109271] +20

* igt@gem_tiled_swapping@non-threaded:
- shard-hsw: PASS -> FAIL [fdo#108686]

* igt@i915_pm_rpm@i2c:
- shard-iclb: PASS -> DMESG-WARN [fdo#109982]

* igt@i915_suspend@forcewake:
- shard-apl: PASS -> DMESG-WARN [fdo#108566] +1

* igt@kms_atomic_transition@5x-modeset-transitions-fencing:
- shard-hsw: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +2
- shard-glk: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +1

* igt@kms_busy@extended-modeset-hang-oldfb-render-e:
- shard-snb: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +6

* igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-d:
- shard-kbl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

* igt@kms_content_protection@atomic-dpms:
- shard-kbl: NOTRUN -> FAIL [fdo#110321] / [fdo#110336]

* igt@kms_cursor_crc@cursor-256x256-suspend:

    - shard-kbl:          PASS -> FAIL [fdo#103232]
    - shard-glk:          NOTRUN -> FAIL [fdo#103232]
    - shard-apl:          PASS -> FAIL [fdo#103232]

* igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
- shard-hsw: PASS -> FAIL [fdo#105767]

* igt@kms_flip@dpms-vs-vblank-race:
- shard-glk: PASS -> FAIL [fdo#103060]

* igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw:
- shard-iclb: PASS -> FAIL [fdo#103167] +6

* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt:
- shard-iclb: PASS -> FAIL [fdo#109247] +14

* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt:
- shard-glk: NOTRUN -> SKIP [fdo#109271] +20

* igt@kms_lease@page_flip_implicit_plane:
- shard-apl: NOTRUN -> FAIL [fdo#110281]

* igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
- shard-kbl: NOTRUN -> FAIL [fdo#108145]

* igt@kms_plane_alpha_blend@pipe-c-constant-alpha-max:
- shard-glk: NOTRUN -> FAIL [fdo#108145]

* igt@kms_plane_lowres@pipe-a-tiling-y:
- shard-iclb: PASS -> FAIL [fdo#103166]

* igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format:
- shard-glk: PASS -> SKIP [fdo#109271] / [fdo#109278]

* igt@kms_psr2_su@page_flip:
- shard-iclb: PASS -> SKIP [fdo#109642]

* igt@kms_psr@psr2_primary_mmap_gtt:
- shard-iclb: PASS -> SKIP [fdo#109441] +2

* igt@kms_psr@sprite_plane_move:
- shard-iclb: PASS -> FAIL [fdo#107383] / [fdo#110215]

* igt@kms_rotation_crc@multiplane-rotation:
- shard-kbl: PASS -> FAIL [fdo#109016]

* igt@kms_setmode@basic:
- shard-hsw: PASS -> FAIL [fdo#99912]

* igt@kms_universal_plane@universal-plane-gen9-features-pipe-f:
- shard-apl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +1

* igt@perf_pmu@busy-accuracy-2-rcs0:
- shard-snb: NOTRUN -> SKIP [fdo#109271] +41

* igt@prime_nv_pcopy@test3_5:
- shard-apl: NOTRUN -> SKIP [fdo#109271] +25

* igt@tools_test@tools_test:
- shard-glk: PASS -> SKIP [fdo#109271]

#### Possible fixes ####

* igt@gem_ctx_isolation@bcs0-s3:
- shard-apl: DMESG-WARN [fdo#108566] -> PASS +2

* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-cpu:
- shard-glk: FAIL [fdo#103167] -> PASS

* igt@kms_frontbuffer_tracking@fbc-tilingchange:
- shard-iclb: FAIL [fdo#103167] -> PASS +10

* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc:
- shard-iclb: FAIL [fdo#109247] -> PASS +13

* igt@kms_plane@pixel-format-pipe-a-planes-source-clamping:
- shard-glk: SKIP [fdo#109271] -> PASS

* igt@kms_plane_scaling@pipe-c-scaler-with-rotation:
- shard-glk: SKIP [fdo#109271] / [fdo#109278] -> PASS

* igt@kms_psr@cursor_mmap_gtt:
- shard-iclb: FAIL [fdo#107383] / [fdo#110215] -> PASS +2

* igt@kms_psr@no_drrs:
- shard-iclb: FAIL [fdo#108341] -> PASS

* igt@kms_psr@psr2_cursor_plane_onoff:
- shard-iclb: SKIP [fdo#109441] -> PASS +1

* igt@kms_sysfs_edid_timing:
- shard-iclb: FAIL [fdo#100047] -> PASS

[fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047
[fdo#103060]: https://bugs.freedesktop.org/show_bug.cgi?id=103060
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#105767]: https://bugs.freedesktop.org/show_bug.cgi?id=105767
[fdo#107383]: https://bugs.freedesktop.org/show_bug.cgi?id=107383
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#108341]: https://bugs.freedesktop.org/show_bug.cgi?id=108341
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016
[fdo#109247]: https://bugs.freedesktop.org/show_bug.cgi?id=109247
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#109982]: https://bugs.freedesktop.org/show_bug.cgi?id=109982
[fdo#110215]: https://bugs.freedesktop.org/show_bug.cgi?id=110215
[fdo#110281]: https://bugs.freedesktop.org/show_bug.cgi?id=110281
[fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321
[fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912

Participating hosts (7 -> 6)
------------------------------

Missing (1): shard-skl

Build changes
-------------

* IGT: IGT_4953 -> IGTPW_2873

CI_DRM_5939: 757f5370dc4baed0475b6e28efd67ecc267e8745 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2873: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2873/
IGT_4953: e03d0030391689cfd0fbca293d44d83dd7d9e356 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2873/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev