* [igt-dev] [PATCH i-g-t 1/2] lib: Refactor construction of unique tokens @ 2021-10-05 22:29 Ashutosh Dixit 2021-10-05 22:29 ` [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax Ashutosh Dixit ` (3 more replies) 0 siblings, 4 replies; 7+ messages in thread From: Ashutosh Dixit @ 2021-10-05 22:29 UTC (permalink / raw) To: igt-dev; +Cc: Petri Latvala, Zbigniew Kempczynski, Chris Wilson From: Chris Wilson <chris.p.wilson@intel.com> Wrap all the igt_tokencat(prefix, __LINE) into its own igt_unique() to reduce the clutter and make it easier to generate unique tokens for other common macros. Signed-off-by: Chris Wilson <chris.p.wilson@intel.com> --- lib/igt_core.h | 54 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/lib/igt_core.h b/lib/igt_core.h index 8d433fc1655..6b8dbf348d8 100644 --- a/lib/igt_core.h +++ b/lib/igt_core.h @@ -147,12 +147,12 @@ __noreturn void __igt_fixture_end(void); * enumeration (e.g. when enumerating on systems without an intel gpu) such * blocks should be annotated with igt_fixture. */ -#define igt_fixture for (volatile int igt_tokencat(__tmpint,__LINE__) = 0; \ - igt_tokencat(__tmpint,__LINE__) < 1 && \ +#define igt_fixture for (volatile int igt_unique(__tmpint) = 0; \ + igt_unique(__tmpint) < 1 && \ (STATIC_ANALYSIS_BUILD || \ (__igt_fixture() && \ (sigsetjmp(igt_subtest_jmpbuf, 1) == 0))); \ - igt_tokencat(__tmpint,__LINE__) ++, \ + igt_unique(__tmpint) ++, \ __igt_fixture_complete()) /* subtest infrastructure */ @@ -203,6 +203,16 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name); */ #define igt_tokencat(x, y) __igt_tokencat2(x, y) +/** + * igt_unique: + * @prefix: local identifier + * + * C preprocessor helper to generate a custom 'unique' token by appending + * the line number onto the token. + */ +#define igt_unique(prefix) \ + igt_tokencat(igt_tokencat(__igt_unique__, prefix), __LINE__) + /** * igt_subtest: * @name: name of the subtest @@ -238,7 +248,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name); * static string. */ #define igt_subtest_f(f...) \ - __igt_subtest_f(igt_tokencat(__tmpchar, __LINE__), f) + __igt_subtest_f(igt_unique(__tmpchar), f) /** * igt_subtest_with_dynamic: @@ -315,7 +325,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name); * format string instead of a static string. */ #define igt_subtest_with_dynamic_f(f...) \ - __igt_subtest_with_dynamic_f(igt_tokencat(__tmpchar, __LINE__), f) + __igt_subtest_with_dynamic_f(igt_unique(__tmpchar), f) /** * igt_dynamic: @@ -358,7 +368,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name); * instead of a static string. */ #define igt_dynamic_f(f...) \ - __igt_dynamic_f(igt_tokencat(__tmpchar, __LINE__), f) + __igt_dynamic_f(igt_unique(__tmpchar), f) const char *igt_subtest_name(void); bool igt_only_list_subtests(void); @@ -380,15 +390,15 @@ void __igt_subtest_group_restore(int, int); * clauses. If any common setup in a fixture fails, only the subtests in this * group will fail or skip. Subtest groups can be arbitrarily nested. */ -#define igt_subtest_group for (int igt_tokencat(__tmpint,__LINE__) = 0, \ - igt_tokencat(__save,__LINE__) = 0, \ - igt_tokencat(__desc,__LINE__) = 0; \ - igt_tokencat(__tmpint,__LINE__) < 1 && \ - (__igt_subtest_group_save(& igt_tokencat(__save,__LINE__), \ - & igt_tokencat(__desc,__LINE__) ), true); \ - igt_tokencat(__tmpint,__LINE__) ++, \ - __igt_subtest_group_restore(igt_tokencat(__save,__LINE__), \ - igt_tokencat(__desc,__LINE__))) +#define igt_subtest_group for (int igt_unique(__tmpint) = 0, \ + igt_unique(__save) = 0, \ + igt_unique(__desc) = 0; \ + igt_unique(__tmpint) < 1 && \ + (__igt_subtest_group_save(& igt_unique(__save), \ + & igt_unique(__desc) ), true); \ + igt_unique(__tmpint) ++, \ + __igt_subtest_group_restore(igt_unique(__save), \ + igt_unique(__desc))) /** * igt_main_args: @@ -404,15 +414,15 @@ void __igt_subtest_group_restore(int, int); * #igt_subtest_init_parse_opts. */ #define igt_main_args(short_opts, long_opts, help_str, opt_handler, handler_data) \ - static void igt_tokencat(__real_main, __LINE__)(void); \ + static void igt_unique(__real_main)(void); \ int main(int argc, char **argv) { \ igt_subtest_init_parse_opts(&argc, argv, \ short_opts, long_opts, help_str, \ opt_handler, handler_data); \ - igt_tokencat(__real_main, __LINE__)(); \ + igt_unique(__real_main)(); \ igt_exit(); \ } \ - static void igt_tokencat(__real_main, __LINE__)(void) \ + static void igt_unique(__real_main)(void) \ /** @@ -460,15 +470,15 @@ void igt_simple_init_parse_opts(int *argc, char **argv, * #igt_simple_init_parse_opts. */ #define igt_simple_main_args(short_opts, long_opts, help_str, opt_handler, handler_data) \ - static void igt_tokencat(__real_main, __LINE__)(void); \ + static void igt_unique(__real_main)(void); \ int main(int argc, char **argv) { \ igt_simple_init_parse_opts(&argc, argv, \ short_opts, long_opts, help_str, \ opt_handler, handler_data); \ - igt_tokencat(__real_main, __LINE__)(); \ + igt_unique(__real_main)(); \ igt_exit(); \ } \ - static void igt_tokencat(__real_main, __LINE__)(void) \ + static void igt_unique(__real_main)(void) \ /** @@ -490,7 +500,7 @@ void igt_simple_init_parse_opts(int *argc, char **argv, */ #define igt_constructor \ __attribute__((constructor)) \ - static void igt_tokencat(__igt_constructor_l, __LINE__)(void) + static void igt_unique(__igt_constructor_l)(void) __noreturn __attribute__((format(printf, 1, 2))) void igt_skip(const char *f, ...); -- 2.33.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax 2021-10-05 22:29 [igt-dev] [PATCH i-g-t 1/2] lib: Refactor construction of unique tokens Ashutosh Dixit @ 2021-10-05 22:29 ` Ashutosh Dixit 2021-10-06 18:11 ` Zbigniew Kempczyński 2021-10-06 20:26 ` Zbigniew Kempczyński 2021-10-05 23:16 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Refactor construction of unique tokens Patchwork ` (2 subsequent siblings) 3 siblings, 2 replies; 7+ messages in thread From: Ashutosh Dixit @ 2021-10-05 22:29 UTC (permalink / raw) To: igt-dev; +Cc: Petri Latvala, Zbigniew Kempczynski, Chris Wilson From: Chris Wilson <chris@chris-wilson.co.uk> Add typechecking to the min/max macros and make their locals truly unique-ish to reduce the risk of shadowing. v2: small bug fix, write also height coordinate on rotation test. (jheikkil) v3: Fix up a couple of other max/max_t instances (Ashutosh) Signed-off-by: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com> Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> Signed-off-by: Chris Wilson <chris.p.wilson@intel.com> --- lib/i915/intel_memory_region.c | 9 ++---- lib/i915/intel_memory_region.h | 2 +- lib/igt_aux.h | 48 ++++++++++++++++++++---------- lib/igt_fb.c | 13 ++++---- lib/intel_allocator.c | 2 +- lib/intel_allocator_random.c | 2 +- lib/intel_allocator_reloc.c | 2 +- runner/resultgen.c | 7 +++-- tests/i915/api_intel_bb.c | 2 +- tests/i915/gem_eio.c | 4 +-- tests/i915/gem_exec_alignment.c | 4 +-- tests/i915/gem_exec_capture.c | 2 +- tests/i915/gem_exec_fair.c | 2 +- tests/i915/gem_stress.c | 2 +- tests/i915/gem_tiled_swapping.c | 5 ++-- tests/i915/gem_userptr_blits.c | 2 +- tests/i915/i915_pm_rc6_residency.c | 2 +- tests/i915/kms_big_fb.c | 2 +- tests/i915/perf_pmu.c | 2 +- tests/kms_atomic_transition.c | 2 +- tests/kms_chamelium.c | 2 +- tests/kms_content_protection.c | 4 +-- tests/kms_invalid_mode.c | 4 +-- tests/kms_multipipe_modeset.c | 3 +- tests/kms_rotation_crc.c | 21 ++++++++----- tests/kms_setmode.c | 11 ++----- tests/sw_sync.c | 5 ++-- tools/intel_vbt_decode.c | 3 +- 28 files changed, 93 insertions(+), 76 deletions(-) diff --git a/lib/i915/intel_memory_region.c b/lib/i915/intel_memory_region.c index bc2f66dbff5..058b273dcf8 100644 --- a/lib/i915/intel_memory_region.c +++ b/lib/i915/intel_memory_region.c @@ -146,19 +146,16 @@ out: * * Returns: Number of found lmem regions. */ -uint8_t gem_get_lmem_region_count(int fd) +unsigned int gem_get_lmem_region_count(int fd) { struct drm_i915_query_memory_regions *query_info; - uint8_t num_regions; - uint8_t lmem_regions = 0; + unsigned int lmem_regions = 0; query_info = gem_get_query_memory_regions(fd); if (!query_info) goto out; - num_regions = query_info->num_regions; - - for (int i = 0; i < num_regions; i++) { + for (unsigned int i = 0; i < query_info->num_regions; i++) { if (query_info->regions[i].region.memory_class == I915_MEMORY_CLASS_DEVICE) lmem_regions += 1; } diff --git a/lib/i915/intel_memory_region.h b/lib/i915/intel_memory_region.h index 024c76d3644..8b427b7e729 100644 --- a/lib/i915/intel_memory_region.h +++ b/lib/i915/intel_memory_region.h @@ -58,7 +58,7 @@ uint32_t gem_get_batch_size(int fd, uint8_t mem_region_type); struct drm_i915_query_memory_regions *gem_get_query_memory_regions(int fd); -uint8_t gem_get_lmem_region_count(int fd); +unsigned int gem_get_lmem_region_count(int fd); bool gem_has_lmem(int fd); diff --git a/lib/igt_aux.h b/lib/igt_aux.h index bf57ccf50df..30b175d70d8 100644 --- a/lib/igt_aux.h +++ b/lib/igt_aux.h @@ -40,6 +40,8 @@ #include <i915/gem_submission.h> +#include "igt_core.h" + /* signal interrupt helpers */ #ifdef __linux__ # ifndef HAVE_GETTID @@ -212,26 +214,42 @@ void intel_require_files(uint64_t count); #define CHECK_RAM 0x1 #define CHECK_SWAP 0x2 -#define min(a, b) ({ \ - typeof(a) _a = (a); \ - typeof(b) _b = (b); \ - _a < _b ? _a : _b; \ -}) -#define max(a, b) ({ \ - typeof(a) _a = (a); \ - typeof(b) _b = (b); \ - _a > _b ? _a : _b; \ -}) +#define __typecheck(x, y) \ + (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) -#define clamp(x, min, max) ({ \ - typeof(min) _min = (min); \ - typeof(max) _max = (max); \ - typeof(x) _x = (x); \ - _x < _min ? _min : _x > _max ? _max : _x; \ +#define __cmp(x, y, op) ((x) op (y) ? (x) : (y)) + +#define __cmp_once(x, y, unique_x, unique_y, op) ({ \ + typeof(x) unique_x = (x); \ + typeof(y) unique_y = (y); \ + __cmp(unique_x, unique_y, op); \ }) +#define __is_constexpr(x) \ + (sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8))) + +#define __no_side_effects(x, y) \ + (__is_constexpr(x) && __is_constexpr(y)) + +#define __safe_cmp(x, y) \ + (__typecheck(x, y) && __no_side_effects(x, y)) + +#define __careful_cmp(x, y, op, prefix) \ + __builtin_choose_expr(__safe_cmp(x, y), \ + __cmp(x, y, op), \ + __cmp_once(x, y, igt_unique(igt_tokencat(prefix, __x)), igt_unique(igt_tokencat(prefix, __y)), op)) + +#define min(x, y) __careful_cmp(x, y, <, min) +#define max(x, y) __careful_cmp(x, y, >, max) + +#define clamp(val, lo, hi) min(max(val, lo), hi) + +#define min_t(t, x, y) __careful_cmp((typeof(t))x, (typeof(t))y, <, min_t) +#define max_t(t, x, y) __careful_cmp((typeof(t))x, (typeof(t))y, >, max_t) + #define igt_swap(a, b) do { \ typeof(a) _tmp = (a); \ + _Static_assert(__typecheck(a, b), "type mismatch for swap"); \ (a) = (b); \ (b) = _tmp; \ } while (0) diff --git a/lib/igt_fb.c b/lib/igt_fb.c index ea4d83ab736..fba835a0b8f 100644 --- a/lib/igt_fb.c +++ b/lib/igt_fb.c @@ -733,7 +733,7 @@ static uint32_t calc_plane_stride(struct igt_fb *fb, int plane) * tiled. But then that failure is expected. */ - stride = max(min_stride, 512); + stride = max(min_stride, 512u); stride = roundup_power_of_two(stride); return stride; @@ -747,7 +747,7 @@ static uint32_t calc_plane_stride(struct igt_fb *fb, int plane) /* * For amdgpu device with tiling mode */ - unsigned int tile_width, tile_height; + uint32_t tile_width, tile_height; igt_amd_fb_calculate_tile_dimension(fb->plane_bpp[plane], &tile_width, &tile_height); @@ -812,9 +812,9 @@ static uint64_t calc_plane_size(struct igt_fb *fb, int plane) if (fb->modifier != DRM_FORMAT_MOD_NONE && is_i915_device(fb->fd) && intel_display_ver(intel_get_drm_devid(fb->fd)) <= 3) { - uint64_t min_size = (uint64_t) fb->strides[plane] * + uint64_t size = (uint64_t) fb->strides[plane] * fb->plane_height[plane]; - uint64_t size; + uint64_t min_size = 1024 * 1024; /* Round the tiling up to the next power-of-two and the region * up to the next pot fence size so that this works on all @@ -824,10 +824,7 @@ static uint64_t calc_plane_size(struct igt_fb *fb, int plane) * tiled. But then that failure is expected. */ - size = max(min_size, 1024*1024); - size = roundup_power_of_two(size); - - return size; + return roundup_power_of_two(max(size, min_size)); } else if (fb->modifier != DRM_FORMAT_MOD_NONE && is_amdgpu_device(fb->fd)) { /* * For amdgpu device with tiling mode diff --git a/lib/intel_allocator.c b/lib/intel_allocator.c index 133176ed42e..eabff1f9a13 100644 --- a/lib/intel_allocator.c +++ b/lib/intel_allocator.c @@ -1088,7 +1088,7 @@ uint64_t __intel_allocator_alloc(uint64_t allocator_handle, uint32_t handle, struct alloc_resp resp; igt_assert((alignment & (alignment-1)) == 0); - req.alloc.alignment = max(alignment, 1 << 12); + req.alloc.alignment = max_t(uint64_t, alignment, 1 << 12); igt_assert(handle_request(&req, &resp) == 0); igt_assert(resp.response_type == RESP_ALLOC); diff --git a/lib/intel_allocator_random.c b/lib/intel_allocator_random.c index 9e31426179b..d22f8176705 100644 --- a/lib/intel_allocator_random.c +++ b/lib/intel_allocator_random.c @@ -180,7 +180,7 @@ intel_allocator_random_create(int fd, uint64_t start, uint64_t end) igt_assert(ial->priv); ialr->prng = (uint32_t) to_user_pointer(ial); - start = max(start, BIAS); + start = max_t(uint64_t, start, BIAS); igt_assert(start < end); ialr->start = start; ialr->end = end; diff --git a/lib/intel_allocator_reloc.c b/lib/intel_allocator_reloc.c index 1790e6c7975..ee3ad43f4a5 100644 --- a/lib/intel_allocator_reloc.c +++ b/lib/intel_allocator_reloc.c @@ -176,7 +176,7 @@ intel_allocator_reloc_create(int fd, uint64_t start, uint64_t end) igt_assert(ial->priv); ialr->prng = (uint32_t) to_user_pointer(ial); - start = max(start, BIAS); + start = max_t(uint64_t, start, BIAS); igt_assert(start < end); ialr->offset = ialr->start = start; ialr->end = end; diff --git a/runner/resultgen.c b/runner/resultgen.c index b74970a6e65..bccfca12a48 100644 --- a/runner/resultgen.c +++ b/runner/resultgen.c @@ -481,12 +481,15 @@ static int find_subtest_idx_limited(struct matches matches, if (line_len < 0) return -1; - for (k = first; k < last; k++) + for (k = first; k < last; k++) { + ptrdiff_t rem = bufend - matches.items[k].where; + if (matches.items[k].what == linekey && !memcmp(matches.items[k].where, full_line, - min(line_len, bufend - matches.items[k].where))) + min_t(ptrdiff_t, line_len, rem))) break; + } free(full_line); diff --git a/tests/i915/api_intel_bb.c b/tests/i915/api_intel_bb.c index 293720b4b3c..82943a34191 100644 --- a/tests/i915/api_intel_bb.c +++ b/tests/i915/api_intel_bb.c @@ -904,7 +904,7 @@ static int compare_bufs(struct intel_buf *buf1, struct intel_buf *buf2, return ret; } -#define LINELEN 76 +#define LINELEN 76ul static int dump_base64(const char *name, struct intel_buf *buf) { void *ptr; diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c index d9ff1981a71..3d094433b7b 100644 --- a/tests/i915/gem_eio.c +++ b/tests/i915/gem_eio.c @@ -489,7 +489,7 @@ static void test_inflight(int fd, unsigned int wait) max = gem_measure_ring_inflight(fd, -1, 0); igt_require(max > 1); - max = min(max - 1, ARRAY_SIZE(fence)); + max = min_t(max, max - 1, ARRAY_SIZE(fence)); igt_debug("Using %d inflight batches\n", max); for_each_ring(e, parent_fd) { @@ -558,7 +558,7 @@ static void test_inflight_suspend(int fd) max = gem_measure_ring_inflight(fd, -1, 0); igt_require(max > 1); - max = min(max - 1, ARRAY_SIZE(fence)); + max = min_t(max, max - 1, ARRAY_SIZE(fence)); igt_debug("Using %d inflight batches\n", max); fd = reopen_device(fd); diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c index c4611bd1ee2..68b95c869c9 100644 --- a/tests/i915/gem_exec_alignment.c +++ b/tests/i915/gem_exec_alignment.c @@ -166,7 +166,7 @@ naughty_child(int i915, int link, uint32_t shared, unsigned int flags) if (!gem_uses_full_ppgtt(i915)) gtt_size /= 2; /* We have to *share* our GTT! */ - ram_size = min(intel_get_total_ram_mb(), 4096); + ram_size = min_t(uint64_t, intel_get_total_ram_mb(), 4096); ram_size *= 1024 * 1024; count = min(gtt_size, ram_size) / 16384; @@ -376,7 +376,7 @@ setup_many(int i915, unsigned long *out) if (!gem_uses_full_ppgtt(i915)) gtt_size /= 2; /* We have to *share* our GTT! */ - ram_size = min(intel_get_total_ram_mb(), 4096); + ram_size = min_t(uint64_t, intel_get_total_ram_mb(), 4096); ram_size *= 1024 * 1024; count = min(gtt_size, ram_size) / 16384; diff --git a/tests/i915/gem_exec_capture.c b/tests/i915/gem_exec_capture.c index 19f3836e385..7e0a8b8addb 100644 --- a/tests/i915/gem_exec_capture.c +++ b/tests/i915/gem_exec_capture.c @@ -566,7 +566,7 @@ static void prioinv(int fd, int dir, const intel_ctx_t *ctx, gtt, ram); count = min(gtt, ram) / 4; - count = min(count, 256); /* Keep the duration within reason */ + count = min(count, 256ul); /* Keep the duration within reason */ igt_require(count > 1); intel_require_memory(count, size, CHECK_RAM); diff --git a/tests/i915/gem_exec_fair.c b/tests/i915/gem_exec_fair.c index ef5a450f6ca..89945d40e3c 100644 --- a/tests/i915/gem_exec_fair.c +++ b/tests/i915/gem_exec_fair.c @@ -605,7 +605,7 @@ static void fair_child(int i915, const intel_ctx_t *ctx, map = gem_mmap__device_coherent(i915, obj[0].handle, 0, 4096, PROT_WRITE); igt_assert(map[0]); - for (n = 1; n < min(count, 512); n++) { + for (n = 1; n < min(count, 512ul); n++) { igt_assert(map[n]); map[n - 1] = map[n] - map[n - 1]; } diff --git a/tests/i915/gem_stress.c b/tests/i915/gem_stress.c index 3e4d4907605..3765ab14bdb 100644 --- a/tests/i915/gem_stress.c +++ b/tests/i915/gem_stress.c @@ -769,7 +769,7 @@ static void init(void) if (options.num_buffers == 0) { tmp = gem_aperture_size(drm_fd); - tmp = min(256 * (1024 * 1024), tmp); + tmp = min(256 * 1024 * 1024u, tmp); num_buffers = 2 * tmp / options.scratch_buf_size / 3; num_buffers /= 2; igt_info("using %u buffers\n", num_buffers); diff --git a/tests/i915/gem_tiled_swapping.c b/tests/i915/gem_tiled_swapping.c index d33b76dbd5b..d66b6ca7f9b 100644 --- a/tests/i915/gem_tiled_swapping.c +++ b/tests/i915/gem_tiled_swapping.c @@ -67,7 +67,7 @@ IGT_TEST_DESCRIPTION("Exercise swizzle code for swapping."); static uint32_t current_tiling_mode; #define PAGE_SIZE 4096 -#define AVAIL_RAM 512 +#define AVAIL_RAM 512ul static uint32_t create_bo(int fd) @@ -183,7 +183,8 @@ igt_main /* lock RAM, leaving only 512MB available */ count = intel_get_total_ram_mb() - intel_get_avail_ram_mb(); count = max(count + 64, AVAIL_RAM); - lock_size = max(0, intel_get_total_ram_mb() - count); + count = intel_get_total_ram_mb() - count; + lock_size = max_t(long, 0, count); igt_info("Mlocking %zdMiB of %ld/%ldMiB\n", lock_size, (long)intel_get_avail_ram_mb(), diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c index 756bd6e4786..078c75c3947 100644 --- a/tests/i915/gem_userptr_blits.c +++ b/tests/i915/gem_userptr_blits.c @@ -1693,7 +1693,7 @@ static void test_forking_evictions(int fd, int size, int count, * processes meaning swapping will be triggered system * wide even if one process on it's own can't do it. */ - num_threads = min(sysconf(_SC_NPROCESSORS_ONLN) * 4, 12); + num_threads = min_t(int, sysconf(_SC_NPROCESSORS_ONLN) * 4, 12); trash_count /= num_threads; if (count > trash_count) count = trash_count; diff --git a/tests/i915/i915_pm_rc6_residency.c b/tests/i915/i915_pm_rc6_residency.c index 96a951406f5..cf9eae90278 100644 --- a/tests/i915/i915_pm_rc6_residency.c +++ b/tests/i915/i915_pm_rc6_residency.c @@ -345,7 +345,7 @@ static void bg_load(int i915, unsigned int flags, unsigned long *ctl) ctl[1]++; /* aim for ~1% busy */ - usleep(min(elapsed / 10, 50 * 1000)); + usleep(min_t(elapsed, elapsed / 10, 50 * 1000)); } while (!READ_ONCE(*ctl)); } diff --git a/tests/i915/kms_big_fb.c b/tests/i915/kms_big_fb.c index 308227c9113..8665903827d 100644 --- a/tests/i915/kms_big_fb.c +++ b/tests/i915/kms_big_fb.c @@ -400,9 +400,9 @@ static bool test_plane(data_t *data) static bool test_pipe(data_t *data) { + uint16_t width, height; drmModeModeInfo *mode; igt_plane_t *primary; - int width, height; bool ret = false; if (data->format == DRM_FORMAT_C8 && diff --git a/tests/i915/perf_pmu.c b/tests/i915/perf_pmu.c index 1214cda8c32..e9df0290dd7 100644 --- a/tests/i915/perf_pmu.c +++ b/tests/i915/perf_pmu.c @@ -1413,7 +1413,7 @@ static int target_num_interrupts(int i915) { const intel_ctx_cfg_t cfg = intel_ctx_cfg_all_physical(i915); - return min(gem_submission_measure(i915, &cfg, I915_EXEC_DEFAULT), 30); + return min(gem_submission_measure(i915, &cfg, I915_EXEC_DEFAULT), 30u); } static void diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c index bc0a1c81b46..9c0a91bf201 100644 --- a/tests/kms_atomic_transition.c +++ b/tests/kms_atomic_transition.c @@ -789,7 +789,7 @@ static void run_modeset_tests(data_t *data, int howmany, bool nonblocking, bool unsigned iter_max; igt_pipe_crc_t *pipe_crcs[IGT_MAX_PIPES] = { 0 }; igt_output_t *output; - unsigned width = 0, height = 0; + uint16_t width = 0, height = 0; for (i = 0; i < data->display.n_outputs; i++) igt_output_set_pipe(&data->display.outputs[i], PIPE_NONE); diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c index 1ab411cecfb..11926bbcfa8 100644 --- a/tests/kms_chamelium.c +++ b/tests/kms_chamelium.c @@ -2399,7 +2399,7 @@ static void test_display_planes_random(data_t *data, igt_output_count_plane_type(output, DRM_PLANE_TYPE_OVERLAY); /* Limit the number of planes to a reasonable scene. */ - overlay_planes_max = min(overlay_planes_max, 4); + overlay_planes_max = min(overlay_planes_max, 4u); overlay_planes_count = (rand() % overlay_planes_max) + 1; igt_debug("Using %d overlay planes\n", overlay_planes_count); diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c index e8002df2711..f2047173a34 100644 --- a/tests/kms_content_protection.c +++ b/tests/kms_content_protection.c @@ -703,9 +703,9 @@ static void test_content_protection_cleanup(void) static void create_fbs(void) { - igt_output_t *output; - int width = 0, height = 0; + uint16_t width = 0, height = 0; drmModeModeInfo *mode; + igt_output_t *output; for_each_connected_output(&data.display, output) { mode = igt_output_get_mode(output); diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c index d4feba327fd..11960dfd799 100644 --- a/tests/kms_invalid_mode.c +++ b/tests/kms_invalid_mode.c @@ -195,8 +195,8 @@ test_output(data_t *data) return 0; igt_create_fb(data->drm_fd, - max(mode.hdisplay, 64), - max(mode.vdisplay, 64), + max_t(uint16_t, mode.hdisplay, 64), + max_t(uint16_t, mode.vdisplay, 64), DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_NONE, &fb); diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c index b1dbc73a39b..97499508f1b 100644 --- a/tests/kms_multipipe_modeset.c +++ b/tests/kms_multipipe_modeset.c @@ -40,10 +40,11 @@ static void run_test(data_t *data, int valid_outputs) igt_pipe_crc_t *pipe_crcs[IGT_MAX_PIPES] = { 0 }; igt_crc_t ref_crcs[IGT_MAX_PIPES], new_crcs[IGT_MAX_PIPES]; igt_display_t *display = &data->display; - int width = 0, height = 0, i = 0; + uint16_t width = 0, height = 0; igt_pipe_t *pipe; igt_plane_t *plane; drmModeModeInfo *mode; + int i = 0; for_each_connected_output(display, output) { mode = igt_output_get_mode(output); diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c index 11401a6d00a..a7f4d22f91f 100644 --- a/tests/kms_rotation_crc.c +++ b/tests/kms_rotation_crc.c @@ -214,6 +214,11 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe, igt_pipe_crc_start(data->pipe_crc); } +#define TEST_WIDTH(km) \ + min_t((km)->hdisplay, (km)->hdisplay, TEST_MAX_WIDTH) +#define TEST_HEIGHT(km) \ + min_t((km)->vdisplay, (km)->vdisplay, TEST_MAX_HEIGHT) + static void prepare_fbs(data_t *data, igt_output_t *output, igt_plane_t *plane, enum rectangle_type rect, uint32_t format) { @@ -234,8 +239,8 @@ static void prepare_fbs(data_t *data, igt_output_t *output, w = mode->hdisplay; h = mode->vdisplay; } else { - w = min(TEST_MAX_WIDTH, mode->hdisplay); - h = min(TEST_MAX_HEIGHT, mode->vdisplay); + w = TEST_WIDTH(mode); + h = TEST_HEIGHT(mode); } min_w = 256; @@ -614,7 +619,7 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode, int c) { if (data->planepos[c].origo & p_right) { - p[c].x1 = (int32_t)(data->planepos[c].x * min(TEST_MAX_WIDTH, mode->hdisplay) + p[c].x1 = (int32_t)(data->planepos[c].x * TEST_WIDTH(mode) + mode->hdisplay); p[c].x1 &= ~3; /* @@ -625,17 +630,17 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode, */ p[c].x1 -= mode->hdisplay & 2; } else { - p[c].x1 = (int32_t)(data->planepos[c].x * min(TEST_MAX_WIDTH, mode->hdisplay)); + p[c].x1 = (int32_t)(data->planepos[c].x * TEST_WIDTH(mode)); p[c].x1 &= ~3; } if (data->planepos[c].origo & p_bottom) { - p[c].y1 = (int32_t)(data->planepos[c].y * min(TEST_MAX_HEIGHT, mode->vdisplay) + p[c].y1 = (int32_t)(data->planepos[c].y * TEST_HEIGHT(mode) + mode->vdisplay); p[c].y1 &= ~3; p[c].y1 -= mode->vdisplay & 2; } else { - p[c].y1 = (int32_t)(data->planepos[c].y * min(TEST_MAX_HEIGHT, mode->vdisplay)); + p[c].y1 = (int32_t)(data->planepos[c].y * TEST_HEIGHT(mode)); p[c].y1 &= ~3; } } @@ -698,8 +703,8 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe) igt_display_require_output(display); igt_display_commit2(display, COMMIT_ATOMIC); - used_w = min(TEST_MAX_WIDTH, mode->hdisplay); - used_h = min(TEST_MAX_HEIGHT, mode->vdisplay); + used_w = TEST_WIDTH(mode); + used_h = TEST_HEIGHT(mode); p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c index 80665204c68..d62251742a4 100644 --- a/tests/kms_setmode.c +++ b/tests/kms_setmode.c @@ -421,15 +421,8 @@ static int test_stealing(int fd, struct crtc_config *crtc, uint32_t *ids) return ret; } -static double frame_time(const drmModeModeInfo *kmode) -{ - return 1000.0 * kmode->htotal * kmode->vtotal / kmode->clock; -} - -static double line_time(const drmModeModeInfo *kmode) -{ - return 1000.0 * kmode->htotal / kmode->clock; -} +#define frame_time(km) (1000.0 * (km)->htotal * (km)->vtotal / (km)->clock) +#define line_time(km) (1000.0 * (km)->htotal / (km)->clock) static void check_timings(int crtc_idx, const drmModeModeInfo *kmode) { diff --git a/tests/sw_sync.c b/tests/sw_sync.c index d3d2bec15bb..cbd773fcb97 100644 --- a/tests/sw_sync.c +++ b/tests/sw_sync.c @@ -837,8 +837,9 @@ igt_main igt_fixture { igt_require_sw_sync(); multi_consumer_threads = - min(multi_consumer_threads, - sysconf(_SC_NPROCESSORS_ONLN)); + min_t(multi_consumer_threads, + multi_consumer_threads, + sysconf(_SC_NPROCESSORS_ONLN)); } igt_subtest("alloc_timeline") diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c index 625dc078752..b063af8469d 100644 --- a/tools/intel_vbt_decode.c +++ b/tools/intel_vbt_decode.c @@ -534,10 +534,11 @@ static void dump_child_devices(struct context *context, const uint8_t *devices, * initialized to zero. */ child = calloc(1, sizeof(*child)); + igt_assert(child); for (i = 0; i < child_dev_num; i++) { memcpy(child, devices + i * child_dev_size, - min(sizeof(*child), child_dev_size)); + min_t(child_dev_size, sizeof(*child), child_dev_size)); dump_child_device(context, child); } -- 2.33.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax 2021-10-05 22:29 ` [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax Ashutosh Dixit @ 2021-10-06 18:11 ` Zbigniew Kempczyński 2021-10-06 20:26 ` Zbigniew Kempczyński 1 sibling, 0 replies; 7+ messages in thread From: Zbigniew Kempczyński @ 2021-10-06 18:11 UTC (permalink / raw) To: Ashutosh Dixit; +Cc: igt-dev, Petri Latvala, Chris Wilson On Tue, Oct 05, 2021 at 03:29:35PM -0700, Ashutosh Dixit wrote: > From: Chris Wilson <chris@chris-wilson.co.uk> > > Add typechecking to the min/max macros and make their locals truly > unique-ish to reduce the risk of shadowing. > > v2: small bug fix, write also height coordinate on rotation > test. (jheikkil) > v3: Fix up a couple of other max/max_t instances (Ashutosh) > > Signed-off-by: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com> > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> > Signed-off-by: Chris Wilson <chris.p.wilson@intel.com> > --- > lib/i915/intel_memory_region.c | 9 ++---- > lib/i915/intel_memory_region.h | 2 +- > lib/igt_aux.h | 48 ++++++++++++++++++++---------- > lib/igt_fb.c | 13 ++++---- > lib/intel_allocator.c | 2 +- > lib/intel_allocator_random.c | 2 +- > lib/intel_allocator_reloc.c | 2 +- > runner/resultgen.c | 7 +++-- > tests/i915/api_intel_bb.c | 2 +- > tests/i915/gem_eio.c | 4 +-- > tests/i915/gem_exec_alignment.c | 4 +-- > tests/i915/gem_exec_capture.c | 2 +- > tests/i915/gem_exec_fair.c | 2 +- > tests/i915/gem_stress.c | 2 +- > tests/i915/gem_tiled_swapping.c | 5 ++-- > tests/i915/gem_userptr_blits.c | 2 +- > tests/i915/i915_pm_rc6_residency.c | 2 +- > tests/i915/kms_big_fb.c | 2 +- > tests/i915/perf_pmu.c | 2 +- > tests/kms_atomic_transition.c | 2 +- > tests/kms_chamelium.c | 2 +- > tests/kms_content_protection.c | 4 +-- > tests/kms_invalid_mode.c | 4 +-- > tests/kms_multipipe_modeset.c | 3 +- > tests/kms_rotation_crc.c | 21 ++++++++----- > tests/kms_setmode.c | 11 ++----- > tests/sw_sync.c | 5 ++-- > tools/intel_vbt_decode.c | 3 +- > 28 files changed, 93 insertions(+), 76 deletions(-) > > diff --git a/lib/i915/intel_memory_region.c b/lib/i915/intel_memory_region.c > index bc2f66dbff5..058b273dcf8 100644 > --- a/lib/i915/intel_memory_region.c > +++ b/lib/i915/intel_memory_region.c > @@ -146,19 +146,16 @@ out: > * > * Returns: Number of found lmem regions. > */ > -uint8_t gem_get_lmem_region_count(int fd) > +unsigned int gem_get_lmem_region_count(int fd) > { > struct drm_i915_query_memory_regions *query_info; > - uint8_t num_regions; > - uint8_t lmem_regions = 0; > + unsigned int lmem_regions = 0; > > query_info = gem_get_query_memory_regions(fd); > if (!query_info) > goto out; > > - num_regions = query_info->num_regions; > - > - for (int i = 0; i < num_regions; i++) { > + for (unsigned int i = 0; i < query_info->num_regions; i++) { > if (query_info->regions[i].region.memory_class == I915_MEMORY_CLASS_DEVICE) > lmem_regions += 1; > } > diff --git a/lib/i915/intel_memory_region.h b/lib/i915/intel_memory_region.h > index 024c76d3644..8b427b7e729 100644 > --- a/lib/i915/intel_memory_region.h > +++ b/lib/i915/intel_memory_region.h > @@ -58,7 +58,7 @@ uint32_t gem_get_batch_size(int fd, uint8_t mem_region_type); > > struct drm_i915_query_memory_regions *gem_get_query_memory_regions(int fd); > > -uint8_t gem_get_lmem_region_count(int fd); > +unsigned int gem_get_lmem_region_count(int fd); > > bool gem_has_lmem(int fd); Above changes in memory regions should be part of another patch as it not related to typechecking. > > diff --git a/lib/igt_aux.h b/lib/igt_aux.h > index bf57ccf50df..30b175d70d8 100644 > --- a/lib/igt_aux.h > +++ b/lib/igt_aux.h > @@ -40,6 +40,8 @@ > > #include <i915/gem_submission.h> > > +#include "igt_core.h" > + > /* signal interrupt helpers */ > #ifdef __linux__ > # ifndef HAVE_GETTID > @@ -212,26 +214,42 @@ void intel_require_files(uint64_t count); > #define CHECK_RAM 0x1 > #define CHECK_SWAP 0x2 > > -#define min(a, b) ({ \ > - typeof(a) _a = (a); \ > - typeof(b) _b = (b); \ > - _a < _b ? _a : _b; \ > -}) > -#define max(a, b) ({ \ > - typeof(a) _a = (a); \ > - typeof(b) _b = (b); \ > - _a > _b ? _a : _b; \ > -}) > +#define __typecheck(x, y) \ > + (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) > > -#define clamp(x, min, max) ({ \ > - typeof(min) _min = (min); \ > - typeof(max) _max = (max); \ > - typeof(x) _x = (x); \ > - _x < _min ? _min : _x > _max ? _max : _x; \ > +#define __cmp(x, y, op) ((x) op (y) ? (x) : (y)) > + > +#define __cmp_once(x, y, unique_x, unique_y, op) ({ \ > + typeof(x) unique_x = (x); \ > + typeof(y) unique_y = (y); \ > + __cmp(unique_x, unique_y, op); \ > }) > > +#define __is_constexpr(x) \ > + (sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8))) > + > +#define __no_side_effects(x, y) \ > + (__is_constexpr(x) && __is_constexpr(y)) > + > +#define __safe_cmp(x, y) \ > + (__typecheck(x, y) && __no_side_effects(x, y)) > + > +#define __careful_cmp(x, y, op, prefix) \ > + __builtin_choose_expr(__safe_cmp(x, y), \ > + __cmp(x, y, op), \ > + __cmp_once(x, y, igt_unique(igt_tokencat(prefix, __x)), igt_unique(igt_tokencat(prefix, __y)), op)) > + > +#define min(x, y) __careful_cmp(x, y, <, min) > +#define max(x, y) __careful_cmp(x, y, >, max) > + > +#define clamp(val, lo, hi) min(max(val, lo), hi) > + > +#define min_t(t, x, y) __careful_cmp((typeof(t))x, (typeof(t))y, <, min_t) > +#define max_t(t, x, y) __careful_cmp((typeof(t))x, (typeof(t))y, >, max_t) > + > #define igt_swap(a, b) do { \ > typeof(a) _tmp = (a); \ > + _Static_assert(__typecheck(a, b), "type mismatch for swap"); \ > (a) = (b); \ > (b) = _tmp; \ > } while (0) Transplanted from kernel, ok. __is_constexpr() is really mindblowing. > diff --git a/lib/igt_fb.c b/lib/igt_fb.c > index ea4d83ab736..fba835a0b8f 100644 > --- a/lib/igt_fb.c > +++ b/lib/igt_fb.c > @@ -733,7 +733,7 @@ static uint32_t calc_plane_stride(struct igt_fb *fb, int plane) > * tiled. But then that failure is expected. > */ > > - stride = max(min_stride, 512); > + stride = max(min_stride, 512u); > stride = roundup_power_of_two(stride); > > return stride; > @@ -747,7 +747,7 @@ static uint32_t calc_plane_stride(struct igt_fb *fb, int plane) > /* > * For amdgpu device with tiling mode > */ > - unsigned int tile_width, tile_height; > + uint32_t tile_width, tile_height; > > igt_amd_fb_calculate_tile_dimension(fb->plane_bpp[plane], > &tile_width, &tile_height); > @@ -812,9 +812,9 @@ static uint64_t calc_plane_size(struct igt_fb *fb, int plane) > if (fb->modifier != DRM_FORMAT_MOD_NONE && > is_i915_device(fb->fd) && > intel_display_ver(intel_get_drm_devid(fb->fd)) <= 3) { > - uint64_t min_size = (uint64_t) fb->strides[plane] * > + uint64_t size = (uint64_t) fb->strides[plane] * > fb->plane_height[plane]; > - uint64_t size; > + uint64_t min_size = 1024 * 1024; > > /* Round the tiling up to the next power-of-two and the region > * up to the next pot fence size so that this works on all > @@ -824,10 +824,7 @@ static uint64_t calc_plane_size(struct igt_fb *fb, int plane) > * tiled. But then that failure is expected. > */ > > - size = max(min_size, 1024*1024); > - size = roundup_power_of_two(size); > - > - return size; > + return roundup_power_of_two(max(size, min_size)); > } else if (fb->modifier != DRM_FORMAT_MOD_NONE && is_amdgpu_device(fb->fd)) { > /* > * For amdgpu device with tiling mode > diff --git a/lib/intel_allocator.c b/lib/intel_allocator.c > index 133176ed42e..eabff1f9a13 100644 > --- a/lib/intel_allocator.c > +++ b/lib/intel_allocator.c > @@ -1088,7 +1088,7 @@ uint64_t __intel_allocator_alloc(uint64_t allocator_handle, uint32_t handle, > struct alloc_resp resp; > > igt_assert((alignment & (alignment-1)) == 0); > - req.alloc.alignment = max(alignment, 1 << 12); > + req.alloc.alignment = max_t(uint64_t, alignment, 1 << 12); > > igt_assert(handle_request(&req, &resp) == 0); > igt_assert(resp.response_type == RESP_ALLOC); > diff --git a/lib/intel_allocator_random.c b/lib/intel_allocator_random.c > index 9e31426179b..d22f8176705 100644 > --- a/lib/intel_allocator_random.c > +++ b/lib/intel_allocator_random.c > @@ -180,7 +180,7 @@ intel_allocator_random_create(int fd, uint64_t start, uint64_t end) > igt_assert(ial->priv); > ialr->prng = (uint32_t) to_user_pointer(ial); > > - start = max(start, BIAS); > + start = max_t(uint64_t, start, BIAS); > igt_assert(start < end); > ialr->start = start; > ialr->end = end; > diff --git a/lib/intel_allocator_reloc.c b/lib/intel_allocator_reloc.c > index 1790e6c7975..ee3ad43f4a5 100644 > --- a/lib/intel_allocator_reloc.c > +++ b/lib/intel_allocator_reloc.c > @@ -176,7 +176,7 @@ intel_allocator_reloc_create(int fd, uint64_t start, uint64_t end) > igt_assert(ial->priv); > ialr->prng = (uint32_t) to_user_pointer(ial); > > - start = max(start, BIAS); > + start = max_t(uint64_t, start, BIAS); > igt_assert(start < end); > ialr->offset = ialr->start = start; > ialr->end = end; > diff --git a/runner/resultgen.c b/runner/resultgen.c > index b74970a6e65..bccfca12a48 100644 > --- a/runner/resultgen.c > +++ b/runner/resultgen.c > @@ -481,12 +481,15 @@ static int find_subtest_idx_limited(struct matches matches, > if (line_len < 0) > return -1; > > - for (k = first; k < last; k++) > + for (k = first; k < last; k++) { > + ptrdiff_t rem = bufend - matches.items[k].where; > + > if (matches.items[k].what == linekey && > !memcmp(matches.items[k].where, > full_line, > - min(line_len, bufend - matches.items[k].where))) > + min_t(ptrdiff_t, line_len, rem))) > break; > + } > > free(full_line); > > diff --git a/tests/i915/api_intel_bb.c b/tests/i915/api_intel_bb.c > index 293720b4b3c..82943a34191 100644 > --- a/tests/i915/api_intel_bb.c > +++ b/tests/i915/api_intel_bb.c > @@ -904,7 +904,7 @@ static int compare_bufs(struct intel_buf *buf1, struct intel_buf *buf2, > return ret; > } > > -#define LINELEN 76 > +#define LINELEN 76ul > static int dump_base64(const char *name, struct intel_buf *buf) > { > void *ptr; > diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c > index d9ff1981a71..3d094433b7b 100644 > --- a/tests/i915/gem_eio.c > +++ b/tests/i915/gem_eio.c > @@ -489,7 +489,7 @@ static void test_inflight(int fd, unsigned int wait) > > max = gem_measure_ring_inflight(fd, -1, 0); > igt_require(max > 1); > - max = min(max - 1, ARRAY_SIZE(fence)); > + max = min_t(max, max - 1, ARRAY_SIZE(fence)); > igt_debug("Using %d inflight batches\n", max); > > for_each_ring(e, parent_fd) { > @@ -558,7 +558,7 @@ static void test_inflight_suspend(int fd) > > max = gem_measure_ring_inflight(fd, -1, 0); > igt_require(max > 1); > - max = min(max - 1, ARRAY_SIZE(fence)); > + max = min_t(max, max - 1, ARRAY_SIZE(fence)); > igt_debug("Using %d inflight batches\n", max); > > fd = reopen_device(fd); > diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c > index c4611bd1ee2..68b95c869c9 100644 > --- a/tests/i915/gem_exec_alignment.c > +++ b/tests/i915/gem_exec_alignment.c > @@ -166,7 +166,7 @@ naughty_child(int i915, int link, uint32_t shared, unsigned int flags) > if (!gem_uses_full_ppgtt(i915)) > gtt_size /= 2; /* We have to *share* our GTT! */ > > - ram_size = min(intel_get_total_ram_mb(), 4096); > + ram_size = min_t(uint64_t, intel_get_total_ram_mb(), 4096); > ram_size *= 1024 * 1024; > > count = min(gtt_size, ram_size) / 16384; > @@ -376,7 +376,7 @@ setup_many(int i915, unsigned long *out) > if (!gem_uses_full_ppgtt(i915)) > gtt_size /= 2; /* We have to *share* our GTT! */ > > - ram_size = min(intel_get_total_ram_mb(), 4096); > + ram_size = min_t(uint64_t, intel_get_total_ram_mb(), 4096); > ram_size *= 1024 * 1024; > > count = min(gtt_size, ram_size) / 16384; > diff --git a/tests/i915/gem_exec_capture.c b/tests/i915/gem_exec_capture.c > index 19f3836e385..7e0a8b8addb 100644 > --- a/tests/i915/gem_exec_capture.c > +++ b/tests/i915/gem_exec_capture.c > @@ -566,7 +566,7 @@ static void prioinv(int fd, int dir, const intel_ctx_t *ctx, > gtt, ram); > > count = min(gtt, ram) / 4; > - count = min(count, 256); /* Keep the duration within reason */ > + count = min(count, 256ul); /* Keep the duration within reason */ > igt_require(count > 1); > > intel_require_memory(count, size, CHECK_RAM); > diff --git a/tests/i915/gem_exec_fair.c b/tests/i915/gem_exec_fair.c > index ef5a450f6ca..89945d40e3c 100644 > --- a/tests/i915/gem_exec_fair.c > +++ b/tests/i915/gem_exec_fair.c > @@ -605,7 +605,7 @@ static void fair_child(int i915, const intel_ctx_t *ctx, > map = gem_mmap__device_coherent(i915, obj[0].handle, > 0, 4096, PROT_WRITE); > igt_assert(map[0]); > - for (n = 1; n < min(count, 512); n++) { > + for (n = 1; n < min(count, 512ul); n++) { > igt_assert(map[n]); > map[n - 1] = map[n] - map[n - 1]; > } > diff --git a/tests/i915/gem_stress.c b/tests/i915/gem_stress.c > index 3e4d4907605..3765ab14bdb 100644 > --- a/tests/i915/gem_stress.c > +++ b/tests/i915/gem_stress.c > @@ -769,7 +769,7 @@ static void init(void) > > if (options.num_buffers == 0) { > tmp = gem_aperture_size(drm_fd); > - tmp = min(256 * (1024 * 1024), tmp); > + tmp = min(256 * 1024 * 1024u, tmp); > num_buffers = 2 * tmp / options.scratch_buf_size / 3; > num_buffers /= 2; > igt_info("using %u buffers\n", num_buffers); > diff --git a/tests/i915/gem_tiled_swapping.c b/tests/i915/gem_tiled_swapping.c > index d33b76dbd5b..d66b6ca7f9b 100644 > --- a/tests/i915/gem_tiled_swapping.c > +++ b/tests/i915/gem_tiled_swapping.c > @@ -67,7 +67,7 @@ IGT_TEST_DESCRIPTION("Exercise swizzle code for swapping."); > static uint32_t current_tiling_mode; > > #define PAGE_SIZE 4096 > -#define AVAIL_RAM 512 > +#define AVAIL_RAM 512ul > > static uint32_t > create_bo(int fd) > @@ -183,7 +183,8 @@ igt_main > /* lock RAM, leaving only 512MB available */ > count = intel_get_total_ram_mb() - intel_get_avail_ram_mb(); > count = max(count + 64, AVAIL_RAM); > - lock_size = max(0, intel_get_total_ram_mb() - count); > + count = intel_get_total_ram_mb() - count; > + lock_size = max_t(long, 0, count); > igt_info("Mlocking %zdMiB of %ld/%ldMiB\n", > lock_size, > (long)intel_get_avail_ram_mb(), > diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c > index 756bd6e4786..078c75c3947 100644 > --- a/tests/i915/gem_userptr_blits.c > +++ b/tests/i915/gem_userptr_blits.c > @@ -1693,7 +1693,7 @@ static void test_forking_evictions(int fd, int size, int count, > * processes meaning swapping will be triggered system > * wide even if one process on it's own can't do it. > */ > - num_threads = min(sysconf(_SC_NPROCESSORS_ONLN) * 4, 12); > + num_threads = min_t(int, sysconf(_SC_NPROCESSORS_ONLN) * 4, 12); > trash_count /= num_threads; > if (count > trash_count) > count = trash_count; > diff --git a/tests/i915/i915_pm_rc6_residency.c b/tests/i915/i915_pm_rc6_residency.c > index 96a951406f5..cf9eae90278 100644 > --- a/tests/i915/i915_pm_rc6_residency.c > +++ b/tests/i915/i915_pm_rc6_residency.c > @@ -345,7 +345,7 @@ static void bg_load(int i915, unsigned int flags, unsigned long *ctl) > ctl[1]++; > > /* aim for ~1% busy */ > - usleep(min(elapsed / 10, 50 * 1000)); > + usleep(min_t(elapsed, elapsed / 10, 50 * 1000)); > } while (!READ_ONCE(*ctl)); > } > > diff --git a/tests/i915/kms_big_fb.c b/tests/i915/kms_big_fb.c > index 308227c9113..8665903827d 100644 > --- a/tests/i915/kms_big_fb.c > +++ b/tests/i915/kms_big_fb.c > @@ -400,9 +400,9 @@ static bool test_plane(data_t *data) > > static bool test_pipe(data_t *data) > { > + uint16_t width, height; > drmModeModeInfo *mode; > igt_plane_t *primary; > - int width, height; > bool ret = false; > > if (data->format == DRM_FORMAT_C8 && > diff --git a/tests/i915/perf_pmu.c b/tests/i915/perf_pmu.c > index 1214cda8c32..e9df0290dd7 100644 > --- a/tests/i915/perf_pmu.c > +++ b/tests/i915/perf_pmu.c > @@ -1413,7 +1413,7 @@ static int target_num_interrupts(int i915) > { > const intel_ctx_cfg_t cfg = intel_ctx_cfg_all_physical(i915); > > - return min(gem_submission_measure(i915, &cfg, I915_EXEC_DEFAULT), 30); > + return min(gem_submission_measure(i915, &cfg, I915_EXEC_DEFAULT), 30u); > } > > static void > diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c > index bc0a1c81b46..9c0a91bf201 100644 > --- a/tests/kms_atomic_transition.c > +++ b/tests/kms_atomic_transition.c > @@ -789,7 +789,7 @@ static void run_modeset_tests(data_t *data, int howmany, bool nonblocking, bool > unsigned iter_max; > igt_pipe_crc_t *pipe_crcs[IGT_MAX_PIPES] = { 0 }; > igt_output_t *output; > - unsigned width = 0, height = 0; > + uint16_t width = 0, height = 0; > > for (i = 0; i < data->display.n_outputs; i++) > igt_output_set_pipe(&data->display.outputs[i], PIPE_NONE); > diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c > index 1ab411cecfb..11926bbcfa8 100644 > --- a/tests/kms_chamelium.c > +++ b/tests/kms_chamelium.c > @@ -2399,7 +2399,7 @@ static void test_display_planes_random(data_t *data, > igt_output_count_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > > /* Limit the number of planes to a reasonable scene. */ > - overlay_planes_max = min(overlay_planes_max, 4); > + overlay_planes_max = min(overlay_planes_max, 4u); > > overlay_planes_count = (rand() % overlay_planes_max) + 1; > igt_debug("Using %d overlay planes\n", overlay_planes_count); > diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c > index e8002df2711..f2047173a34 100644 > --- a/tests/kms_content_protection.c > +++ b/tests/kms_content_protection.c > @@ -703,9 +703,9 @@ static void test_content_protection_cleanup(void) > > static void create_fbs(void) > { > - igt_output_t *output; > - int width = 0, height = 0; > + uint16_t width = 0, height = 0; > drmModeModeInfo *mode; > + igt_output_t *output; > > for_each_connected_output(&data.display, output) { > mode = igt_output_get_mode(output); > diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c > index d4feba327fd..11960dfd799 100644 > --- a/tests/kms_invalid_mode.c > +++ b/tests/kms_invalid_mode.c > @@ -195,8 +195,8 @@ test_output(data_t *data) > return 0; > > igt_create_fb(data->drm_fd, > - max(mode.hdisplay, 64), > - max(mode.vdisplay, 64), > + max_t(uint16_t, mode.hdisplay, 64), > + max_t(uint16_t, mode.vdisplay, 64), > DRM_FORMAT_XRGB8888, > DRM_FORMAT_MOD_NONE, > &fb); > diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c > index b1dbc73a39b..97499508f1b 100644 > --- a/tests/kms_multipipe_modeset.c > +++ b/tests/kms_multipipe_modeset.c > @@ -40,10 +40,11 @@ static void run_test(data_t *data, int valid_outputs) > igt_pipe_crc_t *pipe_crcs[IGT_MAX_PIPES] = { 0 }; > igt_crc_t ref_crcs[IGT_MAX_PIPES], new_crcs[IGT_MAX_PIPES]; > igt_display_t *display = &data->display; > - int width = 0, height = 0, i = 0; > + uint16_t width = 0, height = 0; > igt_pipe_t *pipe; > igt_plane_t *plane; > drmModeModeInfo *mode; > + int i = 0; > > for_each_connected_output(display, output) { > mode = igt_output_get_mode(output); > diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c > index 11401a6d00a..a7f4d22f91f 100644 > --- a/tests/kms_rotation_crc.c > +++ b/tests/kms_rotation_crc.c > @@ -214,6 +214,11 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe, > igt_pipe_crc_start(data->pipe_crc); > } > > +#define TEST_WIDTH(km) \ > + min_t((km)->hdisplay, (km)->hdisplay, TEST_MAX_WIDTH) > +#define TEST_HEIGHT(km) \ > + min_t((km)->vdisplay, (km)->vdisplay, TEST_MAX_HEIGHT) > + > static void prepare_fbs(data_t *data, igt_output_t *output, > igt_plane_t *plane, enum rectangle_type rect, uint32_t format) > { > @@ -234,8 +239,8 @@ static void prepare_fbs(data_t *data, igt_output_t *output, > w = mode->hdisplay; > h = mode->vdisplay; > } else { > - w = min(TEST_MAX_WIDTH, mode->hdisplay); > - h = min(TEST_MAX_HEIGHT, mode->vdisplay); > + w = TEST_WIDTH(mode); > + h = TEST_HEIGHT(mode); > } > > min_w = 256; > @@ -614,7 +619,7 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode, > int c) > { > if (data->planepos[c].origo & p_right) { > - p[c].x1 = (int32_t)(data->planepos[c].x * min(TEST_MAX_WIDTH, mode->hdisplay) > + p[c].x1 = (int32_t)(data->planepos[c].x * TEST_WIDTH(mode) > + mode->hdisplay); > p[c].x1 &= ~3; > /* > @@ -625,17 +630,17 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode, > */ > p[c].x1 -= mode->hdisplay & 2; > } else { > - p[c].x1 = (int32_t)(data->planepos[c].x * min(TEST_MAX_WIDTH, mode->hdisplay)); > + p[c].x1 = (int32_t)(data->planepos[c].x * TEST_WIDTH(mode)); > p[c].x1 &= ~3; > } > > if (data->planepos[c].origo & p_bottom) { > - p[c].y1 = (int32_t)(data->planepos[c].y * min(TEST_MAX_HEIGHT, mode->vdisplay) > + p[c].y1 = (int32_t)(data->planepos[c].y * TEST_HEIGHT(mode) > + mode->vdisplay); > p[c].y1 &= ~3; > p[c].y1 -= mode->vdisplay & 2; > } else { > - p[c].y1 = (int32_t)(data->planepos[c].y * min(TEST_MAX_HEIGHT, mode->vdisplay)); > + p[c].y1 = (int32_t)(data->planepos[c].y * TEST_HEIGHT(mode)); > p[c].y1 &= ~3; > } > } > @@ -698,8 +703,8 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe) > igt_display_require_output(display); > igt_display_commit2(display, COMMIT_ATOMIC); > > - used_w = min(TEST_MAX_WIDTH, mode->hdisplay); > - used_h = min(TEST_MAX_HEIGHT, mode->vdisplay); > + used_w = TEST_WIDTH(mode); > + used_h = TEST_HEIGHT(mode); > > p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c > index 80665204c68..d62251742a4 100644 > --- a/tests/kms_setmode.c > +++ b/tests/kms_setmode.c > @@ -421,15 +421,8 @@ static int test_stealing(int fd, struct crtc_config *crtc, uint32_t *ids) > return ret; > } > > -static double frame_time(const drmModeModeInfo *kmode) > -{ > - return 1000.0 * kmode->htotal * kmode->vtotal / kmode->clock; > -} > - > -static double line_time(const drmModeModeInfo *kmode) > -{ > - return 1000.0 * kmode->htotal / kmode->clock; > -} > +#define frame_time(km) (1000.0 * (km)->htotal * (km)->vtotal / (km)->clock) > +#define line_time(km) (1000.0 * (km)->htotal / (km)->clock) These changes in kms_setmode also don't match typechecking patch subject and should be part of another patch IMO. Other changes with typechecking looks ok. I would split this patch to three - memory regions changes, change function to definitions in kms_setmode and typechecking. -- Zbigniew > > static void check_timings(int crtc_idx, const drmModeModeInfo *kmode) > { > diff --git a/tests/sw_sync.c b/tests/sw_sync.c > index d3d2bec15bb..cbd773fcb97 100644 > --- a/tests/sw_sync.c > +++ b/tests/sw_sync.c > @@ -837,8 +837,9 @@ igt_main > igt_fixture { > igt_require_sw_sync(); > multi_consumer_threads = > - min(multi_consumer_threads, > - sysconf(_SC_NPROCESSORS_ONLN)); > + min_t(multi_consumer_threads, > + multi_consumer_threads, > + sysconf(_SC_NPROCESSORS_ONLN)); > } > > igt_subtest("alloc_timeline") > diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c > index 625dc078752..b063af8469d 100644 > --- a/tools/intel_vbt_decode.c > +++ b/tools/intel_vbt_decode.c > @@ -534,10 +534,11 @@ static void dump_child_devices(struct context *context, const uint8_t *devices, > * initialized to zero. > */ > child = calloc(1, sizeof(*child)); > + igt_assert(child); > > for (i = 0; i < child_dev_num; i++) { > memcpy(child, devices + i * child_dev_size, > - min(sizeof(*child), child_dev_size)); > + min_t(child_dev_size, sizeof(*child), child_dev_size)); > > dump_child_device(context, child); > } > -- > 2.33.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax 2021-10-05 22:29 ` [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax Ashutosh Dixit 2021-10-06 18:11 ` Zbigniew Kempczyński @ 2021-10-06 20:26 ` Zbigniew Kempczyński 1 sibling, 0 replies; 7+ messages in thread From: Zbigniew Kempczyński @ 2021-10-06 20:26 UTC (permalink / raw) To: Ashutosh Dixit; +Cc: igt-dev, Petri Latvala, Chris Wilson On Tue, Oct 05, 2021 at 03:29:35PM -0700, Ashutosh Dixit wrote: > From: Chris Wilson <chris@chris-wilson.co.uk> > > Add typechecking to the min/max macros and make their locals truly > unique-ish to reduce the risk of shadowing. > > v2: small bug fix, write also height coordinate on rotation > test. (jheikkil) > v3: Fix up a couple of other max/max_t instances (Ashutosh) Ok, I've discussed with Chris - we can take this patch as a whole without splitting. So: Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> -- Zbigniew > > Signed-off-by: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com> > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> > Signed-off-by: Chris Wilson <chris.p.wilson@intel.com> > --- > lib/i915/intel_memory_region.c | 9 ++---- > lib/i915/intel_memory_region.h | 2 +- > lib/igt_aux.h | 48 ++++++++++++++++++++---------- > lib/igt_fb.c | 13 ++++---- > lib/intel_allocator.c | 2 +- > lib/intel_allocator_random.c | 2 +- > lib/intel_allocator_reloc.c | 2 +- > runner/resultgen.c | 7 +++-- > tests/i915/api_intel_bb.c | 2 +- > tests/i915/gem_eio.c | 4 +-- > tests/i915/gem_exec_alignment.c | 4 +-- > tests/i915/gem_exec_capture.c | 2 +- > tests/i915/gem_exec_fair.c | 2 +- > tests/i915/gem_stress.c | 2 +- > tests/i915/gem_tiled_swapping.c | 5 ++-- > tests/i915/gem_userptr_blits.c | 2 +- > tests/i915/i915_pm_rc6_residency.c | 2 +- > tests/i915/kms_big_fb.c | 2 +- > tests/i915/perf_pmu.c | 2 +- > tests/kms_atomic_transition.c | 2 +- > tests/kms_chamelium.c | 2 +- > tests/kms_content_protection.c | 4 +-- > tests/kms_invalid_mode.c | 4 +-- > tests/kms_multipipe_modeset.c | 3 +- > tests/kms_rotation_crc.c | 21 ++++++++----- > tests/kms_setmode.c | 11 ++----- > tests/sw_sync.c | 5 ++-- > tools/intel_vbt_decode.c | 3 +- > 28 files changed, 93 insertions(+), 76 deletions(-) > > diff --git a/lib/i915/intel_memory_region.c b/lib/i915/intel_memory_region.c > index bc2f66dbff5..058b273dcf8 100644 > --- a/lib/i915/intel_memory_region.c > +++ b/lib/i915/intel_memory_region.c > @@ -146,19 +146,16 @@ out: > * > * Returns: Number of found lmem regions. > */ > -uint8_t gem_get_lmem_region_count(int fd) > +unsigned int gem_get_lmem_region_count(int fd) > { > struct drm_i915_query_memory_regions *query_info; > - uint8_t num_regions; > - uint8_t lmem_regions = 0; > + unsigned int lmem_regions = 0; > > query_info = gem_get_query_memory_regions(fd); > if (!query_info) > goto out; > > - num_regions = query_info->num_regions; > - > - for (int i = 0; i < num_regions; i++) { > + for (unsigned int i = 0; i < query_info->num_regions; i++) { > if (query_info->regions[i].region.memory_class == I915_MEMORY_CLASS_DEVICE) > lmem_regions += 1; > } > diff --git a/lib/i915/intel_memory_region.h b/lib/i915/intel_memory_region.h > index 024c76d3644..8b427b7e729 100644 > --- a/lib/i915/intel_memory_region.h > +++ b/lib/i915/intel_memory_region.h > @@ -58,7 +58,7 @@ uint32_t gem_get_batch_size(int fd, uint8_t mem_region_type); > > struct drm_i915_query_memory_regions *gem_get_query_memory_regions(int fd); > > -uint8_t gem_get_lmem_region_count(int fd); > +unsigned int gem_get_lmem_region_count(int fd); > > bool gem_has_lmem(int fd); > > diff --git a/lib/igt_aux.h b/lib/igt_aux.h > index bf57ccf50df..30b175d70d8 100644 > --- a/lib/igt_aux.h > +++ b/lib/igt_aux.h > @@ -40,6 +40,8 @@ > > #include <i915/gem_submission.h> > > +#include "igt_core.h" > + > /* signal interrupt helpers */ > #ifdef __linux__ > # ifndef HAVE_GETTID > @@ -212,26 +214,42 @@ void intel_require_files(uint64_t count); > #define CHECK_RAM 0x1 > #define CHECK_SWAP 0x2 > > -#define min(a, b) ({ \ > - typeof(a) _a = (a); \ > - typeof(b) _b = (b); \ > - _a < _b ? _a : _b; \ > -}) > -#define max(a, b) ({ \ > - typeof(a) _a = (a); \ > - typeof(b) _b = (b); \ > - _a > _b ? _a : _b; \ > -}) > +#define __typecheck(x, y) \ > + (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) > > -#define clamp(x, min, max) ({ \ > - typeof(min) _min = (min); \ > - typeof(max) _max = (max); \ > - typeof(x) _x = (x); \ > - _x < _min ? _min : _x > _max ? _max : _x; \ > +#define __cmp(x, y, op) ((x) op (y) ? (x) : (y)) > + > +#define __cmp_once(x, y, unique_x, unique_y, op) ({ \ > + typeof(x) unique_x = (x); \ > + typeof(y) unique_y = (y); \ > + __cmp(unique_x, unique_y, op); \ > }) > > +#define __is_constexpr(x) \ > + (sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8))) > + > +#define __no_side_effects(x, y) \ > + (__is_constexpr(x) && __is_constexpr(y)) > + > +#define __safe_cmp(x, y) \ > + (__typecheck(x, y) && __no_side_effects(x, y)) > + > +#define __careful_cmp(x, y, op, prefix) \ > + __builtin_choose_expr(__safe_cmp(x, y), \ > + __cmp(x, y, op), \ > + __cmp_once(x, y, igt_unique(igt_tokencat(prefix, __x)), igt_unique(igt_tokencat(prefix, __y)), op)) > + > +#define min(x, y) __careful_cmp(x, y, <, min) > +#define max(x, y) __careful_cmp(x, y, >, max) > + > +#define clamp(val, lo, hi) min(max(val, lo), hi) > + > +#define min_t(t, x, y) __careful_cmp((typeof(t))x, (typeof(t))y, <, min_t) > +#define max_t(t, x, y) __careful_cmp((typeof(t))x, (typeof(t))y, >, max_t) > + > #define igt_swap(a, b) do { \ > typeof(a) _tmp = (a); \ > + _Static_assert(__typecheck(a, b), "type mismatch for swap"); \ > (a) = (b); \ > (b) = _tmp; \ > } while (0) > diff --git a/lib/igt_fb.c b/lib/igt_fb.c > index ea4d83ab736..fba835a0b8f 100644 > --- a/lib/igt_fb.c > +++ b/lib/igt_fb.c > @@ -733,7 +733,7 @@ static uint32_t calc_plane_stride(struct igt_fb *fb, int plane) > * tiled. But then that failure is expected. > */ > > - stride = max(min_stride, 512); > + stride = max(min_stride, 512u); > stride = roundup_power_of_two(stride); > > return stride; > @@ -747,7 +747,7 @@ static uint32_t calc_plane_stride(struct igt_fb *fb, int plane) > /* > * For amdgpu device with tiling mode > */ > - unsigned int tile_width, tile_height; > + uint32_t tile_width, tile_height; > > igt_amd_fb_calculate_tile_dimension(fb->plane_bpp[plane], > &tile_width, &tile_height); > @@ -812,9 +812,9 @@ static uint64_t calc_plane_size(struct igt_fb *fb, int plane) > if (fb->modifier != DRM_FORMAT_MOD_NONE && > is_i915_device(fb->fd) && > intel_display_ver(intel_get_drm_devid(fb->fd)) <= 3) { > - uint64_t min_size = (uint64_t) fb->strides[plane] * > + uint64_t size = (uint64_t) fb->strides[plane] * > fb->plane_height[plane]; > - uint64_t size; > + uint64_t min_size = 1024 * 1024; > > /* Round the tiling up to the next power-of-two and the region > * up to the next pot fence size so that this works on all > @@ -824,10 +824,7 @@ static uint64_t calc_plane_size(struct igt_fb *fb, int plane) > * tiled. But then that failure is expected. > */ > > - size = max(min_size, 1024*1024); > - size = roundup_power_of_two(size); > - > - return size; > + return roundup_power_of_two(max(size, min_size)); > } else if (fb->modifier != DRM_FORMAT_MOD_NONE && is_amdgpu_device(fb->fd)) { > /* > * For amdgpu device with tiling mode > diff --git a/lib/intel_allocator.c b/lib/intel_allocator.c > index 133176ed42e..eabff1f9a13 100644 > --- a/lib/intel_allocator.c > +++ b/lib/intel_allocator.c > @@ -1088,7 +1088,7 @@ uint64_t __intel_allocator_alloc(uint64_t allocator_handle, uint32_t handle, > struct alloc_resp resp; > > igt_assert((alignment & (alignment-1)) == 0); > - req.alloc.alignment = max(alignment, 1 << 12); > + req.alloc.alignment = max_t(uint64_t, alignment, 1 << 12); > > igt_assert(handle_request(&req, &resp) == 0); > igt_assert(resp.response_type == RESP_ALLOC); > diff --git a/lib/intel_allocator_random.c b/lib/intel_allocator_random.c > index 9e31426179b..d22f8176705 100644 > --- a/lib/intel_allocator_random.c > +++ b/lib/intel_allocator_random.c > @@ -180,7 +180,7 @@ intel_allocator_random_create(int fd, uint64_t start, uint64_t end) > igt_assert(ial->priv); > ialr->prng = (uint32_t) to_user_pointer(ial); > > - start = max(start, BIAS); > + start = max_t(uint64_t, start, BIAS); > igt_assert(start < end); > ialr->start = start; > ialr->end = end; > diff --git a/lib/intel_allocator_reloc.c b/lib/intel_allocator_reloc.c > index 1790e6c7975..ee3ad43f4a5 100644 > --- a/lib/intel_allocator_reloc.c > +++ b/lib/intel_allocator_reloc.c > @@ -176,7 +176,7 @@ intel_allocator_reloc_create(int fd, uint64_t start, uint64_t end) > igt_assert(ial->priv); > ialr->prng = (uint32_t) to_user_pointer(ial); > > - start = max(start, BIAS); > + start = max_t(uint64_t, start, BIAS); > igt_assert(start < end); > ialr->offset = ialr->start = start; > ialr->end = end; > diff --git a/runner/resultgen.c b/runner/resultgen.c > index b74970a6e65..bccfca12a48 100644 > --- a/runner/resultgen.c > +++ b/runner/resultgen.c > @@ -481,12 +481,15 @@ static int find_subtest_idx_limited(struct matches matches, > if (line_len < 0) > return -1; > > - for (k = first; k < last; k++) > + for (k = first; k < last; k++) { > + ptrdiff_t rem = bufend - matches.items[k].where; > + > if (matches.items[k].what == linekey && > !memcmp(matches.items[k].where, > full_line, > - min(line_len, bufend - matches.items[k].where))) > + min_t(ptrdiff_t, line_len, rem))) > break; > + } > > free(full_line); > > diff --git a/tests/i915/api_intel_bb.c b/tests/i915/api_intel_bb.c > index 293720b4b3c..82943a34191 100644 > --- a/tests/i915/api_intel_bb.c > +++ b/tests/i915/api_intel_bb.c > @@ -904,7 +904,7 @@ static int compare_bufs(struct intel_buf *buf1, struct intel_buf *buf2, > return ret; > } > > -#define LINELEN 76 > +#define LINELEN 76ul > static int dump_base64(const char *name, struct intel_buf *buf) > { > void *ptr; > diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c > index d9ff1981a71..3d094433b7b 100644 > --- a/tests/i915/gem_eio.c > +++ b/tests/i915/gem_eio.c > @@ -489,7 +489,7 @@ static void test_inflight(int fd, unsigned int wait) > > max = gem_measure_ring_inflight(fd, -1, 0); > igt_require(max > 1); > - max = min(max - 1, ARRAY_SIZE(fence)); > + max = min_t(max, max - 1, ARRAY_SIZE(fence)); > igt_debug("Using %d inflight batches\n", max); > > for_each_ring(e, parent_fd) { > @@ -558,7 +558,7 @@ static void test_inflight_suspend(int fd) > > max = gem_measure_ring_inflight(fd, -1, 0); > igt_require(max > 1); > - max = min(max - 1, ARRAY_SIZE(fence)); > + max = min_t(max, max - 1, ARRAY_SIZE(fence)); > igt_debug("Using %d inflight batches\n", max); > > fd = reopen_device(fd); > diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c > index c4611bd1ee2..68b95c869c9 100644 > --- a/tests/i915/gem_exec_alignment.c > +++ b/tests/i915/gem_exec_alignment.c > @@ -166,7 +166,7 @@ naughty_child(int i915, int link, uint32_t shared, unsigned int flags) > if (!gem_uses_full_ppgtt(i915)) > gtt_size /= 2; /* We have to *share* our GTT! */ > > - ram_size = min(intel_get_total_ram_mb(), 4096); > + ram_size = min_t(uint64_t, intel_get_total_ram_mb(), 4096); > ram_size *= 1024 * 1024; > > count = min(gtt_size, ram_size) / 16384; > @@ -376,7 +376,7 @@ setup_many(int i915, unsigned long *out) > if (!gem_uses_full_ppgtt(i915)) > gtt_size /= 2; /* We have to *share* our GTT! */ > > - ram_size = min(intel_get_total_ram_mb(), 4096); > + ram_size = min_t(uint64_t, intel_get_total_ram_mb(), 4096); > ram_size *= 1024 * 1024; > > count = min(gtt_size, ram_size) / 16384; > diff --git a/tests/i915/gem_exec_capture.c b/tests/i915/gem_exec_capture.c > index 19f3836e385..7e0a8b8addb 100644 > --- a/tests/i915/gem_exec_capture.c > +++ b/tests/i915/gem_exec_capture.c > @@ -566,7 +566,7 @@ static void prioinv(int fd, int dir, const intel_ctx_t *ctx, > gtt, ram); > > count = min(gtt, ram) / 4; > - count = min(count, 256); /* Keep the duration within reason */ > + count = min(count, 256ul); /* Keep the duration within reason */ > igt_require(count > 1); > > intel_require_memory(count, size, CHECK_RAM); > diff --git a/tests/i915/gem_exec_fair.c b/tests/i915/gem_exec_fair.c > index ef5a450f6ca..89945d40e3c 100644 > --- a/tests/i915/gem_exec_fair.c > +++ b/tests/i915/gem_exec_fair.c > @@ -605,7 +605,7 @@ static void fair_child(int i915, const intel_ctx_t *ctx, > map = gem_mmap__device_coherent(i915, obj[0].handle, > 0, 4096, PROT_WRITE); > igt_assert(map[0]); > - for (n = 1; n < min(count, 512); n++) { > + for (n = 1; n < min(count, 512ul); n++) { > igt_assert(map[n]); > map[n - 1] = map[n] - map[n - 1]; > } > diff --git a/tests/i915/gem_stress.c b/tests/i915/gem_stress.c > index 3e4d4907605..3765ab14bdb 100644 > --- a/tests/i915/gem_stress.c > +++ b/tests/i915/gem_stress.c > @@ -769,7 +769,7 @@ static void init(void) > > if (options.num_buffers == 0) { > tmp = gem_aperture_size(drm_fd); > - tmp = min(256 * (1024 * 1024), tmp); > + tmp = min(256 * 1024 * 1024u, tmp); > num_buffers = 2 * tmp / options.scratch_buf_size / 3; > num_buffers /= 2; > igt_info("using %u buffers\n", num_buffers); > diff --git a/tests/i915/gem_tiled_swapping.c b/tests/i915/gem_tiled_swapping.c > index d33b76dbd5b..d66b6ca7f9b 100644 > --- a/tests/i915/gem_tiled_swapping.c > +++ b/tests/i915/gem_tiled_swapping.c > @@ -67,7 +67,7 @@ IGT_TEST_DESCRIPTION("Exercise swizzle code for swapping."); > static uint32_t current_tiling_mode; > > #define PAGE_SIZE 4096 > -#define AVAIL_RAM 512 > +#define AVAIL_RAM 512ul > > static uint32_t > create_bo(int fd) > @@ -183,7 +183,8 @@ igt_main > /* lock RAM, leaving only 512MB available */ > count = intel_get_total_ram_mb() - intel_get_avail_ram_mb(); > count = max(count + 64, AVAIL_RAM); > - lock_size = max(0, intel_get_total_ram_mb() - count); > + count = intel_get_total_ram_mb() - count; > + lock_size = max_t(long, 0, count); > igt_info("Mlocking %zdMiB of %ld/%ldMiB\n", > lock_size, > (long)intel_get_avail_ram_mb(), > diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c > index 756bd6e4786..078c75c3947 100644 > --- a/tests/i915/gem_userptr_blits.c > +++ b/tests/i915/gem_userptr_blits.c > @@ -1693,7 +1693,7 @@ static void test_forking_evictions(int fd, int size, int count, > * processes meaning swapping will be triggered system > * wide even if one process on it's own can't do it. > */ > - num_threads = min(sysconf(_SC_NPROCESSORS_ONLN) * 4, 12); > + num_threads = min_t(int, sysconf(_SC_NPROCESSORS_ONLN) * 4, 12); > trash_count /= num_threads; > if (count > trash_count) > count = trash_count; > diff --git a/tests/i915/i915_pm_rc6_residency.c b/tests/i915/i915_pm_rc6_residency.c > index 96a951406f5..cf9eae90278 100644 > --- a/tests/i915/i915_pm_rc6_residency.c > +++ b/tests/i915/i915_pm_rc6_residency.c > @@ -345,7 +345,7 @@ static void bg_load(int i915, unsigned int flags, unsigned long *ctl) > ctl[1]++; > > /* aim for ~1% busy */ > - usleep(min(elapsed / 10, 50 * 1000)); > + usleep(min_t(elapsed, elapsed / 10, 50 * 1000)); > } while (!READ_ONCE(*ctl)); > } > > diff --git a/tests/i915/kms_big_fb.c b/tests/i915/kms_big_fb.c > index 308227c9113..8665903827d 100644 > --- a/tests/i915/kms_big_fb.c > +++ b/tests/i915/kms_big_fb.c > @@ -400,9 +400,9 @@ static bool test_plane(data_t *data) > > static bool test_pipe(data_t *data) > { > + uint16_t width, height; > drmModeModeInfo *mode; > igt_plane_t *primary; > - int width, height; > bool ret = false; > > if (data->format == DRM_FORMAT_C8 && > diff --git a/tests/i915/perf_pmu.c b/tests/i915/perf_pmu.c > index 1214cda8c32..e9df0290dd7 100644 > --- a/tests/i915/perf_pmu.c > +++ b/tests/i915/perf_pmu.c > @@ -1413,7 +1413,7 @@ static int target_num_interrupts(int i915) > { > const intel_ctx_cfg_t cfg = intel_ctx_cfg_all_physical(i915); > > - return min(gem_submission_measure(i915, &cfg, I915_EXEC_DEFAULT), 30); > + return min(gem_submission_measure(i915, &cfg, I915_EXEC_DEFAULT), 30u); > } > > static void > diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c > index bc0a1c81b46..9c0a91bf201 100644 > --- a/tests/kms_atomic_transition.c > +++ b/tests/kms_atomic_transition.c > @@ -789,7 +789,7 @@ static void run_modeset_tests(data_t *data, int howmany, bool nonblocking, bool > unsigned iter_max; > igt_pipe_crc_t *pipe_crcs[IGT_MAX_PIPES] = { 0 }; > igt_output_t *output; > - unsigned width = 0, height = 0; > + uint16_t width = 0, height = 0; > > for (i = 0; i < data->display.n_outputs; i++) > igt_output_set_pipe(&data->display.outputs[i], PIPE_NONE); > diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c > index 1ab411cecfb..11926bbcfa8 100644 > --- a/tests/kms_chamelium.c > +++ b/tests/kms_chamelium.c > @@ -2399,7 +2399,7 @@ static void test_display_planes_random(data_t *data, > igt_output_count_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > > /* Limit the number of planes to a reasonable scene. */ > - overlay_planes_max = min(overlay_planes_max, 4); > + overlay_planes_max = min(overlay_planes_max, 4u); > > overlay_planes_count = (rand() % overlay_planes_max) + 1; > igt_debug("Using %d overlay planes\n", overlay_planes_count); > diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c > index e8002df2711..f2047173a34 100644 > --- a/tests/kms_content_protection.c > +++ b/tests/kms_content_protection.c > @@ -703,9 +703,9 @@ static void test_content_protection_cleanup(void) > > static void create_fbs(void) > { > - igt_output_t *output; > - int width = 0, height = 0; > + uint16_t width = 0, height = 0; > drmModeModeInfo *mode; > + igt_output_t *output; > > for_each_connected_output(&data.display, output) { > mode = igt_output_get_mode(output); > diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c > index d4feba327fd..11960dfd799 100644 > --- a/tests/kms_invalid_mode.c > +++ b/tests/kms_invalid_mode.c > @@ -195,8 +195,8 @@ test_output(data_t *data) > return 0; > > igt_create_fb(data->drm_fd, > - max(mode.hdisplay, 64), > - max(mode.vdisplay, 64), > + max_t(uint16_t, mode.hdisplay, 64), > + max_t(uint16_t, mode.vdisplay, 64), > DRM_FORMAT_XRGB8888, > DRM_FORMAT_MOD_NONE, > &fb); > diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c > index b1dbc73a39b..97499508f1b 100644 > --- a/tests/kms_multipipe_modeset.c > +++ b/tests/kms_multipipe_modeset.c > @@ -40,10 +40,11 @@ static void run_test(data_t *data, int valid_outputs) > igt_pipe_crc_t *pipe_crcs[IGT_MAX_PIPES] = { 0 }; > igt_crc_t ref_crcs[IGT_MAX_PIPES], new_crcs[IGT_MAX_PIPES]; > igt_display_t *display = &data->display; > - int width = 0, height = 0, i = 0; > + uint16_t width = 0, height = 0; > igt_pipe_t *pipe; > igt_plane_t *plane; > drmModeModeInfo *mode; > + int i = 0; > > for_each_connected_output(display, output) { > mode = igt_output_get_mode(output); > diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c > index 11401a6d00a..a7f4d22f91f 100644 > --- a/tests/kms_rotation_crc.c > +++ b/tests/kms_rotation_crc.c > @@ -214,6 +214,11 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe, > igt_pipe_crc_start(data->pipe_crc); > } > > +#define TEST_WIDTH(km) \ > + min_t((km)->hdisplay, (km)->hdisplay, TEST_MAX_WIDTH) > +#define TEST_HEIGHT(km) \ > + min_t((km)->vdisplay, (km)->vdisplay, TEST_MAX_HEIGHT) > + > static void prepare_fbs(data_t *data, igt_output_t *output, > igt_plane_t *plane, enum rectangle_type rect, uint32_t format) > { > @@ -234,8 +239,8 @@ static void prepare_fbs(data_t *data, igt_output_t *output, > w = mode->hdisplay; > h = mode->vdisplay; > } else { > - w = min(TEST_MAX_WIDTH, mode->hdisplay); > - h = min(TEST_MAX_HEIGHT, mode->vdisplay); > + w = TEST_WIDTH(mode); > + h = TEST_HEIGHT(mode); > } > > min_w = 256; > @@ -614,7 +619,7 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode, > int c) > { > if (data->planepos[c].origo & p_right) { > - p[c].x1 = (int32_t)(data->planepos[c].x * min(TEST_MAX_WIDTH, mode->hdisplay) > + p[c].x1 = (int32_t)(data->planepos[c].x * TEST_WIDTH(mode) > + mode->hdisplay); > p[c].x1 &= ~3; > /* > @@ -625,17 +630,17 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode, > */ > p[c].x1 -= mode->hdisplay & 2; > } else { > - p[c].x1 = (int32_t)(data->planepos[c].x * min(TEST_MAX_WIDTH, mode->hdisplay)); > + p[c].x1 = (int32_t)(data->planepos[c].x * TEST_WIDTH(mode)); > p[c].x1 &= ~3; > } > > if (data->planepos[c].origo & p_bottom) { > - p[c].y1 = (int32_t)(data->planepos[c].y * min(TEST_MAX_HEIGHT, mode->vdisplay) > + p[c].y1 = (int32_t)(data->planepos[c].y * TEST_HEIGHT(mode) > + mode->vdisplay); > p[c].y1 &= ~3; > p[c].y1 -= mode->vdisplay & 2; > } else { > - p[c].y1 = (int32_t)(data->planepos[c].y * min(TEST_MAX_HEIGHT, mode->vdisplay)); > + p[c].y1 = (int32_t)(data->planepos[c].y * TEST_HEIGHT(mode)); > p[c].y1 &= ~3; > } > } > @@ -698,8 +703,8 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe) > igt_display_require_output(display); > igt_display_commit2(display, COMMIT_ATOMIC); > > - used_w = min(TEST_MAX_WIDTH, mode->hdisplay); > - used_h = min(TEST_MAX_HEIGHT, mode->vdisplay); > + used_w = TEST_WIDTH(mode); > + used_h = TEST_HEIGHT(mode); > > p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c > index 80665204c68..d62251742a4 100644 > --- a/tests/kms_setmode.c > +++ b/tests/kms_setmode.c > @@ -421,15 +421,8 @@ static int test_stealing(int fd, struct crtc_config *crtc, uint32_t *ids) > return ret; > } > > -static double frame_time(const drmModeModeInfo *kmode) > -{ > - return 1000.0 * kmode->htotal * kmode->vtotal / kmode->clock; > -} > - > -static double line_time(const drmModeModeInfo *kmode) > -{ > - return 1000.0 * kmode->htotal / kmode->clock; > -} > +#define frame_time(km) (1000.0 * (km)->htotal * (km)->vtotal / (km)->clock) > +#define line_time(km) (1000.0 * (km)->htotal / (km)->clock) > > static void check_timings(int crtc_idx, const drmModeModeInfo *kmode) > { > diff --git a/tests/sw_sync.c b/tests/sw_sync.c > index d3d2bec15bb..cbd773fcb97 100644 > --- a/tests/sw_sync.c > +++ b/tests/sw_sync.c > @@ -837,8 +837,9 @@ igt_main > igt_fixture { > igt_require_sw_sync(); > multi_consumer_threads = > - min(multi_consumer_threads, > - sysconf(_SC_NPROCESSORS_ONLN)); > + min_t(multi_consumer_threads, > + multi_consumer_threads, > + sysconf(_SC_NPROCESSORS_ONLN)); > } > > igt_subtest("alloc_timeline") > diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c > index 625dc078752..b063af8469d 100644 > --- a/tools/intel_vbt_decode.c > +++ b/tools/intel_vbt_decode.c > @@ -534,10 +534,11 @@ static void dump_child_devices(struct context *context, const uint8_t *devices, > * initialized to zero. > */ > child = calloc(1, sizeof(*child)); > + igt_assert(child); > > for (i = 0; i < child_dev_num; i++) { > memcpy(child, devices + i * child_dev_size, > - min(sizeof(*child), child_dev_size)); > + min_t(child_dev_size, sizeof(*child), child_dev_size)); > > dump_child_device(context, child); > } > -- > 2.33.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Refactor construction of unique tokens 2021-10-05 22:29 [igt-dev] [PATCH i-g-t 1/2] lib: Refactor construction of unique tokens Ashutosh Dixit 2021-10-05 22:29 ` [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax Ashutosh Dixit @ 2021-10-05 23:16 ` Patchwork 2021-10-06 3:46 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork 2021-10-06 8:01 ` [igt-dev] [PATCH i-g-t 1/2] " Zbigniew Kempczyński 3 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2021-10-05 23:16 UTC (permalink / raw) To: Ashutosh Dixit; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 2907 bytes --] == Series Details == Series: series starting with [i-g-t,1/2] lib: Refactor construction of unique tokens URL : https://patchwork.freedesktop.org/series/95485/ State : success == Summary == CI Bug Log - changes from CI_DRM_10685 -> IGTPW_6291 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/index.html Known issues ------------ Here are the changes found in IGTPW_6291 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_suspend@basic-s0: - fi-cfl-8109u: [PASS][1] -> [INCOMPLETE][2] ([i915#155]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/fi-cfl-8109u/igt@gem_exec_suspend@basic-s0.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/fi-cfl-8109u/igt@gem_exec_suspend@basic-s0.html #### Possible fixes #### * igt@core_hotunplug@unbind-rebind: - fi-tgl-u2: [INCOMPLETE][3] -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/fi-tgl-u2/igt@core_hotunplug@unbind-rebind.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/fi-tgl-u2/igt@core_hotunplug@unbind-rebind.html * igt@gem_exec_suspend@basic-s3: - fi-tgl-u2: [FAIL][5] ([i915#1888]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/fi-tgl-u2/igt@gem_exec_suspend@basic-s3.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/fi-tgl-u2/igt@gem_exec_suspend@basic-s3.html * igt@kms_frontbuffer_tracking@basic: - fi-cml-u2: [DMESG-WARN][7] ([i915#95]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/fi-cml-u2/igt@kms_frontbuffer_tracking@basic.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/fi-cml-u2/igt@kms_frontbuffer_tracking@basic.html [i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155 [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (41 -> 21) ------------------------------ Missing (20): fi-kbl-soraka fi-ilk-m540 bat-dg1-6 fi-bsw-n3050 fi-hsw-4200u fi-glk-dsi fi-icl-u2 fi-bwr-2160 fi-apl-guc fi-snb-2520m fi-ctg-p8600 fi-tgl-1115g4 fi-bsw-cyan bat-adlp-4 fi-ivb-3770 fi-icl-y fi-bsw-kefka fi-bsw-nick bat-jsl-1 fi-kbl-r Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_6232 -> IGTPW_6291 CI-20190529: 20190529 CI_DRM_10685: 36c3656c997b07f326d6b967efb1b75e01713773 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_6291: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/index.html IGT_6232: effad6af5678be711a2c3e58e182319de784de54 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/index.html [-- Attachment #2: Type: text/html, Size: 3590 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for series starting with [i-g-t,1/2] lib: Refactor construction of unique tokens 2021-10-05 22:29 [igt-dev] [PATCH i-g-t 1/2] lib: Refactor construction of unique tokens Ashutosh Dixit 2021-10-05 22:29 ` [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax Ashutosh Dixit 2021-10-05 23:16 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Refactor construction of unique tokens Patchwork @ 2021-10-06 3:46 ` Patchwork 2021-10-06 8:01 ` [igt-dev] [PATCH i-g-t 1/2] " Zbigniew Kempczyński 3 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2021-10-06 3:46 UTC (permalink / raw) To: Ashutosh Dixit; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 30294 bytes --] == Series Details == Series: series starting with [i-g-t,1/2] lib: Refactor construction of unique tokens URL : https://patchwork.freedesktop.org/series/95485/ State : failure == Summary == CI Bug Log - changes from CI_DRM_10685_full -> IGTPW_6291_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_6291_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_6291_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/index.html Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_6291_full: ### IGT changes ### #### Possible regressions #### * igt@kms_writeback@writeback-invalid-parameters: - shard-tglb: NOTRUN -> [SKIP][1] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb3/igt@kms_writeback@writeback-invalid-parameters.html - shard-iclb: NOTRUN -> [SKIP][2] [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb3/igt@kms_writeback@writeback-invalid-parameters.html #### Warnings #### * igt@kms_writeback@writeback-check-output: - shard-iclb: [SKIP][3] ([i915#2437]) -> [SKIP][4] +2 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-iclb1/igt@kms_writeback@writeback-check-output.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb3/igt@kms_writeback@writeback-check-output.html * igt@kms_writeback@writeback-fb-id: - shard-tglb: [SKIP][5] ([i915#2437]) -> [SKIP][6] +2 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-tglb5/igt@kms_writeback@writeback-fb-id.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb3/igt@kms_writeback@writeback-fb-id.html Known issues ------------ Here are the changes found in IGTPW_6291_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@feature_discovery@display-2x: - shard-tglb: NOTRUN -> [SKIP][7] ([i915#1839]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb3/igt@feature_discovery@display-2x.html * igt@gem_ctx_persistence@legacy-engines-mixed: - shard-snb: NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#1099]) +4 similar issues [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-snb2/igt@gem_ctx_persistence@legacy-engines-mixed.html * igt@gem_exec_fair@basic-none-share@rcs0: - shard-iclb: [PASS][9] -> [FAIL][10] ([i915#2842]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-iclb6/igt@gem_exec_fair@basic-none-share@rcs0.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb3/igt@gem_exec_fair@basic-none-share@rcs0.html - shard-glk: [PASS][11] -> [FAIL][12] ([i915#2842]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-glk2/igt@gem_exec_fair@basic-none-share@rcs0.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk3/igt@gem_exec_fair@basic-none-share@rcs0.html * igt@gem_exec_fair@basic-none@rcs0: - shard-kbl: [PASS][13] -> [FAIL][14] ([i915#2842]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-kbl3/igt@gem_exec_fair@basic-none@rcs0.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl3/igt@gem_exec_fair@basic-none@rcs0.html * igt@gem_exec_fair@basic-throttle@rcs0: - shard-glk: NOTRUN -> [FAIL][15] ([i915#2842]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk3/igt@gem_exec_fair@basic-throttle@rcs0.html * igt@gem_exec_whisper@basic-queues-forked-all: - shard-glk: [PASS][16] -> [DMESG-WARN][17] ([i915#118] / [i915#95]) +1 similar issue [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-glk8/igt@gem_exec_whisper@basic-queues-forked-all.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk2/igt@gem_exec_whisper@basic-queues-forked-all.html * igt@gem_huc_copy@huc-copy: - shard-apl: NOTRUN -> [SKIP][18] ([fdo#109271] / [i915#2190]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl6/igt@gem_huc_copy@huc-copy.html * igt@gem_media_vme: - shard-tglb: NOTRUN -> [SKIP][19] ([i915#284]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb1/igt@gem_media_vme.html * igt@gem_render_copy@linear-to-vebox-y-tiled: - shard-iclb: NOTRUN -> [SKIP][20] ([i915#768]) +1 similar issue [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb7/igt@gem_render_copy@linear-to-vebox-y-tiled.html * igt@gem_softpin@evict-snoop: - shard-iclb: NOTRUN -> [SKIP][21] ([fdo#109312]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb3/igt@gem_softpin@evict-snoop.html - shard-tglb: NOTRUN -> [SKIP][22] ([fdo#109312]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb3/igt@gem_softpin@evict-snoop.html * igt@gem_userptr_blits@dmabuf-sync: - shard-kbl: NOTRUN -> [SKIP][23] ([fdo#109271] / [i915#3323]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl7/igt@gem_userptr_blits@dmabuf-sync.html - shard-iclb: NOTRUN -> [SKIP][24] ([i915#3323]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb2/igt@gem_userptr_blits@dmabuf-sync.html - shard-apl: NOTRUN -> [SKIP][25] ([fdo#109271] / [i915#3323]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl1/igt@gem_userptr_blits@dmabuf-sync.html - shard-glk: NOTRUN -> [SKIP][26] ([fdo#109271] / [i915#3323]) [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk7/igt@gem_userptr_blits@dmabuf-sync.html - shard-tglb: NOTRUN -> [SKIP][27] ([i915#3323]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb1/igt@gem_userptr_blits@dmabuf-sync.html * igt@gem_userptr_blits@readonly-pwrite-unsync: - shard-tglb: NOTRUN -> [SKIP][28] ([i915#3297]) [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb1/igt@gem_userptr_blits@readonly-pwrite-unsync.html - shard-iclb: NOTRUN -> [SKIP][29] ([i915#3297]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb1/igt@gem_userptr_blits@readonly-pwrite-unsync.html * igt@gem_userptr_blits@vma-merge: - shard-snb: NOTRUN -> [FAIL][30] ([i915#2724]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-snb2/igt@gem_userptr_blits@vma-merge.html * igt@gem_workarounds@suspend-resume-fd: - shard-kbl: NOTRUN -> [DMESG-WARN][31] ([i915#180]) [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl6/igt@gem_workarounds@suspend-resume-fd.html * igt@gen3_render_tiledy_blits: - shard-tglb: NOTRUN -> [SKIP][32] ([fdo#109289]) +3 similar issues [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb7/igt@gen3_render_tiledy_blits.html * igt@gen7_exec_parse@basic-allowed: - shard-iclb: NOTRUN -> [SKIP][33] ([fdo#109289]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb5/igt@gen7_exec_parse@basic-allowed.html * igt@gen9_exec_parse@bb-secure: - shard-tglb: NOTRUN -> [SKIP][34] ([i915#2856]) +1 similar issue [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb8/igt@gen9_exec_parse@bb-secure.html * igt@i915_pm_lpsp@screens-disabled: - shard-tglb: NOTRUN -> [SKIP][35] ([i915#1902]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb3/igt@i915_pm_lpsp@screens-disabled.html * igt@i915_pm_rc6_residency@media-rc6-accuracy: - shard-tglb: NOTRUN -> [SKIP][36] ([fdo#109289] / [fdo#111719]) [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb6/igt@i915_pm_rc6_residency@media-rc6-accuracy.html * igt@i915_pm_rc6_residency@rc6-idle: - shard-tglb: NOTRUN -> [WARN][37] ([i915#2681] / [i915#2684]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb1/igt@i915_pm_rc6_residency@rc6-idle.html - shard-iclb: NOTRUN -> [WARN][38] ([i915#2684]) [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb2/igt@i915_pm_rc6_residency@rc6-idle.html * igt@i915_pm_rpm@pc8-residency: - shard-tglb: NOTRUN -> [SKIP][39] ([fdo#109506] / [i915#2411]) [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb6/igt@i915_pm_rpm@pc8-residency.html * igt@i915_selftest@live@gt_lrc: - shard-tglb: NOTRUN -> [DMESG-FAIL][40] ([i915#2373]) [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb5/igt@i915_selftest@live@gt_lrc.html * igt@i915_selftest@live@gt_pm: - shard-tglb: NOTRUN -> [DMESG-FAIL][41] ([i915#1759] / [i915#2291]) [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb5/igt@i915_selftest@live@gt_pm.html * igt@i915_selftest@live@hangcheck: - shard-snb: NOTRUN -> [INCOMPLETE][42] ([i915#3921]) [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-snb6/igt@i915_selftest@live@hangcheck.html * igt@kms_addfb_basic@invalid-smem-bo-on-discrete: - shard-tglb: NOTRUN -> [SKIP][43] ([i915#3826]) [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb6/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html - shard-iclb: NOTRUN -> [SKIP][44] ([i915#3826]) [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb6/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html * igt@kms_big_fb@linear-64bpp-rotate-270: - shard-tglb: NOTRUN -> [SKIP][45] ([fdo#111614]) [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb8/igt@kms_big_fb@linear-64bpp-rotate-270.html * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip: - shard-apl: NOTRUN -> [SKIP][46] ([fdo#109271] / [i915#3777]) +3 similar issues [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip.html * igt@kms_big_fb@yf-tiled-32bpp-rotate-270: - shard-iclb: [PASS][47] -> [DMESG-FAIL][48] ([i915#1226]) [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-iclb1/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb4/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html * igt@kms_big_fb@yf-tiled-8bpp-rotate-270: - shard-iclb: NOTRUN -> [SKIP][49] ([fdo#110723]) [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb5/igt@kms_big_fb@yf-tiled-8bpp-rotate-270.html * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip: - shard-kbl: NOTRUN -> [SKIP][50] ([fdo#109271] / [i915#3777]) [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0: - shard-apl: NOTRUN -> [SKIP][51] ([fdo#109271]) +295 similar issues [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0.html * igt@kms_big_joiner@2x-modeset: - shard-iclb: NOTRUN -> [SKIP][52] ([i915#2705]) [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb2/igt@kms_big_joiner@2x-modeset.html - shard-tglb: NOTRUN -> [SKIP][53] ([i915#2705]) [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb1/igt@kms_big_joiner@2x-modeset.html * igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_rc_ccs_cc: - shard-iclb: NOTRUN -> [SKIP][54] ([fdo#109278] / [i915#3886]) +2 similar issues [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb3/igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_rc_ccs_cc.html * igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_mc_ccs: - shard-tglb: NOTRUN -> [SKIP][55] ([i915#3689] / [i915#3886]) +4 similar issues [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb5/igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs: - shard-kbl: NOTRUN -> [SKIP][56] ([fdo#109271] / [i915#3886]) +7 similar issues [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl7/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc: - shard-apl: NOTRUN -> [SKIP][57] ([fdo#109271] / [i915#3886]) +15 similar issues [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl2/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc.html * igt@kms_ccs@pipe-c-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc: - shard-glk: NOTRUN -> [SKIP][58] ([fdo#109271] / [i915#3886]) +1 similar issue [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk5/igt@kms_ccs@pipe-c-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc.html * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs: - shard-tglb: NOTRUN -> [SKIP][59] ([i915#3689]) +9 similar issues [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb2/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs.html * igt@kms_cdclk@plane-scaling: - shard-tglb: NOTRUN -> [SKIP][60] ([i915#3742]) [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb2/igt@kms_cdclk@plane-scaling.html * igt@kms_chamelium@hdmi-hpd-storm: - shard-kbl: NOTRUN -> [SKIP][61] ([fdo#109271] / [fdo#111827]) +13 similar issues [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl7/igt@kms_chamelium@hdmi-hpd-storm.html * igt@kms_chamelium@vga-hpd: - shard-apl: NOTRUN -> [SKIP][62] ([fdo#109271] / [fdo#111827]) +19 similar issues [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl1/igt@kms_chamelium@vga-hpd.html * igt@kms_chamelium@vga-hpd-without-ddc: - shard-snb: NOTRUN -> [SKIP][63] ([fdo#109271] / [fdo#111827]) +15 similar issues [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-snb6/igt@kms_chamelium@vga-hpd-without-ddc.html * igt@kms_color@pipe-a-gamma: - shard-tglb: [PASS][64] -> [FAIL][65] ([i915#1149]) [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-tglb8/igt@kms_color@pipe-a-gamma.html [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb2/igt@kms_color@pipe-a-gamma.html * igt@kms_color_chamelium@pipe-a-ctm-0-75: - shard-iclb: NOTRUN -> [SKIP][66] ([fdo#109284] / [fdo#111827]) +1 similar issue [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb5/igt@kms_color_chamelium@pipe-a-ctm-0-75.html * igt@kms_color_chamelium@pipe-c-ctm-0-5: - shard-glk: NOTRUN -> [SKIP][67] ([fdo#109271] / [fdo#111827]) +6 similar issues [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk6/igt@kms_color_chamelium@pipe-c-ctm-0-5.html * igt@kms_color_chamelium@pipe-d-ctm-blue-to-red: - shard-iclb: NOTRUN -> [SKIP][68] ([fdo#109278] / [fdo#109284] / [fdo#111827]) [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb2/igt@kms_color_chamelium@pipe-d-ctm-blue-to-red.html * igt@kms_color_chamelium@pipe-d-ctm-red-to-blue: - shard-tglb: NOTRUN -> [SKIP][69] ([fdo#109284] / [fdo#111827]) +10 similar issues [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb5/igt@kms_color_chamelium@pipe-d-ctm-red-to-blue.html * igt@kms_concurrent@pipe-a: - shard-tglb: NOTRUN -> [FAIL][70] ([i915#1385]) [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb3/igt@kms_concurrent@pipe-a.html * igt@kms_content_protection@srm: - shard-kbl: NOTRUN -> [TIMEOUT][71] ([i915#1319]) [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl6/igt@kms_content_protection@srm.html * igt@kms_content_protection@uevent: - shard-kbl: NOTRUN -> [FAIL][72] ([i915#2105]) [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl7/igt@kms_content_protection@uevent.html * igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque: - shard-iclb: [PASS][73] -> [FAIL][74] ([i915#3444]) [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-iclb8/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb6/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html - shard-apl: [PASS][75] -> [FAIL][76] ([i915#3444]) [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-apl8/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl6/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html - shard-glk: [PASS][77] -> [FAIL][78] ([i915#3444]) [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-glk7/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk6/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html - shard-tglb: [PASS][79] -> [FAIL][80] ([i915#2124] / [i915#4024]) [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-tglb6/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb2/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html - shard-snb: [PASS][81] -> [FAIL][82] ([i915#4024]) [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-snb5/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-snb6/igt@kms_cursor_crc@pipe-a-cursor-alpha-opaque.html * igt@kms_cursor_crc@pipe-b-cursor-32x10-random: - shard-tglb: NOTRUN -> [SKIP][83] ([i915#3359]) +3 similar issues [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb6/igt@kms_cursor_crc@pipe-b-cursor-32x10-random.html * igt@kms_cursor_crc@pipe-b-cursor-512x512-rapid-movement: - shard-iclb: NOTRUN -> [SKIP][84] ([fdo#109278] / [fdo#109279]) +1 similar issue [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb4/igt@kms_cursor_crc@pipe-b-cursor-512x512-rapid-movement.html * igt@kms_cursor_crc@pipe-b-cursor-suspend: - shard-apl: [PASS][85] -> [DMESG-WARN][86] ([i915#180]) [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-apl8/igt@kms_cursor_crc@pipe-b-cursor-suspend.html [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl3/igt@kms_cursor_crc@pipe-b-cursor-suspend.html * igt@kms_cursor_crc@pipe-c-cursor-32x32-onscreen: - shard-tglb: NOTRUN -> [SKIP][87] ([i915#3319]) +1 similar issue [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb7/igt@kms_cursor_crc@pipe-c-cursor-32x32-onscreen.html * igt@kms_cursor_crc@pipe-d-cursor-512x170-offscreen: - shard-tglb: NOTRUN -> [SKIP][88] ([fdo#109279] / [i915#3359]) +4 similar issues [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb5/igt@kms_cursor_crc@pipe-d-cursor-512x170-offscreen.html * igt@kms_cursor_crc@pipe-d-cursor-suspend: - shard-tglb: [PASS][89] -> [INCOMPLETE][90] ([i915#4211]) [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-tglb2/igt@kms_cursor_crc@pipe-d-cursor-suspend.html [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb7/igt@kms_cursor_crc@pipe-d-cursor-suspend.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic: - shard-tglb: NOTRUN -> [SKIP][91] ([i915#4103]) [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic: - shard-iclb: NOTRUN -> [SKIP][92] ([fdo#109274] / [fdo#109278]) [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb4/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html * igt@kms_cursor_legacy@pipe-d-torture-bo: - shard-apl: NOTRUN -> [SKIP][93] ([fdo#109271] / [i915#533]) +1 similar issue [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl1/igt@kms_cursor_legacy@pipe-d-torture-bo.html - shard-glk: NOTRUN -> [SKIP][94] ([fdo#109271] / [i915#533]) +1 similar issue [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk4/igt@kms_cursor_legacy@pipe-d-torture-bo.html * igt@kms_flip@2x-plain-flip-interruptible: - shard-iclb: NOTRUN -> [SKIP][95] ([fdo#109274]) +1 similar issue [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb3/igt@kms_flip@2x-plain-flip-interruptible.html * igt@kms_flip@flip-vs-expired-vblank@c-dp1: - shard-apl: NOTRUN -> [FAIL][96] ([i915#79]) [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl3/igt@kms_flip@flip-vs-expired-vblank@c-dp1.html * igt@kms_flip@flip-vs-suspend@c-dp1: - shard-kbl: [PASS][97] -> [DMESG-WARN][98] ([i915#180]) +11 similar issues [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-kbl7/igt@kms_flip@flip-vs-suspend@c-dp1.html [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl1/igt@kms_flip@flip-vs-suspend@c-dp1.html - shard-apl: NOTRUN -> [DMESG-WARN][99] ([i915#180]) +1 similar issue [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl8/igt@kms_flip@flip-vs-suspend@c-dp1.html * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs: - shard-apl: NOTRUN -> [SKIP][100] ([fdo#109271] / [i915#2672]) [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs: - shard-kbl: NOTRUN -> [SKIP][101] ([fdo#109271] / [i915#2672]) [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt: - shard-iclb: NOTRUN -> [SKIP][102] ([fdo#109280]) +14 similar issues [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt: - shard-tglb: NOTRUN -> [SKIP][103] ([fdo#111825]) +41 similar issues [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff: - shard-snb: NOTRUN -> [SKIP][104] ([fdo#109271]) +370 similar issues [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-snb5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render: - shard-glk: NOTRUN -> [SKIP][105] ([fdo#109271]) +71 similar issues [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render.html * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-wc: - shard-kbl: NOTRUN -> [SKIP][106] ([fdo#109271]) +146 similar issues [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl7/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-wc.html * igt@kms_hdr@static-toggle: - shard-tglb: NOTRUN -> [SKIP][107] ([i915#1187]) [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb5/igt@kms_hdr@static-toggle.html * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes: - shard-tglb: [PASS][108] -> [INCOMPLETE][109] ([i915#456]) [108]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-tglb5/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes.html [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb7/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes.html * igt@kms_plane_alpha_blend@pipe-c-alpha-basic: - shard-apl: NOTRUN -> [FAIL][110] ([fdo#108145] / [i915#265]) +3 similar issues [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl1/igt@kms_plane_alpha_blend@pipe-c-alpha-basic.html * igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb: - shard-glk: NOTRUN -> [FAIL][111] ([fdo#108145] / [i915#265]) [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk1/igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb.html * igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb: - shard-apl: NOTRUN -> [FAIL][112] ([i915#265]) [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl1/igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb.html * igt@kms_plane_alpha_blend@pipe-d-constant-alpha-max: - shard-iclb: NOTRUN -> [SKIP][113] ([fdo#109278]) +13 similar issues [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb2/igt@kms_plane_alpha_blend@pipe-d-constant-alpha-max.html * igt@kms_plane_lowres@pipe-a-tiling-none: - shard-tglb: NOTRUN -> [SKIP][114] ([i915#3536]) +2 similar issues [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb6/igt@kms_plane_lowres@pipe-a-tiling-none.html * igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-c-scaler-with-clipping-clamping: - shard-apl: NOTRUN -> [SKIP][115] ([fdo#109271] / [i915#2733]) [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl3/igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-c-scaler-with-clipping-clamping.html * igt@kms_psr2_sf@cursor-plane-update-sf: - shard-tglb: NOTRUN -> [SKIP][116] ([i915#2920]) +2 similar issues [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb2/igt@kms_psr2_sf@cursor-plane-update-sf.html * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3: - shard-iclb: NOTRUN -> [SKIP][117] ([i915#658]) [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb7/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3.html - shard-kbl: NOTRUN -> [SKIP][118] ([fdo#109271] / [i915#658]) +3 similar issues [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl3/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3.html * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-4: - shard-apl: NOTRUN -> [SKIP][119] ([fdo#109271] / [i915#658]) +7 similar issues [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl1/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-4.html * igt@kms_psr2_su@frontbuffer: - shard-iclb: [PASS][120] -> [SKIP][121] ([fdo#109642] / [fdo#111068] / [i915#658]) [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-iclb2/igt@kms_psr2_su@frontbuffer.html [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb3/igt@kms_psr2_su@frontbuffer.html * igt@kms_psr2_su@page_flip: - shard-glk: NOTRUN -> [SKIP][122] ([fdo#109271] / [i915#658]) +1 similar issue [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-glk8/igt@kms_psr2_su@page_flip.html * igt@kms_psr@psr2_cursor_mmap_gtt: - shard-tglb: NOTRUN -> [FAIL][123] ([i915#132] / [i915#3467]) [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb3/igt@kms_psr@psr2_cursor_mmap_gtt.html * igt@kms_psr@psr2_sprite_blt: - shard-iclb: [PASS][124] -> [SKIP][125] ([fdo#109441]) +1 similar issue [124]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb8/igt@kms_psr@psr2_sprite_blt.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0: - shard-tglb: NOTRUN -> [SKIP][126] ([fdo#111615]) +7 similar issues [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html * igt@kms_sysfs_edid_timing: - shard-apl: [PASS][127] -> [FAIL][128] ([IGT#2]) [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-apl3/igt@kms_sysfs_edid_timing.html [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-apl2/igt@kms_sysfs_edid_timing.html - shard-kbl: [PASS][129] -> [FAIL][130] ([IGT#2]) [129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10685/shard-kbl7/igt@kms_sysfs_edid_timing.html [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-kbl2/igt@kms_sysfs_edid_timing.html * igt@nouveau_crc@pipe-a-source-outp-inactive: - shard-iclb: NOTRUN -> [SKIP][131] ([i915#2530]) [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb1/igt@nouveau_crc@pipe-a-source-outp-inactive.html * igt@nouveau_crc@pipe-c-ctx-flip-skip-current-frame: - shard-tglb: NOTRUN -> [SKIP][132] ([i915#2530]) +3 similar issues [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb1/igt@nouveau_crc@pipe-c-ctx-flip-skip-current-frame.html * igt@prime_nv_test@i915_blt_fill_nv_read: - shard-tglb: NOTRUN -> [SKIP][133] ([fdo#109291]) [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-tglb8/igt@prime_nv_test@i915_blt_fill_nv_read.html - shard-iclb: NOTRUN -> [SKIP][134] ([fdo#109291]) [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/shard-iclb5/igt@prime == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6291/index.html [-- Attachment #2: Type: text/html, Size: 33892 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/2] lib: Refactor construction of unique tokens 2021-10-05 22:29 [igt-dev] [PATCH i-g-t 1/2] lib: Refactor construction of unique tokens Ashutosh Dixit ` (2 preceding siblings ...) 2021-10-06 3:46 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork @ 2021-10-06 8:01 ` Zbigniew Kempczyński 3 siblings, 0 replies; 7+ messages in thread From: Zbigniew Kempczyński @ 2021-10-06 8:01 UTC (permalink / raw) To: Ashutosh Dixit; +Cc: igt-dev, Petri Latvala, Chris Wilson On Tue, Oct 05, 2021 at 03:29:34PM -0700, Ashutosh Dixit wrote: > From: Chris Wilson <chris.p.wilson@intel.com> > > Wrap all the igt_tokencat(prefix, __LINE) into its own igt_unique() to > reduce the clutter and make it easier to generate unique tokens for other > common macros. > > Signed-off-by: Chris Wilson <chris.p.wilson@intel.com> Ok, looks safe. Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> -- Zbigniew > --- > lib/igt_core.h | 54 ++++++++++++++++++++++++++++++-------------------- > 1 file changed, 32 insertions(+), 22 deletions(-) > > diff --git a/lib/igt_core.h b/lib/igt_core.h > index 8d433fc1655..6b8dbf348d8 100644 > --- a/lib/igt_core.h > +++ b/lib/igt_core.h > @@ -147,12 +147,12 @@ __noreturn void __igt_fixture_end(void); > * enumeration (e.g. when enumerating on systems without an intel gpu) such > * blocks should be annotated with igt_fixture. > */ > -#define igt_fixture for (volatile int igt_tokencat(__tmpint,__LINE__) = 0; \ > - igt_tokencat(__tmpint,__LINE__) < 1 && \ > +#define igt_fixture for (volatile int igt_unique(__tmpint) = 0; \ > + igt_unique(__tmpint) < 1 && \ > (STATIC_ANALYSIS_BUILD || \ > (__igt_fixture() && \ > (sigsetjmp(igt_subtest_jmpbuf, 1) == 0))); \ > - igt_tokencat(__tmpint,__LINE__) ++, \ > + igt_unique(__tmpint) ++, \ > __igt_fixture_complete()) > > /* subtest infrastructure */ > @@ -203,6 +203,16 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name); > */ > #define igt_tokencat(x, y) __igt_tokencat2(x, y) > > +/** > + * igt_unique: > + * @prefix: local identifier > + * > + * C preprocessor helper to generate a custom 'unique' token by appending > + * the line number onto the token. > + */ > +#define igt_unique(prefix) \ > + igt_tokencat(igt_tokencat(__igt_unique__, prefix), __LINE__) > + > /** > * igt_subtest: > * @name: name of the subtest > @@ -238,7 +248,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name); > * static string. > */ > #define igt_subtest_f(f...) \ > - __igt_subtest_f(igt_tokencat(__tmpchar, __LINE__), f) > + __igt_subtest_f(igt_unique(__tmpchar), f) > > /** > * igt_subtest_with_dynamic: > @@ -315,7 +325,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name); > * format string instead of a static string. > */ > #define igt_subtest_with_dynamic_f(f...) \ > - __igt_subtest_with_dynamic_f(igt_tokencat(__tmpchar, __LINE__), f) > + __igt_subtest_with_dynamic_f(igt_unique(__tmpchar), f) > > /** > * igt_dynamic: > @@ -358,7 +368,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name); > * instead of a static string. > */ > #define igt_dynamic_f(f...) \ > - __igt_dynamic_f(igt_tokencat(__tmpchar, __LINE__), f) > + __igt_dynamic_f(igt_unique(__tmpchar), f) > > const char *igt_subtest_name(void); > bool igt_only_list_subtests(void); > @@ -380,15 +390,15 @@ void __igt_subtest_group_restore(int, int); > * clauses. If any common setup in a fixture fails, only the subtests in this > * group will fail or skip. Subtest groups can be arbitrarily nested. > */ > -#define igt_subtest_group for (int igt_tokencat(__tmpint,__LINE__) = 0, \ > - igt_tokencat(__save,__LINE__) = 0, \ > - igt_tokencat(__desc,__LINE__) = 0; \ > - igt_tokencat(__tmpint,__LINE__) < 1 && \ > - (__igt_subtest_group_save(& igt_tokencat(__save,__LINE__), \ > - & igt_tokencat(__desc,__LINE__) ), true); \ > - igt_tokencat(__tmpint,__LINE__) ++, \ > - __igt_subtest_group_restore(igt_tokencat(__save,__LINE__), \ > - igt_tokencat(__desc,__LINE__))) > +#define igt_subtest_group for (int igt_unique(__tmpint) = 0, \ > + igt_unique(__save) = 0, \ > + igt_unique(__desc) = 0; \ > + igt_unique(__tmpint) < 1 && \ > + (__igt_subtest_group_save(& igt_unique(__save), \ > + & igt_unique(__desc) ), true); \ > + igt_unique(__tmpint) ++, \ > + __igt_subtest_group_restore(igt_unique(__save), \ > + igt_unique(__desc))) > > /** > * igt_main_args: > @@ -404,15 +414,15 @@ void __igt_subtest_group_restore(int, int); > * #igt_subtest_init_parse_opts. > */ > #define igt_main_args(short_opts, long_opts, help_str, opt_handler, handler_data) \ > - static void igt_tokencat(__real_main, __LINE__)(void); \ > + static void igt_unique(__real_main)(void); \ > int main(int argc, char **argv) { \ > igt_subtest_init_parse_opts(&argc, argv, \ > short_opts, long_opts, help_str, \ > opt_handler, handler_data); \ > - igt_tokencat(__real_main, __LINE__)(); \ > + igt_unique(__real_main)(); \ > igt_exit(); \ > } \ > - static void igt_tokencat(__real_main, __LINE__)(void) \ > + static void igt_unique(__real_main)(void) \ > > > /** > @@ -460,15 +470,15 @@ void igt_simple_init_parse_opts(int *argc, char **argv, > * #igt_simple_init_parse_opts. > */ > #define igt_simple_main_args(short_opts, long_opts, help_str, opt_handler, handler_data) \ > - static void igt_tokencat(__real_main, __LINE__)(void); \ > + static void igt_unique(__real_main)(void); \ > int main(int argc, char **argv) { \ > igt_simple_init_parse_opts(&argc, argv, \ > short_opts, long_opts, help_str, \ > opt_handler, handler_data); \ > - igt_tokencat(__real_main, __LINE__)(); \ > + igt_unique(__real_main)(); \ > igt_exit(); \ > } \ > - static void igt_tokencat(__real_main, __LINE__)(void) \ > + static void igt_unique(__real_main)(void) \ > > > /** > @@ -490,7 +500,7 @@ void igt_simple_init_parse_opts(int *argc, char **argv, > */ > #define igt_constructor \ > __attribute__((constructor)) \ > - static void igt_tokencat(__igt_constructor_l, __LINE__)(void) > + static void igt_unique(__igt_constructor_l)(void) > > __noreturn __attribute__((format(printf, 1, 2))) > void igt_skip(const char *f, ...); > -- > 2.33.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-10-06 20:27 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-10-05 22:29 [igt-dev] [PATCH i-g-t 1/2] lib: Refactor construction of unique tokens Ashutosh Dixit 2021-10-05 22:29 ` [igt-dev] [PATCH i-g-t 2/2] lib: Typechecking minmax Ashutosh Dixit 2021-10-06 18:11 ` Zbigniew Kempczyński 2021-10-06 20:26 ` Zbigniew Kempczyński 2021-10-05 23:16 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Refactor construction of unique tokens Patchwork 2021-10-06 3:46 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork 2021-10-06 8:01 ` [igt-dev] [PATCH i-g-t 1/2] " Zbigniew Kempczyński
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.