[Intel-gfx] [PATCH] igt_core: Inject subtest message into dmesg

Thomas Wood thomas.wood at intel.com
Thu Jul 24 15:03:01 CEST 2014


On 24 July 2014 13:36, Daniel Vetter <daniel at ffwll.ch> wrote:
> On Thu, Jul 24, 2014 at 12:48:33PM +0100, Chris Wilson wrote:
>> One of the side-effects we test for are kernel oops and knowing the
>> guilty subtest can help speed up debugging. We can write to /dev/kmsg to
>> inject messages into dmesg, so let's do so before the start of every
>> test.
>>
>> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>
> Should we change proc->comm too? Would help with the oops printing ... Ack
> on the patch itself.

It should also make sure that the log level is appropriate so that the
Piglit dmesg capture isn't triggered accidentally.

Would it be useful to include this in simple tests (tests without
subtests) as well?


> -Daniel
>> ---
>>  lib/igt_core.c | 29 ++++++++++++++++++++++++-----
>>  1 file changed, 24 insertions(+), 5 deletions(-)
>>
>> diff --git a/lib/igt_core.c b/lib/igt_core.c
>> index b0800e8..deaf145 100644
>> --- a/lib/igt_core.c
>> +++ b/lib/igt_core.c
>> @@ -269,8 +269,9 @@ static void print_version(void)
>>               uts.sysname, uts.release, uts.machine);
>>  }
>>
>> -static void print_usage(const char *command_str, const char *help_str,
>> -                     bool output_on_stderr)
>> +static const char *command_str;
>> +
>> +static void print_usage(const char *help_str, bool output_on_stderr)
>>  {
>>       FILE *f = output_on_stderr ? stderr : stdout;
>>
>> @@ -306,7 +307,6 @@ static int common_init(int argc, char **argv,
>>               {"debug", 0, 0, 'd'},
>>               {"help", 0, 0, 'h'},
>>       };
>> -     const char *command_str;
>>       char *short_opts;
>>       struct option *combined_opts;
>>       int extra_opt_count;
>> @@ -364,11 +364,11 @@ static int common_init(int argc, char **argv,
>>                               run_single_subtest = strdup(optarg);
>>                       break;
>>               case 'h':
>> -                     print_usage(command_str, help_str, false);
>> +                     print_usage(help_str, false);
>>                       ret = -1;
>>                       goto out;
>>               case '?':
>> -                     print_usage(command_str, help_str, true);
>> +                     print_usage(help_str, true);
>>                       ret = -2;
>>                       goto out;
>>               default:
>> @@ -498,6 +498,23 @@ void igt_simple_init_parse_opts(int argc, char **argv,
>>                   extra_opt_handler);
>>  }
>>
>> +__attribute__((format(printf, 2, 3)))
>> +static void echo(const char *path, const char *format, ...)
>> +{
>> +     va_list ap;
>> +     FILE *file;
>> +
>> +     file = fopen(path, "w");
>> +     if (file == NULL)
>> +             return;
>> +
>> +     va_start(ap, format);
>> +     vfprintf(file, format, ap);
>> +     va_end(ap);
>> +
>> +     fclose(file);
>> +}
>> +
>>  /*
>>   * Note: Testcases which use these helpers MUST NOT output anything to stdout
>>   * outside of places protected by igt_run_subtest checks - the piglit
>> @@ -529,6 +546,8 @@ bool __igt_run_subtest(const char *subtest_name)
>>               return false;
>>       }
>>
>> +     echo("/dev/kmsg", "%s: starting subtest %s\n", command_str, subtest_name);
>> +
>>       return (in_subtest = subtest_name);
>>  }
>>
>> --
>> 1.9.1
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



More information about the Intel-gfx mailing list