[i-g-t,v3,4/5] tests/kms: Add parse_bitmask support for user
Joshi, Kunal1
kunal1.joshi at intel.com
Wed Apr 23 12:23:34 UTC 2025
Hello Pranay,
The new command-line option isn’t necessary. Anyone running a single
test can already change the DRM debug mask on the fly with
echo 0x… > /sys/module/drm/parameters/debug
For CI jobs—where disk space is tight—add an environment variable such
as |IGT_CI_RUN=1|.
Test cases known to exceed the predefined CI log limits should switch
from the default verbose mask provided in boot parameters (for example
|0x1E|) to a lighter mask that still captures the essentials logs.
Also have different masks documented somewhere so others also can do for
the tests they are looking after.
Bit 0 (0x01) CORE – DRM core paths
Bit 1 (0x02) DRIVER – driver-specific code
Bit 2 (0x04) KMS – modesetting
Bit 3 (0x08) PRIME – dma-buf sharing
Bit 4 (0x10) ATOMIC – atomic commits
Bit 5 (0x20) VBLANK – vblank handling
Bit 7 (0x80) LEASE – leasing infrastructure
Bit 8 (0x100) DP – DisplayPort plumbing
Thanks and Regards
Kunal Joshi
On 01-04-2025 14:50, Pranay Samala wrote:
> The user can dynamically provide a mask during execution, giving them
> more control over the debug mask. This is useful in scenarios where
> different masks are needed for different tests or configurations without
> modifying the code itself.
>
> If the user does not provide a mask, the system defaults to 0x04. This
> ensures that the test can still run without requiring any extra input.
>
> Fixes: a2ab0ec12ef4 ("tests/kms_atomic_transition: Reducing debug loglevel dynamically")
> Fixes: 4baeb7397d71 ("tests/intel/kms_dp_linktrain_fallback: Reduce debug loglevel dynamically")
> Fixes: 7a8a3744466f ("tests/kms_cursor_legacy: Reduce debug loglevel dynamically")
> Signed-off-by: Pranay Samala<pranay.samala at intel.com>
> ---
> tests/intel/kms_dp_linktrain_fallback.c | 37 +++++++++++++++++++------
> tests/kms_atomic_transition.c | 24 ++++++++--------
> tests/kms_cursor_legacy.c | 37 ++++++++++++++++++-------
> 3 files changed, 68 insertions(+), 30 deletions(-)
>
> diff --git a/tests/intel/kms_dp_linktrain_fallback.c b/tests/intel/kms_dp_linktrain_fallback.c
> index 6a872efd2..a6f7b586f 100644
> --- a/tests/intel/kms_dp_linktrain_fallback.c
> +++ b/tests/intel/kms_dp_linktrain_fallback.c
> @@ -608,12 +608,33 @@ static bool run_dsc_sst_fallaback_test(data_t *data)
> return ran;
> }
>
> -igt_main
> +static unsigned int parse_bitmask;
> +static unsigned int def_mask = 0x4;
> +
> +static int opt_handler(int opt, int opt_index, void *_data)
> +{
> + switch (opt) {
> + case 'b':
> + parse_bitmask = strtoul(optarg, NULL, 16);
> + break;
> + }
> +
> + return IGT_OPT_HANDLER_SUCCESS;
> +}
> +
> +static const struct option long_opts[] = {
> + { .name = "bitmask", .has_arg = true, .val = 'b', },
> + {}
> +};
> +
> +static const char help_str[] =
> + " --bitmask\t\tSpecify a bitmask in hexadecimal\n";
> +
> +igt_main_args("", long_opts, help_str, opt_handler, NULL)
> {
> data_t data = {};
>
> igt_fixture {
> - int dir, current_log_level;
> data.drm_fd = drm_open_driver_master(DRIVER_INTEL |
> DRIVER_XE);
> kmstest_set_vt_graphics_mode();
> @@ -621,14 +642,12 @@ igt_main
> igt_display_require_output(&data.display);
> for_each_pipe(&data.display, data.pipe)
> data.n_pipes++;
> - dir = igt_sysfs_drm_module_params_open();
> - if (dir >= 0) {
> - current_log_level = igt_drm_debug_level_get(dir);
> - close(dir);
>
> - if (current_log_level > 10)
> - igt_drm_debug_level_update(10);
> - }
> + if (parse_bitmask)
> + igt_drm_debug_mask_update(parse_bitmask);
> + else
> + igt_drm_debug_mask_update(def_mask);
> +
> /*
> * Some environments may have environment
> * variable set to ignore long hpd, disable it for this test
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 2b64424ce..a92edc2b1 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -1096,6 +1096,9 @@ static bool pipe_output_combo_valid(igt_display_t *display,
> return ret;
> }
>
> +static unsigned int parse_bitmask;
> +static unsigned int def_mask = 0x4;
> +
> static int opt_handler(int opt, int opt_index, void *_data)
> {
> data_t *data = _data;
> @@ -1104,6 +1107,9 @@ static int opt_handler(int opt, int opt_index, void *_data)
> case 'e':
> data->extended = true;
> break;
> + case 'b':
> + parse_bitmask = strtoul(optarg, NULL, 16);
> + break;
> }
>
> return IGT_OPT_HANDLER_SUCCESS;
> @@ -1111,11 +1117,13 @@ static int opt_handler(int opt, int opt_index, void *_data)
>
> static const struct option long_opts[] = {
> { .name = "extended", .has_arg = false, .val = 'e', },
> + { .name = "bitmask", .has_arg = true, .val = 'b', },
> {}
> };
>
> static const char help_str[] =
> - " --extended\t\tRun the extended tests\n";
> + " --extended\t\tRun the extended tests\n"
> + " --bitmask\t\tSpecify a bitmask in hexadecimal\n";
>
> static data_t data;
>
> @@ -1174,8 +1182,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
> int pipe_count = 0;
>
> igt_fixture {
> - int dir, current_log_level;
> -
> data.drm_fd = drm_open_driver_master(DRIVER_ANY);
>
> kmstest_set_vt_graphics_mode();
> @@ -1188,14 +1194,10 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
> for_each_connected_output(&data.display, output)
> count++;
>
> - dir = igt_sysfs_drm_module_params_open();
> - if (dir >= 0) {
> - current_log_level = igt_drm_debug_level_get(dir);
> - close(dir);
> -
> - if (current_log_level > 10)
> - igt_drm_debug_level_update(10);
> - }
> + if (parse_bitmask)
> + igt_drm_debug_mask_update(parse_bitmask);
> + else
> + igt_drm_debug_mask_update(def_mask);
> }
>
> igt_describe("Check toggling of primary plane with vblank");
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index 44f031e7b..09d511935 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -1823,7 +1823,29 @@ static void modeset_atomic_cursor_hotspot(igt_display_t *display)
> igt_remove_fb(display->drm_fd, &cursor_fb);
> }
>
> -igt_main
> +static unsigned int parse_bitmask;
> +static unsigned int def_mask = 0x4;
> +
> +static int opt_handler(int opt, int opt_index, void *_data)
> +{
> + switch (opt) {
> + case 'b':
> + parse_bitmask = strtoul(optarg, NULL, 16);
> + break;
> + }
> +
> + return IGT_OPT_HANDLER_SUCCESS;
> +}
> +
> +static const struct option long_opts[] = {
> + { .name = "bitmask", .has_arg = true, .val = 'b', },
> + {}
> +};
> +
> +static const char help_str[] =
> + " --bitmask\t\tSpecify a bitmask in hexadecimal\n";
> +
> +igt_main_args("", long_opts, help_str, opt_handler, NULL)
> {
> const int ncpus = sysconf(_SC_NPROCESSORS_ONLN);
> igt_display_t display = { .drm_fd = -1 };
> @@ -1839,7 +1861,6 @@ igt_main
> };
>
> igt_fixture {
> - int dir, current_log_level;
> display.drm_fd = drm_open_driver_master(DRIVER_ANY);
> kmstest_set_vt_graphics_mode();
>
> @@ -1851,14 +1872,10 @@ igt_main
> */
> intel_psr2_restore = i915_psr2_sel_fetch_to_psr1(display.drm_fd, NULL);
>
> - dir = igt_sysfs_drm_module_params_open();
> - if (dir >= 0) {
> - current_log_level = igt_drm_debug_level_get(dir);
> - close(dir);
> -
> - if (current_log_level > 10)
> - igt_drm_debug_level_update(10);
> - }
> + if (parse_bitmask)
> + igt_drm_debug_mask_update(parse_bitmask);
> + else
> + igt_drm_debug_mask_update(def_mask);
> }
>
> igt_describe("Test checks how many cursor updates we can fit between vblanks "
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/igt-dev/attachments/20250423/fdb47b9b/attachment.htm>
More information about the igt-dev
mailing list