Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Lee Shawn C <shawn.c.lee@intel.com>, igt-dev@lists.freedesktop.org
Subject: Re: [igt-dev] [PATCH] tests: read engine name again before restore timeout value
Date: Thu, 12 Oct 2023 09:53:44 +0100	[thread overview]
Message-ID: <a514f33c-650e-a306-836c-98f2b8602a77@linux.intel.com> (raw)
In-Reply-To: <20231011084222.226352-1-shawn.c.lee@intel.com>


On 11/10/2023 09:42, Lee Shawn C wrote:
> We encounter a unexpected error on chrome book device while
> running this test. The tool will restore GPU engine's timeout
> value but open incorrect file name (XR24 in below). This is
> a workaround patch to avoid this problem before we got the
> root cause.
> 
> openat(AT_FDCWD, "/sys/dev/char/226:0", O_RDONLY) = 12
> openat(12, "dev", O_RDONLY)             = 13
> read(13, "226:0\n", 1023)               = 6
> close(13)                               = 0
> openat(12, "engine", O_RDONLY)          = 13
> close(12)                               = 0
> openat(13, "XR24", O_RDONLY)            = -1 ENOENT (No such file or directory)
> 
> Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com>
> Issue: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/147
> ---
>   tests/intel/kms_busy.c | 10 ++++++++--
>   1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/intel/kms_busy.c b/tests/intel/kms_busy.c
> index 5b620658fb18..119e6f1652ce 100644
> --- a/tests/intel/kms_busy.c
> +++ b/tests/intel/kms_busy.c
> @@ -414,9 +414,15 @@ static void gpu_engines_init_timeouts(int fd, int max_engines,
>   	}
>   }
>   
> -static void gpu_engines_restore_timeouts(int fd, int num_engines, const struct gem_engine_properties *props)
> +static void gpu_engines_restore_timeouts(int fd, int num_engines, struct gem_engine_properties *props)
>   {
> -	int i;
> +	const struct intel_execution_engine2 *e;
> +	int i = 0;
> +
> +	for_each_physical_engine(fd, e) {
> +		props[i].engine = e;
> +		i++;
> +	}
>   
>   	for (i = 0; i < num_engines; i++)
>   		gem_engine_properties_restore(fd, &props[i]);

By the look of it bug is in gpu_engines_init_timeouts(). This pointer 
assignment:

	for_each_physical_engine(fd, e) {
		igt_assert(*num_engines < max_engines);

		props[*num_engines].engine = e;

^^^ e is on stack, in scope of for_each_physical_engine, so by the time 
gpu_engines_restore_timeouts() runs it can legitimately point to 
garbage, like XR24 in your example.

Your workaround works, although strictly don't think the order of 
engines is guaranteed. Which is also moot since same preempt_timeout and 
hearbeat_interval is used for all.

Nevertheless, proper fix would be to allocate a make a copy of each 
engine and store a pointer to that. It might be an overkill but, up for 
discussion I guess.

Fixes: 9e635a1c5029 ("tests/kms_busy: Ensure GPU reset when waiting for 
a new FB during modeset")

So I'll be cheeky and add Imre and Juha-Pekka too.

Regards,

Tvrtko

  parent reply	other threads:[~2023-10-12  8:53 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-11  8:42 [igt-dev] [PATCH] tests: read engine name again before restore timeout value Lee Shawn C
2023-10-11 16:01 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2023-10-11 16:44 ` [igt-dev] ✓ CI.xeBAT: " Patchwork
2023-10-12  6:38 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2023-10-12  8:53 ` Tvrtko Ursulin [this message]
2023-10-12 11:33   ` [igt-dev] [PATCH] " Imre Deak
2023-10-12 12:11     ` Tvrtko Ursulin
2023-10-12 14:25       ` Imre Deak
2023-10-12 12:19     ` Lee, Shawn C

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a514f33c-650e-a306-836c-98f2b8602a77@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=shawn.c.lee@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox