Test enumeration becomes funky on some tests due to fd FILE* stream change
Submitted by Casey Bowman
Assigned to Default DRI bug account
Link to original bug (#108891)
Description
Testing on ChromeOS KBL device with a 4.4 kernel
IGT SHA used was:
dbe1fc1e
Running the igt@gem_busy@basic-busy-default test resulted in the following failure:
(gem_busy:13397) igt-gt-CRITICAL: Test assertion failure function igt_allow_hang, file ../../intel-gpu-tools-9999/lib/igt_gt.c:174:
(gem_busy:13397) igt-gt-CRITICAL: Failed assertion: igt_sysfs_set_parameter (fd, "reset", "%d", INT_MAX )
(gem_busy:13397) igt-gt-CRITICAL: Last errno: 22, Invalid argument
Test gem_busy failed.
**** DEBUG ****
(gem_busy:13397) DEBUG: Test requirement passed: gem_has_ring(fd, e->exec_id | e->flags)
(gem_busy:13397) igt-debugfs-DEBUG: Opening debugfs directory '/sys/kernel/debug/dri/0'
(gem_busy:13397) drmtest-DEBUG: Test requirement passed: is_i915_device(fd) && has_known_intel_chipset(fd)
(gem_busy:13397) igt-debugfs-DEBUG: Opening debugfs directory '/sys/kernel/debug/dri/0'
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: dir >= 0
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: err == 0
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: gem_has_ring(fd, ring)
(gem_busy:13397) igt-dummyload-DEBUG: Test requirement passed: nengine
(gem_busy:13397) igt-core-INFO: Subtest basic-busy-default: SUCCESS (0.013s)
(gem_busy:13397) drmtest-DEBUG: Test requirement passed: is_i915_device(fd) && has_known_intel_chipset(fd)
(gem_busy:13397) igt-debugfs-DEBUG: Opening debugfs directory '/sys/kernel/debug/dri/0'
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: dir >= 0
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: err == 0
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: gem_has_ring(fd, ring)
(gem_busy:13397) igt-dummyload-DEBUG: Test requirement passed: nengine
(gem_busy:13397) DEBUG: Test requirement passed: has_extended_busy_ioctl(fd)
(gem_busy:13397) drmtest-DEBUG: Test requirement passed: is_i915_device(fd) && has_known_intel_chipset(fd)
(gem_busy:13397) igt-debugfs-DEBUG: Opening debugfs directory '/sys/kernel/debug/dri/0'
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: dir >= 0
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: err == 0
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: gem_has_ring(fd, ring)
(gem_busy:13397) igt-dummyload-DEBUG: Test requirement passed: nengine
(gem_busy:13397) DEBUG: Test requirement passed: has_extended_busy_ioctl(fd)
(gem_busy:13397) drmtest-DEBUG: Test requirement passed: is_i915_device(fd) && has_known_intel_chipset(fd)
(gem_busy:13397) igt-debugfs-DEBUG: Opening debugfs directory '/sys/kernel/debug/dri/0'
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: dir >= 0
(gem_busy:13397) ioctl-wrappers-DEBUG: Test requirement passed: err == 0
(gem_busy:13397) igt-gt-CRITICAL: Test assertion failure function igt_allow_hang, file ../../intel-gpu-tools-9999/lib/igt_gt.c:174:
(gem_busy:13397) igt-gt-CRITICAL: Failed assertion: igt_sysfs_set_parameter (fd, "reset", "%d", INT_MAX )
(gem_busy:13397) igt-gt-CRITICAL: Last errno: 22, Invalid argument
(gem_busy:13397) igt-core-INFO: Stack trace:
**** END **
The Stderr output clearly shows that the test passed with:
(gem_busy:13397) igt-core-INFO: Subtest basic-busy-default: SUCCESS (0.013s)
But the test continues on.
Doing a bisect resulted in the offending commit:
commit 3f89d7b0
Author: Chris Wilson chris@chris-wilson.co.uk
Date: Thu Aug 30 09:38:55 2018 +0100
lib/sysfs: Avoid using FILE temporary for igt_sysfs_[v]printf
Currently we wrap our fd inside a FILE stream to make use of vfprintf,
but the man page leaves the question of errno and signal handling in
doubt. It is documented as returning a negative value and setting
ferror(), but we have been interpreting errno to handle signal
restarting. As that is in doubt, reduce it to a sprintf and reuse our
common interrupt handling write() that already returns -errno.
Signed-off-by: Chris Wilson chris@chris-wilson.co.uk
Cc: Katarzyna Dec katarzyna.dec@intel.com
Reviewed-by: Katarzyna Dec katarzyna.dec@intel.com
Reverting the commit fixed the behavior and 30+ subtests on the fast-feedback.testlist changed back to passing.