[i-g-t,7/8] tests/fbcon_fbt: Add and use psr_long_wait_exit() to test updates in PSR

Submitted by José Roberto de Souza on Jan. 7, 2019, 7:10 p.m.

Details

Message ID 20190107191056.22759-7-jose.souza@intel.com
State New
Headers show
Series "Series without cover letter" ( rev: 1 ) in IGT

Not browsing as part of any series.

Commit Message

José Roberto de Souza Jan. 7, 2019, 7:10 p.m.
After getting back to fbcon it tests if PSR had a update but since
fbcon can take a while it have some big sleep in place, so what it
is actualy testing is if fbcon is updating the screen.
In this test the update of the screen comes from the fbcon cursor
blinking, the problem is that 40ms is a small interval to detect
cursor blinking and the test can fail some times, so a bigger timeout
to wait for exit is need.

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 lib/igt_psr.c         | 5 +++++
 lib/igt_psr.h         | 1 +
 tests/kms_fbcon_fbt.c | 2 +-
 3 files changed, 7 insertions(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/lib/igt_psr.c b/lib/igt_psr.c
index 82012e6d..28e7e99c 100644
--- a/lib/igt_psr.c
+++ b/lib/igt_psr.c
@@ -47,6 +47,11 @@  bool psr_wait_exit(int debugfs_fd)
 	return igt_wait(psr_active(debugfs_fd, false), 40, 10);
 }
 
+bool psr_long_wait_exit(int debugfs_fd)
+{
+	return igt_wait(psr_active(debugfs_fd, false), 500, 10);
+}
+
 static ssize_t psr_write(int debugfs_fd, const char *buf)
 {
 	return igt_sysfs_write(debugfs_fd, "i915_edp_psr_debug", buf,
diff --git a/lib/igt_psr.h b/lib/igt_psr.h
index d3336c2d..d52a7e08 100644
--- a/lib/igt_psr.h
+++ b/lib/igt_psr.h
@@ -32,6 +32,7 @@ 
 
 bool psr_wait_entry(int debugfs_fd);
 bool psr_wait_exit(int debugfs_fd);
+bool psr_long_wait_exit(int debugfs_fd);
 bool psr_enable(int debugfs_fd);
 bool psr_disable(int debugfs_fd);
 bool psr_sink_support(int debugfs_fd);
diff --git a/tests/kms_fbcon_fbt.c b/tests/kms_fbcon_fbt.c
index 3e218dc8..cdba1c6e 100644
--- a/tests/kms_fbcon_fbt.c
+++ b/tests/kms_fbcon_fbt.c
@@ -198,7 +198,7 @@  static bool psr_wait_until_enabled(int debugfs_fd)
 
 static bool psr_wait_until_update(int debugfs_fd)
 {
-	return psr_wait_exit(debugfs_fd);
+	return psr_long_wait_exit(debugfs_fd);
 }
 
 static void disable_features(int debugfs_fd)

Comments

Quoting José Roberto de Souza (2019-01-07 19:10:55)
> After getting back to fbcon it tests if PSR had a update but since
> fbcon can take a while it have some big sleep in place, so what it
> is actualy testing is if fbcon is updating the screen.
> In this test the update of the screen comes from the fbcon cursor
> blinking, the problem is that 40ms is a small interval to detect
> cursor blinking and the test can fail some times, so a bigger timeout
> to wait for exit is need.

So what happens if you disable the cursor blink? Do you actually need to
open the fbdev and draw something to ensure the path you want exercised
is?
-Chris
On Mon, 2019-01-07 at 20:41 +0000, Chris Wilson wrote:
> Quoting José Roberto de Souza (2019-01-07 19:10:55)
> > After getting back to fbcon it tests if PSR had a update but since
> > fbcon can take a while it have some big sleep in place, so what it
> > is actualy testing is if fbcon is updating the screen.
> > In this test the update of the screen comes from the fbcon cursor
> > blinking, the problem is that 40ms is a small interval to detect
> > cursor blinking and the test can fail some times, so a bigger
> > timeout
> > to wait for exit is need.
> 
> So what happens if you disable the cursor blink?

It would fail, I can add a patch on top saving the previous state of
/sys/class/graphics/fbcon/cursor_blink enabling it and then restoring.

> Do you actually need to
> open the fbdev and draw something to ensure the path you want
> exercised
> is?

Paulo was the one that wrote the test he can answer better but I guess
he wanted to test if fbcon would show up after draw to fbdev and
teardown.

> -Chris