All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Oak Zeng <oak.zeng@intel.com>, intel-gfx@lists.freedesktop.org
Cc: kbuild-all@lists.01.org
Subject: Re: [Intel-gfx] [PATCH] drm/i915/gem: Check function return in live_nop_switch
Date: Fri, 8 Oct 2021 10:54:42 +0800	[thread overview]
Message-ID: <202110081027.biwM6mpt-lkp@intel.com> (raw)
In-Reply-To: <20211007225553.571381-1-oak.zeng@intel.com>

[-- Attachment #1: Type: text/plain, Size: 7512 bytes --]

Hi Oak,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip v5.15-rc4 next-20211007]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Oak-Zeng/drm-i915-gem-Check-function-return-in-live_nop_switch/20211008-055247
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-a016-20211004 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/2d7a26805f7bf806f78efb6542a16f67ed8bc58c
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Oak-Zeng/drm-i915-gem-Check-function-return-in-live_nop_switch/20211008-055247
        git checkout 2d7a26805f7bf806f78efb6542a16f67ed8bc58c
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   In file included from drivers/gpu/drm/i915/gem/i915_gem_context.c:2279:
   drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c: In function 'live_nop_switch':
>> drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c:94:26: error: implicit declaration of function 'to_gt'; did you mean 'uc_to_gt'? [-Werror=implicit-function-declaration]
      94 |      intel_gt_set_wedged(to_gt(i915));
         |                          ^~~~~
         |                          uc_to_gt
>> drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c:94:26: warning: passing argument 1 of 'intel_gt_set_wedged' makes pointer from integer without a cast [-Wint-conversion]
      94 |      intel_gt_set_wedged(to_gt(i915));
         |                          ^~~~~~~~~~~
         |                          |
         |                          int
   In file included from drivers/gpu/drm/i915/gt/intel_gtt.h:28,
                    from drivers/gpu/drm/i915/gt/gen6_ppgtt.h:9,
                    from drivers/gpu/drm/i915/gem/i915_gem_context.c:72:
   drivers/gpu/drm/i915/gt/intel_reset.h:44:43: note: expected 'struct intel_gt *' but argument is of type 'int'
      44 | void intel_gt_set_wedged(struct intel_gt *gt);
         |                          ~~~~~~~~~~~~~~~~~^~
   cc1: some warnings being treated as errors


vim +94 drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c

    35	
    36	static int live_nop_switch(void *arg)
    37	{
    38		const unsigned int nctx = 1024;
    39		struct drm_i915_private *i915 = arg;
    40		struct intel_engine_cs *engine;
    41		struct i915_gem_context **ctx;
    42		struct igt_live_test t;
    43		struct file *file;
    44		unsigned long n;
    45		int err = -ENODEV;
    46	
    47		/*
    48		 * Create as many contexts as we can feasibly get away with
    49		 * and check we can switch between them rapidly.
    50		 *
    51		 * Serves as very simple stress test for submission and HW switching
    52		 * between contexts.
    53		 */
    54	
    55		if (!DRIVER_CAPS(i915)->has_logical_contexts)
    56			return 0;
    57	
    58		file = mock_file(i915);
    59		if (IS_ERR(file))
    60			return PTR_ERR(file);
    61	
    62		ctx = kcalloc(nctx, sizeof(*ctx), GFP_KERNEL);
    63		if (!ctx) {
    64			err = -ENOMEM;
    65			goto out_file;
    66		}
    67	
    68		for (n = 0; n < nctx; n++) {
    69			ctx[n] = live_context(i915, file);
    70			if (IS_ERR(ctx[n])) {
    71				err = PTR_ERR(ctx[n]);
    72				goto out_file;
    73			}
    74		}
    75	
    76		for_each_uabi_engine(engine, i915) {
    77			struct i915_request *rq = NULL;
    78			unsigned long end_time, prime;
    79			ktime_t times[2] = {};
    80	
    81			times[0] = ktime_get_raw();
    82			for (n = 0; n < nctx; n++) {
    83				struct i915_request *this;
    84	
    85				this = igt_request_alloc(ctx[n], engine);
    86				if (IS_ERR(this)) {
    87					err = PTR_ERR(this);
    88					goto out_file;
    89				}
    90				if (rq) {
    91					if (i915_request_await_dma_fence(this,
    92						&rq->fence)) {
    93						pr_err("Failed to populate %ld contexts\n", n);
  > 94						intel_gt_set_wedged(to_gt(i915));
    95						i915_request_put(rq);
    96						err = -EIO;
    97						goto out_file;
    98					}
    99					i915_request_put(rq);
   100				}
   101				rq = i915_request_get(this);
   102				i915_request_add(this);
   103			}
   104			if (i915_request_wait(rq, 0, HZ / 5) < 0) {
   105				pr_err("Failed to populated %d contexts\n", nctx);
   106				intel_gt_set_wedged(&i915->gt);
   107				i915_request_put(rq);
   108				err = -EIO;
   109				goto out_file;
   110			}
   111			i915_request_put(rq);
   112	
   113			times[1] = ktime_get_raw();
   114	
   115			pr_info("Populated %d contexts on %s in %lluns\n",
   116				nctx, engine->name, ktime_to_ns(times[1] - times[0]));
   117	
   118			err = igt_live_test_begin(&t, i915, __func__, engine->name);
   119			if (err)
   120				goto out_file;
   121	
   122			end_time = jiffies + i915_selftest.timeout_jiffies;
   123			for_each_prime_number_from(prime, 2, 8192) {
   124				times[1] = ktime_get_raw();
   125	
   126				rq = NULL;
   127				for (n = 0; n < prime; n++) {
   128					struct i915_request *this;
   129	
   130					this = igt_request_alloc(ctx[n % nctx], engine);
   131					if (IS_ERR(this)) {
   132						err = PTR_ERR(this);
   133						goto out_file;
   134					}
   135	
   136					if (rq) { /* Force submission order */
   137						i915_request_await_dma_fence(this, &rq->fence);
   138						i915_request_put(rq);
   139					}
   140	
   141					/*
   142					 * This space is left intentionally blank.
   143					 *
   144					 * We do not actually want to perform any
   145					 * action with this request, we just want
   146					 * to measure the latency in allocation
   147					 * and submission of our breadcrumbs -
   148					 * ensuring that the bare request is sufficient
   149					 * for the system to work (i.e. proper HEAD
   150					 * tracking of the rings, interrupt handling,
   151					 * etc). It also gives us the lowest bounds
   152					 * for latency.
   153					 */
   154	
   155					rq = i915_request_get(this);
   156					i915_request_add(this);
   157				}
   158				GEM_BUG_ON(!rq);
   159				if (i915_request_wait(rq, 0, HZ / 5) < 0) {
   160					pr_err("Switching between %ld contexts timed out\n",
   161					       prime);
   162					intel_gt_set_wedged(&i915->gt);
   163					i915_request_put(rq);
   164					break;
   165				}
   166				i915_request_put(rq);
   167	
   168				times[1] = ktime_sub(ktime_get_raw(), times[1]);
   169				if (prime == 2)
   170					times[0] = times[1];
   171	
   172				if (__igt_timeout(end_time, NULL))
   173					break;
   174			}
   175	
   176			err = igt_live_test_end(&t);
   177			if (err)
   178				goto out_file;
   179	
   180			pr_info("Switch latencies on %s: 1 = %lluns, %lu = %lluns\n",
   181				engine->name,
   182				ktime_to_ns(times[0]),
   183				prime - 1, div64_u64(ktime_to_ns(times[1]), prime - 1));
   184		}
   185	
   186	out_file:
   187		fput(file);
   188		return err;
   189	}
   190	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 40941 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [Intel-gfx] [PATCH] drm/i915/gem: Check function return in live_nop_switch
Date: Fri, 08 Oct 2021 10:54:42 +0800	[thread overview]
Message-ID: <202110081027.biwM6mpt-lkp@intel.com> (raw)
In-Reply-To: <20211007225553.571381-1-oak.zeng@intel.com>

[-- Attachment #1: Type: text/plain, Size: 7723 bytes --]

Hi Oak,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip v5.15-rc4 next-20211007]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Oak-Zeng/drm-i915-gem-Check-function-return-in-live_nop_switch/20211008-055247
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-a016-20211004 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/2d7a26805f7bf806f78efb6542a16f67ed8bc58c
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Oak-Zeng/drm-i915-gem-Check-function-return-in-live_nop_switch/20211008-055247
        git checkout 2d7a26805f7bf806f78efb6542a16f67ed8bc58c
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   In file included from drivers/gpu/drm/i915/gem/i915_gem_context.c:2279:
   drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c: In function 'live_nop_switch':
>> drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c:94:26: error: implicit declaration of function 'to_gt'; did you mean 'uc_to_gt'? [-Werror=implicit-function-declaration]
      94 |      intel_gt_set_wedged(to_gt(i915));
         |                          ^~~~~
         |                          uc_to_gt
>> drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c:94:26: warning: passing argument 1 of 'intel_gt_set_wedged' makes pointer from integer without a cast [-Wint-conversion]
      94 |      intel_gt_set_wedged(to_gt(i915));
         |                          ^~~~~~~~~~~
         |                          |
         |                          int
   In file included from drivers/gpu/drm/i915/gt/intel_gtt.h:28,
                    from drivers/gpu/drm/i915/gt/gen6_ppgtt.h:9,
                    from drivers/gpu/drm/i915/gem/i915_gem_context.c:72:
   drivers/gpu/drm/i915/gt/intel_reset.h:44:43: note: expected 'struct intel_gt *' but argument is of type 'int'
      44 | void intel_gt_set_wedged(struct intel_gt *gt);
         |                          ~~~~~~~~~~~~~~~~~^~
   cc1: some warnings being treated as errors


vim +94 drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c

    35	
    36	static int live_nop_switch(void *arg)
    37	{
    38		const unsigned int nctx = 1024;
    39		struct drm_i915_private *i915 = arg;
    40		struct intel_engine_cs *engine;
    41		struct i915_gem_context **ctx;
    42		struct igt_live_test t;
    43		struct file *file;
    44		unsigned long n;
    45		int err = -ENODEV;
    46	
    47		/*
    48		 * Create as many contexts as we can feasibly get away with
    49		 * and check we can switch between them rapidly.
    50		 *
    51		 * Serves as very simple stress test for submission and HW switching
    52		 * between contexts.
    53		 */
    54	
    55		if (!DRIVER_CAPS(i915)->has_logical_contexts)
    56			return 0;
    57	
    58		file = mock_file(i915);
    59		if (IS_ERR(file))
    60			return PTR_ERR(file);
    61	
    62		ctx = kcalloc(nctx, sizeof(*ctx), GFP_KERNEL);
    63		if (!ctx) {
    64			err = -ENOMEM;
    65			goto out_file;
    66		}
    67	
    68		for (n = 0; n < nctx; n++) {
    69			ctx[n] = live_context(i915, file);
    70			if (IS_ERR(ctx[n])) {
    71				err = PTR_ERR(ctx[n]);
    72				goto out_file;
    73			}
    74		}
    75	
    76		for_each_uabi_engine(engine, i915) {
    77			struct i915_request *rq = NULL;
    78			unsigned long end_time, prime;
    79			ktime_t times[2] = {};
    80	
    81			times[0] = ktime_get_raw();
    82			for (n = 0; n < nctx; n++) {
    83				struct i915_request *this;
    84	
    85				this = igt_request_alloc(ctx[n], engine);
    86				if (IS_ERR(this)) {
    87					err = PTR_ERR(this);
    88					goto out_file;
    89				}
    90				if (rq) {
    91					if (i915_request_await_dma_fence(this,
    92						&rq->fence)) {
    93						pr_err("Failed to populate %ld contexts\n", n);
  > 94						intel_gt_set_wedged(to_gt(i915));
    95						i915_request_put(rq);
    96						err = -EIO;
    97						goto out_file;
    98					}
    99					i915_request_put(rq);
   100				}
   101				rq = i915_request_get(this);
   102				i915_request_add(this);
   103			}
   104			if (i915_request_wait(rq, 0, HZ / 5) < 0) {
   105				pr_err("Failed to populated %d contexts\n", nctx);
   106				intel_gt_set_wedged(&i915->gt);
   107				i915_request_put(rq);
   108				err = -EIO;
   109				goto out_file;
   110			}
   111			i915_request_put(rq);
   112	
   113			times[1] = ktime_get_raw();
   114	
   115			pr_info("Populated %d contexts on %s in %lluns\n",
   116				nctx, engine->name, ktime_to_ns(times[1] - times[0]));
   117	
   118			err = igt_live_test_begin(&t, i915, __func__, engine->name);
   119			if (err)
   120				goto out_file;
   121	
   122			end_time = jiffies + i915_selftest.timeout_jiffies;
   123			for_each_prime_number_from(prime, 2, 8192) {
   124				times[1] = ktime_get_raw();
   125	
   126				rq = NULL;
   127				for (n = 0; n < prime; n++) {
   128					struct i915_request *this;
   129	
   130					this = igt_request_alloc(ctx[n % nctx], engine);
   131					if (IS_ERR(this)) {
   132						err = PTR_ERR(this);
   133						goto out_file;
   134					}
   135	
   136					if (rq) { /* Force submission order */
   137						i915_request_await_dma_fence(this, &rq->fence);
   138						i915_request_put(rq);
   139					}
   140	
   141					/*
   142					 * This space is left intentionally blank.
   143					 *
   144					 * We do not actually want to perform any
   145					 * action with this request, we just want
   146					 * to measure the latency in allocation
   147					 * and submission of our breadcrumbs -
   148					 * ensuring that the bare request is sufficient
   149					 * for the system to work (i.e. proper HEAD
   150					 * tracking of the rings, interrupt handling,
   151					 * etc). It also gives us the lowest bounds
   152					 * for latency.
   153					 */
   154	
   155					rq = i915_request_get(this);
   156					i915_request_add(this);
   157				}
   158				GEM_BUG_ON(!rq);
   159				if (i915_request_wait(rq, 0, HZ / 5) < 0) {
   160					pr_err("Switching between %ld contexts timed out\n",
   161					       prime);
   162					intel_gt_set_wedged(&i915->gt);
   163					i915_request_put(rq);
   164					break;
   165				}
   166				i915_request_put(rq);
   167	
   168				times[1] = ktime_sub(ktime_get_raw(), times[1]);
   169				if (prime == 2)
   170					times[0] = times[1];
   171	
   172				if (__igt_timeout(end_time, NULL))
   173					break;
   174			}
   175	
   176			err = igt_live_test_end(&t);
   177			if (err)
   178				goto out_file;
   179	
   180			pr_info("Switch latencies on %s: 1 = %lluns, %lu = %lluns\n",
   181				engine->name,
   182				ktime_to_ns(times[0]),
   183				prime - 1, div64_u64(ktime_to_ns(times[1]), prime - 1));
   184		}
   185	
   186	out_file:
   187		fput(file);
   188		return err;
   189	}
   190	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 40941 bytes --]

  parent reply	other threads:[~2021-10-08  2:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-07 22:55 [Intel-gfx] [PATCH] drm/i915/gem: Check function return in live_nop_switch Oak Zeng
2021-10-07 22:20 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for " Patchwork
2021-10-08  2:54 ` kernel test robot [this message]
2021-10-08  2:54   ` [Intel-gfx] [PATCH] " kernel test robot
2021-10-08  8:44 ` Tvrtko Ursulin

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=202110081027.biwM6mpt-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=kbuild-all@lists.01.org \
    --cc=oak.zeng@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 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.