From: Louis Chauvet <louis.chauvet@bootlin.com>
To: igt-dev@lists.freedesktop.org
Cc: thomas.petazzoni@bootlin.com, luca.ceresoli@bootlin.com,
kory.maincent@bootlin.com, markyacoub@google.com,
khaled.almahallawy@intel.com,
Louis Chauvet <louis.chauvet@bootlin.com>
Subject: [PATCH i-g-t v7 02/48] lib/igt_kms: Add helper to wait for a specific status on a connector
Date: Mon, 23 Feb 2026 13:09:09 +0100 [thread overview]
Message-ID: <20260223-unigraf-integration-v7-2-73dc9143c8c1@bootlin.com> (raw)
In-Reply-To: <20260223-unigraf-integration-v7-0-73dc9143c8c1@bootlin.com>
During testing with chamelium, it is frequent to wait for a specific
connector status. This new helper is polling the DRM API to wait for this
status. This allows detecting it without notifier systems which can fail
if hot plug detection is not working properly on the device under test.
Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
---
lib/igt_kms.c | 40 ++++++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 3 +++
2 files changed, 43 insertions(+)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 65e657cffda7..6435ea25db0b 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -7953,3 +7953,43 @@ bool igt_has_lobf_debugfs(int drmfd, igt_output_t *output)
buf, sizeof(buf));
return res == 0;
}
+
+/**
+ * igt_wait_for_connector_status:
+ * @drm_fd: drm file descriptor
+ * @connector_id: connector to monitor
+ * @timeout: maximum duration to wait, in second. Use -1.0 to set the timeout
+ * to igt_default_detect_timeout().
+ * @drm_mode: mode to wait for, see enum drmModeConnection
+ *
+ * Wait for at most @timeout that the connector @connector_id status
+ * become @drm_mode
+ * Returns: true when the status is reached, false if there is a timeout
+ */
+bool igt_wait_for_connector_status(int drm_fd, unsigned int connector_id, double timeout,
+ int drm_mode)
+{
+ drmModeConnector *connector;
+ struct timespec start, end;
+
+ if (timeout == -1.0)
+ timeout = igt_default_display_detect_timeout();
+
+ clock_gettime(CLOCK_MONOTONIC, &start);
+ end = start;
+
+ while (igt_time_elapsed(&start, &end) <= timeout) {
+ connector = drmModeGetConnector(drm_fd, connector_id);
+ if (connector && connector->connection == drm_mode) {
+ drmModeFreeConnector(connector);
+ return true;
+ }
+ drmModeFreeConnector(connector);
+ usleep(10000);
+ clock_gettime(CLOCK_MONOTONIC, &end);
+ }
+
+ igt_debug("Timeout waiting for connection status %d on connector %d\n", drm_mode,
+ connector_id);
+ return false;
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index dedc3f88055b..27357854e442 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1319,4 +1319,7 @@ void igt_get_and_wait_out_fence(igt_output_t *output);
igt_colorop_t *igt_find_colorop(igt_display_t *display, uint32_t id);
+bool igt_wait_for_connector_status(int drm_fd, unsigned int connector_id, double timeout,
+ int drm_mode);
+
#endif /* __IGT_KMS_H__ */
--
2.52.0
next prev parent reply other threads:[~2026-02-23 12:08 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-23 12:09 [PATCH i-g-t v7 00/48] Unigraf integration Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 01/48] lib/igt_kms: Add a detect timeout value Louis Chauvet
2026-02-23 13:21 ` Kory Maincent
2026-02-23 12:09 ` Louis Chauvet [this message]
2026-02-23 13:23 ` [PATCH i-g-t v7 02/48] lib/igt_kms: Add helper to wait for a specific status on a connector Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 03/48] lib/igt_kms: Add function to list connected connectors Louis Chauvet
2026-02-23 13:41 ` Kory Maincent
2026-02-26 8:35 ` Kamil Konieczny
2026-02-23 12:09 ` [PATCH i-g-t v7 04/48] lib/igt_kms: Add helper to obtain a connector by its name or MST path Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 05/48] lib/igt_kms: Add helper to wait for new connectors Louis Chauvet
2026-02-23 14:00 ` Kory Maincent
2026-02-26 16:17 ` Kamil Konieczny
2026-02-23 12:09 ` [PATCH i-g-t v7 06/48] lib/igt_kms: Add helper to get a pipe from a connector Louis Chauvet
2026-03-03 18:00 ` [i-g-t,v7,06/48] " Joshi, Kunal1
2026-02-23 12:09 ` [PATCH i-g-t v7 07/48] lib/igt_kms: Expose dump_connector_attrs Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 08/48] lib/igt_kms: Expose reset_connectors_at_exit Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 09/48] lib/igt_kms: Expose connector_attr_set and igt_connector_attr_set Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 10/48] lib/igt_debugfs: Move debugfs helpers to the proper location Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 11/48] lib/igt_debugfs: Add const when make sense Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 12/48] lib/igt_amd: " Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 13/48] lib/igt_kms: " Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 14/48] lib/monitor_edids: Add helper functions for using monitor_edid objects Louis Chauvet
2026-02-23 14:07 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 15/48] lib/monitor_edids: Add helper to get an EDID by its name Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 16/48] lib/monitor_edids: Add helper to print all available EDID names Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 17/48] lib/unigraf: Add used defines for TSI_Types Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 18/48] lib/unigraf: Add TSI.h Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 19/48] lib/unigraf: Initial Unigraf support Louis Chauvet
2026-02-23 14:12 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 20/48] lib/igt_kms: Automatically connect unigraf on display require Louis Chauvet
2026-02-23 14:13 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 21/48] lib/unigraf: Introduce device configuration Louis Chauvet
2026-02-23 14:22 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 22/48] lib/unigraf: Introduce role configuration Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 23/48] lib/unigraf: Introduce input configuration Louis Chauvet
2026-02-23 14:26 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 24/48] lib/unigraf: Add reset function Louis Chauvet
2026-02-23 14:26 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 25/48] lib/unigraf: Add unigraf assert and deassert helpers Louis Chauvet
2026-02-23 14:31 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 26/48] lib/unigraf: Add plug/unplug helpers Louis Chauvet
2026-03-03 18:16 ` [i-g-t,v7,26/48] " Joshi, Kunal1
2026-02-23 12:09 ` [PATCH i-g-t v7 27/48] lib/unigraf: Allows sst/mst configuration Louis Chauvet
2026-02-23 14:34 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 28/48] lib/unigraf: Add helpers to read and write edid Louis Chauvet
2026-02-23 14:37 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 29/48] lib/unigraf: Add connector and EDID configuration Louis Chauvet
2026-02-23 15:03 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 30/48] tests/unigraf: Add basic unigraf tests Louis Chauvet
2026-02-23 15:11 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 31/48] lib/unigraf: Add unigraf CRC capture Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 32/48] lib/unigraf: Add configuration for CRC usage Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 33/48] lib/unigraf: add unigraf_get_connector_by_stream Louis Chauvet
2026-02-23 15:13 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 34/48] lib/unigraf: Add helper to check timings received by unigraf Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 35/48] lib/igt_pipe_crc: Add unigraf crc calculation Louis Chauvet
2026-02-23 15:16 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 36/48] lib/i915/dp: Move DP-related function for i915 to proper folder Louis Chauvet
2026-02-23 15:43 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 37/48] lib/i915/dp: Rename functions to avoid confusion Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 38/48] lib/i915/dp: Add helper to get maximum supported rate Louis Chauvet
2026-02-23 15:45 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 39/48] lib/i915/dp: Properly check sscanf results Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 40/48] lib/i915/dp: Use igt_output_name instead of private field Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 41/48] lib/igt_dp: Create generic helpers for DP information Louis Chauvet
2026-02-23 15:56 ` Kory Maincent
2026-02-25 10:00 ` Louis Chauvet
2026-02-25 10:20 ` Kory Maincent
2026-02-26 15:56 ` Kamil Konieczny
2026-02-23 12:09 ` [PATCH i-g-t v7 42/48] lib/igt_kms: Add asserts to avoid null pointer dereference Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 43/48] lib/igt_kms: Add helper to get a CRTC from an output Louis Chauvet
2026-02-23 16:09 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 44/48] lib/unigraf: Add lane count configuration Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 45/48] docs/unigraf: Add unigraf documentation Louis Chauvet
2026-02-23 16:11 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 46/48] lib/unigraf: Add helpers to set maximum link rate Louis Chauvet
2026-02-23 16:14 ` Kory Maincent
2026-02-23 12:09 ` [PATCH i-g-t v7 47/48] lib/unigraf: Add helpers to get the current LT status Louis Chauvet
2026-02-23 12:09 ` [PATCH i-g-t v7 48/48] tests/unigraf/unigraf_lt: Add test for link training Louis Chauvet
2026-02-23 13:30 ` ✓ Xe.CI.BAT: success for Unigraf integration (rev6) Patchwork
2026-02-23 13:44 ` ✗ i915.CI.BAT: failure " Patchwork
2026-02-24 6:15 ` ✗ Xe.CI.FULL: " Patchwork
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=20260223-unigraf-integration-v7-2-73dc9143c8c1@bootlin.com \
--to=louis.chauvet@bootlin.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=khaled.almahallawy@intel.com \
--cc=kory.maincent@bootlin.com \
--cc=luca.ceresoli@bootlin.com \
--cc=markyacoub@google.com \
--cc=thomas.petazzoni@bootlin.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox