This series implements the sw_sync test and the lib/sw_sync helper functions for said test. The sw_sync subtests range from very basic tests of the sw_sync functionality, to stress testing and randomized tests. Changes since v1: Added "Reviewed-by: Eric Engestrom <eric@xxxxxxxxxxxx>" tag lib/sw_sync: - Fixed fd value checking - Fixed fd validity check in sw_sync_fd_close() - Moved sw_sync related paths to define - Switched from malloc+memset to calloc in sync_file_info() - Switched sizeof to dereferenced ptr tests/sw_sync: - Moved lib/sw_sync related code to lib/sw_sync commit - Replaced memset with assignment in loop Changes since v2: lib/sw_sync: - Replaced fd validity check in sw_sync_timeline_create() - Replace sw_sync_XXX_destroy() functions with close() - Simplified sw_sync_timeline_inc() comparison - Changed sw_sync_merge() return value to -errno - Changed name of sw_sync_fence_size() to sw_sync_fence_count() - Reworked implementation of sw_sync_fence_count() - Reworked implementation of sw_sync_fence_count_status() tests/sw_sync: - Replace sw_sync_XXX_destroy() functions with close() Changes since v3: lib/sw_sync: - Changed sw_sync_fence_create() to take uint32_t seqno - Added raw __sw_sync_fence_create() and failure check sw_sync_fence_create() tests/sw_sync: - Switch to using __sw_sync_fence_create() for failure cases Changes since v4: lib/sw_sync: - Fixed whitespace in sw_sync_fence_count() - Fixed whitespace and style of sw_sync_wait() - Fixed whitespace in __sw_sync_fence_count_status() Changes since v5: lib/sw_sync: - Added kernel_has_sw_sync() - Added igt_require_sw_sync() - Split out __sw_sync_merge() from sw_sync_merge() - Added igt_debugfs.h include - Change sw_sync_wait to reflect android implementation - Renamed some functions: - sw_sync_merge -> sync_merge - sw_sync_wait -> sync_wait - sw_sync_fence_count -> sync_fence_count - sw_sync_fence_count_status -> sync_fence_count_status - __sw_sync_fence_count_status -> __sync_fence_count_status tests/sw_sync: - Added subtest test_sync_expired_merge - Added subtest test_timeline_closed - Added subtest test_timeline_closed_signaled - Added subtest test_sync_merge_invalid - Added subtest test_sync_busy_fork - Added subtest test_sync_busy_unixsockets - Skip test on no sw_sync support - Reworked comments of test_sync_wait - Renamed test_sync_wait -> test_sync_busy - Improved test_sync_wait igt_assert_f messages Changes since v6: tests/sw_sync: - Added igt_assert to test_sync_expired_merge - Added prime increments to test_sync_busy Changes since v7: - Removed accidental inclusions Changes since v8: - Removed some more accidental inclusions lib/sw_sync: - Moved some changes into the lib/sw_sync commit Changes since v9: Added: Reviewed-by: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> Made asserts more informative tests/sw_sync: - Removed nbr_threads from data_t - Removed nbr_iterations from data_t lib/sw_sync: - Removed undue Google/AOSP attribution - Added LOCAL_ prefix to some defines - Added comment for sw_sync path defines - Changed return type of sw_sync_fd_is_valid to bool - Made sw_sync_fd_is_valid internal to lib/sw_sync - Remove dead sw_sync_fd_is_valid call from sync_merge - Initialize structs at declaration instead of using memset Changes since v10: tests/sw_sync: - Changed sync_wait usage in test_sync_random_merge lib/sw_sync: - Extracted sw_sync path search from kernel_has_sw_sync Rafael Antognolli (1): tests/sw_sync: Add subtest test_sync_expired_merge Robert Foss (20): lib/sw_sync: Add helper functions for managing synchronization primitives test/sw_sync: Add sw_sync test tests/sw_sync: Add subtest test_alloc_fence tests/sw_sync: Add subtest test_alloc_fence_invalid_timeline tests/sw_sync: Add subtest test_alloc_merge_fence tests/sw_sync: Add subtest test_sync_busy tests/sw_sync: Add subtest test_sync_merge tests/sw_sync: Add subtest test_sync_merge_same tests/sw_sync: Add subtest test_sync_multi_consumer tests/sw_sync: Add subtest test_sync_multi_consumer_producer tests/sw_sync: Add subtest test_sync_random_merge tests/sw_sync: Add subtest test_sync_multi_timeline_wait tests/sw_sync: Add subtest test_sync_multi_producer_single_consumer tests/sw_sync: Add subtest test_timeline_closed tests/sw_sync: Add subtest test_timeline_closed_signaled lib/sw_sync: Add igt_require_sw_sync to enable skipping on no sw_sync support tests/sw_sync: Add igt_require check for sw_sync feature tests/sw_sync: Add subtest test_sync_merge_invalid tests/sw_sync: Add subtest test_sync_busy_fork tests/sw_sync: Add subtest test_sync_busy_unixsocket lib/Makefile.sources | 2 + lib/sw_sync.c | 228 ++++++++++++ lib/sw_sync.h | 45 +++ tests/Makefile.sources | 1 + tests/sw_sync.c | 956 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 1232 insertions(+) create mode 100644 lib/sw_sync.c create mode 100644 lib/sw_sync.h create mode 100644 tests/sw_sync.c -- 2.11.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx