[PATCH] tests/core_setmaster: Handle the test even if cards are non-continuous
Bommu Krishnaiah
krishnaiah.bommu at intel.com
Mon Aug 12 05:24:43 UTC 2024
Although most of userspace assumes drm cards to be populated continously,
this assumption may not be always true. After hot unpluging and
repluging of card
the card may be non-continous. To address such scenarios where the
cards can be non-continous
modify the tweak_perm function to loop all possible
cardnumbers(card0-card255) to confirm are they populated or not.
Problem Description:
The test fails after running the `core_hotunplug at hot*` subtest, where
card0 is missing.
This leads to a failure in the subsequent `master-drop-set-user` test.
Command sequence for reproducing the issue:
- Check available cards: `ls /dev/dri/`
- Output: by-path card0 renderD128
- Run the test: `# ./core_hotunplug --r hotrebind-lateclose`
- Check again: ‘ls /dev/dri/’
- Output after failure: by-path card1 renderD129
- Run the test: `# ./core_setmaster --r master-drop-set-user`
This failures on both XE and i915 for above sequence.
Signed-off-by: Bommu Krishnaiah <krishnaiah.bommu at intel.com>
Cc: Emil Velikov <emil.l.velikov at gmail.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray at intel.com>
Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>
---
tests/core_setmaster.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/tests/core_setmaster.c b/tests/core_setmaster.c
index 9c2083f66..a2758e2f2 100644
--- a/tests/core_setmaster.c
+++ b/tests/core_setmaster.c
@@ -116,9 +116,10 @@ static unsigned tweak_perm(uint8_t *saved_perm, unsigned max_perm, bool save)
for (i = 0; i < max_perm; i++) {
snprintf(path, sizeof(path), "/dev/dri/card%u", i);
- /* Existing userspace assumes there's no gaps, do the same. */
+ /* Userspace cannot always have continuous card0...N due to
+ * dynamic unloading or removal of cards */
if (stat(path, &st) != 0)
- break;
+ continue;
if (save) {
/* Save and toggle */
--
2.25.1
More information about the igt-dev
mailing list