All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [Intel-gfx] [PATCH 18/61] drm/i915: Make ring submission compatible with obj->mm.lock removal.
@ 2020-10-07  2:36 kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2020-10-07  2:36 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20201002125939.50817-19-maarten.lankhorst@linux.intel.com>
References: <20201002125939.50817-19-maarten.lankhorst@linux.intel.com>
TO: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Hi Maarten,

I love your patch! Perhaps something to improve:

[auto build test WARNING on 4e9a7e28ea34e4b14e66cbc53fc004e4a93f5168]

url:    https://github.com/0day-ci/linux/commits/Maarten-Lankhorst/drm-i915-Remove-obj-mm-lock/20201002-210318
base:    4e9a7e28ea34e4b14e66cbc53fc004e4a93f5168
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: x86_64-randconfig-m001-20201005 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

New smatch warnings:
drivers/gpu/drm/i915/gt/intel_ring_submission.c:1233 gen7_ctx_vma() warn: passing zero to 'ERR_PTR'
drivers/gpu/drm/i915/gt/intel_ring_submission.c:1251 gen7_ctx_vma() warn: passing zero to 'ERR_CAST'

Old smatch warnings:
drivers/gpu/drm/i915/gem/i915_gem_object.h:132 __i915_gem_object_lock() error: we previously assumed 'ww' could be null (see line 124)

vim +/ERR_PTR +1233 drivers/gpu/drm/i915/gt/intel_ring_submission.c

ee2413eeed767d1 Mika Kuoppala     2020-03-06  1221  
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1222  static struct i915_vma *gen7_ctx_vma(struct intel_engine_cs *engine)
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1223  {
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1224  	struct drm_i915_gem_object *obj;
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1225  	struct i915_vma *vma;
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1226  	int size, err;
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1227  
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1228  	if (!IS_HASWELL(engine->i915) || engine->class != RENDER_CLASS)
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1229  		return 0;
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1230  
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1231  	err = gen7_ctx_switch_bb_setup(engine, NULL /* probe size */);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1232  	if (err <= 0)
0ce63e139392e8d Maarten Lankhorst 2020-10-02 @1233  		return ERR_PTR(err);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1234  
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1235  	size = ALIGN(err, PAGE_SIZE);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1236  
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1237  	obj = i915_gem_object_create_internal(engine->i915, size);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1238  	if (IS_ERR(obj))
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1239  		return ERR_CAST(obj);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1240  
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1241  	vma = i915_vma_instance(obj, engine->gt->vm, NULL);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1242  	if (IS_ERR(vma)) {
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1243  		i915_gem_object_put(obj);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1244  		return ERR_CAST(vma);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1245  	}
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1246  
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1247  	vma->private = intel_context_create(engine); /* dummy residuals */
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1248  	if (IS_ERR(vma->private)) {
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1249  		vma->private = NULL;
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1250  		i915_gem_object_put(obj);
0ce63e139392e8d Maarten Lankhorst 2020-10-02 @1251  		return ERR_CAST(vma->private);
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1252  	}
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1253  
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1254  	return vma;
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1255  }
0ce63e139392e8d Maarten Lankhorst 2020-10-02  1256  

---
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: 37450 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread
* [Intel-gfx] [PATCH 00/61] drm/i915: Remove obj->mm.lock!
@ 2020-10-02 12:58 Maarten Lankhorst
  2020-10-02 12:58 ` [Intel-gfx] [PATCH 18/61] drm/i915: Make ring submission compatible with obj->mm.lock removal Maarten Lankhorst
  0 siblings, 1 reply; 4+ messages in thread
From: Maarten Lankhorst @ 2020-10-02 12:58 UTC (permalink / raw)
  To: intel-gfx

Finally there, just needs a lot of fixes!

A lot of places were calling certain calls without any object lock held,
with the removal of mm.lock we can no longer do this, and have to fix it.

Phys page handling has to be redone, as nothing protects obj->ops structure,
we have to remove swapping it, and move HAS_STRUCT_PAGE to obj->flags instead.

Userpointer locking is inverted, which we tried to get around with a workqueue.
We correct the lock ordering and try to acquire userptr pages first before taking
any ww locks. This is more compatible with the locking hierarchy, as we may need
to acquire mmap_sem. This breaks gem_exec_schedule@pi-shared/distinct-iova, and
I don't know yet how to fix that test, or whether we should remove it.

We also have to fix some dma-work, the command parser and clflush are slightly
reworked to put all memory allocations and pinning in the preparation,
so the work could pass fence annotations.

In a few places like igt_spinner and execlists, we move some part of init to the
first pin, because we need to have the ww lock held and it makes it easier that way.

Finally we convert all selftests, and then remove obj->mm.lock!

Maarten Lankhorst (60):
  drm/i915: Move cmd parser pinning to execbuffer
  drm/i915: Add missing -EDEADLK handling to execbuf pinning
  drm/i915: Do not share hwsp across contexts any more, v2.
  drm/i915: Ensure we hold the object mutex in pin correctly.
  drm/i915: Add gem object locking to madvise.
  drm/i915: Move HAS_STRUCT_PAGE to obj->flags
  drm/i915: Rework struct phys attachment handling
  drm/i915: Convert i915_gem_object_attach_phys() to ww locking
  drm/i915: make lockdep slightly happier about execbuf.
  drm/i915: Disable userptr pread/pwrite support.
  drm/i915: No longer allow exporting userptr through dma-buf
  drm/i915: Reject more ioctls for userptr
  drm/i915: Reject UNSYNCHRONIZED for userptr
  drm/i915: Fix userptr so we do not have to worry about obj->mm.lock
  drm/i915: Flatten obj->mm.lock
  drm/i915: Pin timeline map after first timeline pin.
  drm/i915: Populate logical context during first pin.
  drm/i915: Make ring submission compatible with obj->mm.lock removal.
  drm/i915: Handle ww locking in init_status_page
  drm/i915: Rework clflush to work correctly without obj->mm.lock.
  drm/i915: Pass ww ctx to intel_pin_to_display_plane
  drm/i915: Add object locking to vm_fault_cpu
  drm/i915: Move pinning to inside engine_wa_list_verify()
  drm/i915: Take reservation lock around i915_vma_pin.
  drm/i915: Make intel_init_workaround_bb more compatible with ww
    locking.
  drm/i915: Make __engine_unpark() compatible with ww locking.
  drm/i915: Take obj lock around set_domain ioctl
  drm/i915: Defer pin calls in buffer pool until first use by caller.
  drm/i915: Fix pread/pwrite to work with new locking rules.
  drm/i915: Fix workarounds selftest, part 1
  drm/i915: Add igt_spinner_pin() to allow for ww locking around
    spinner.
  drm/i915: Add ww locking around vm_access()
  drm/i915: Increase ww locking for perf.
  drm/i915: Lock ww in ucode objects correctly
  drm/i915: Add ww locking to dma-buf ops.
  drm/i915: Add missing ww lock in intel_dsb_prepare.
  drm/i915: Fix ww locking in shmem_create_from_object
  drm/i915: Use a single page table lock for each gtt.
  drm/i915/selftests: Prepare huge_pages testcases for obj->mm.lock
    removal.
  drm/i915/selftests: Prepare client blit for obj->mm.lock removal.
  drm/i915/selftests: Prepare coherency tests for obj->mm.lock removal.
  drm/i915/selftests: Prepare context tests for obj->mm.lock removal.
  drm/i915/selftests: Prepare dma-buf tests for obj->mm.lock removal.
  drm/i915/selftests: Prepare execbuf tests for obj->mm.lock removal.
  drm/i915/selftests: Prepare mman testcases for obj->mm.lock removal.
  drm/i915/selftests: Prepare object tests for obj->mm.lock removal.
  drm/i915/selftests: Prepare object blit tests for obj->mm.lock
    removal.
  drm/i915/selftests: Prepare igt_gem_utils for obj->mm.lock removal
  drm/i915/selftests: Prepare context selftest for obj->mm.lock removal
  drm/i915/selftests: Prepare hangcheck for obj->mm.lock removal
  drm/i915/selftests: Prepare execlists for obj->mm.lock removal
  drm/i915/selftests: Prepare mocs tests for obj->mm.lock removal
  drm/i915/selftests: Prepare ring submission for obj->mm.lock removal
  drm/i915/selftests: Prepare timeline tests for obj->mm.lock removal
  drm/i915/selftests: Prepare i915_request tests for obj->mm.lock
    removal
  drm/i915/selftests: Prepare memory region tests for obj->mm.lock
    removal
  drm/i915/selftests: Prepare cs engine tests for obj->mm.lock removal
  drm/i915/selftests: Prepare gtt tests for obj->mm.lock removal
  drm/i915: Finally remove obj->mm.lock.
  drm/i915: Keep userpointer bindings if seqcount is unchanged

Thomas Hellström (1):
  drm/i915: Prepare for obj->mm.lock removal

 drivers/gpu/drm/i915/Makefile                 |   1 -
 drivers/gpu/drm/i915/display/intel_display.c  |  71 +-
 drivers/gpu/drm/i915/display/intel_display.h  |   2 +-
 drivers/gpu/drm/i915/display/intel_dsb.c      |   2 +-
 drivers/gpu/drm/i915/display/intel_fbdev.c    |   2 +-
 drivers/gpu/drm/i915/display/intel_overlay.c  |  34 +-
 drivers/gpu/drm/i915/gem/i915_gem_clflush.c   |  15 +-
 drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c    |  62 +-
 drivers/gpu/drm/i915/gem/i915_gem_domain.c    |  51 +-
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c    | 212 ++++-
 drivers/gpu/drm/i915/gem/i915_gem_fence.c     |  95 --
 drivers/gpu/drm/i915/gem/i915_gem_internal.c  |   6 +-
 drivers/gpu/drm/i915/gem/i915_gem_lmem.c      |   4 +-
 drivers/gpu/drm/i915/gem/i915_gem_mman.c      |  35 +-
 drivers/gpu/drm/i915/gem/i915_gem_object.c    |  10 +-
 drivers/gpu/drm/i915/gem/i915_gem_object.h    |  82 +-
 .../gpu/drm/i915/gem/i915_gem_object_blt.c    |   6 +
 .../gpu/drm/i915/gem/i915_gem_object_types.h  |  23 +-
 drivers/gpu/drm/i915/gem/i915_gem_pages.c     | 104 ++-
 drivers/gpu/drm/i915/gem/i915_gem_phys.c      |  95 +-
 drivers/gpu/drm/i915/gem/i915_gem_region.c    |   4 +-
 drivers/gpu/drm/i915/gem/i915_gem_region.h    |   3 +-
 drivers/gpu/drm/i915/gem/i915_gem_shmem.c     |  18 +-
 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c  |  39 +-
 drivers/gpu/drm/i915/gem/i915_gem_shrinker.h  |   4 +-
 drivers/gpu/drm/i915/gem/i915_gem_stolen.c    |  14 +-
 drivers/gpu/drm/i915/gem/i915_gem_tiling.c    |   2 -
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c   | 879 ++++++------------
 .../drm/i915/gem/selftests/huge_gem_object.c  |   4 +-
 .../gpu/drm/i915/gem/selftests/huge_pages.c   |  38 +-
 .../i915/gem/selftests/i915_gem_client_blt.c  |   8 +-
 .../i915/gem/selftests/i915_gem_coherency.c   |  18 +-
 .../drm/i915/gem/selftests/i915_gem_context.c |  10 +-
 .../drm/i915/gem/selftests/i915_gem_dmabuf.c  |   2 +-
 .../i915/gem/selftests/i915_gem_execbuffer.c  |   2 +-
 .../drm/i915/gem/selftests/i915_gem_mman.c    |  21 +-
 .../drm/i915/gem/selftests/i915_gem_object.c  |   2 +-
 .../i915/gem/selftests/i915_gem_object_blt.c  |   6 +-
 .../drm/i915/gem/selftests/i915_gem_phys.c    |  10 +-
 .../drm/i915/gem/selftests/igt_gem_utils.c    |   2 +-
 drivers/gpu/drm/i915/gt/intel_context_types.h |  13 +-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c     |  37 +-
 drivers/gpu/drm/i915/gt/intel_engine_pm.c     |   4 +-
 drivers/gpu/drm/i915/gt/intel_ggtt.c          |  10 +-
 .../gpu/drm/i915/gt/intel_gt_buffer_pool.c    |  47 +-
 .../gpu/drm/i915/gt/intel_gt_buffer_pool.h    |   5 +
 .../drm/i915/gt/intel_gt_buffer_pool_types.h  |   1 +
 drivers/gpu/drm/i915/gt/intel_gt_types.h      |   4 -
 drivers/gpu/drm/i915/gt/intel_gtt.c           |  38 +-
 drivers/gpu/drm/i915/gt/intel_gtt.h           |   5 +
 drivers/gpu/drm/i915/gt/intel_lrc.c           | 150 +--
 drivers/gpu/drm/i915/gt/intel_ppgtt.c         |   3 +-
 drivers/gpu/drm/i915/gt/intel_renderstate.c   |   2 +-
 .../gpu/drm/i915/gt/intel_ring_submission.c   | 177 ++--
 drivers/gpu/drm/i915/gt/intel_timeline.c      | 395 ++------
 drivers/gpu/drm/i915/gt/intel_timeline.h      |   2 +
 .../gpu/drm/i915/gt/intel_timeline_types.h    |  15 +-
 drivers/gpu/drm/i915/gt/intel_workarounds.c   |  24 +-
 drivers/gpu/drm/i915/gt/mock_engine.c         |  22 +-
 drivers/gpu/drm/i915/gt/selftest_context.c    |   4 +-
 drivers/gpu/drm/i915/gt/selftest_engine_cs.c  |   4 +-
 drivers/gpu/drm/i915/gt/selftest_hangcheck.c  |   8 +-
 drivers/gpu/drm/i915/gt/selftest_lrc.c        |  34 +-
 drivers/gpu/drm/i915/gt/selftest_mocs.c       |   2 +-
 .../drm/i915/gt/selftest_ring_submission.c    |   4 +-
 drivers/gpu/drm/i915/gt/selftest_timeline.c   |  98 +-
 .../gpu/drm/i915/gt/selftest_workarounds.c    | 101 +-
 drivers/gpu/drm/i915/gt/shmem_utils.c         |   2 +-
 drivers/gpu/drm/i915/gt/uc/intel_guc.c        |   2 +-
 drivers/gpu/drm/i915/gt/uc/intel_guc_log.c    |   4 +-
 drivers/gpu/drm/i915/gt/uc/intel_huc.c        |   2 +-
 drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c      |   2 +-
 drivers/gpu/drm/i915/gvt/dmabuf.c             |   2 +-
 drivers/gpu/drm/i915/i915_active.c            |  20 +-
 drivers/gpu/drm/i915/i915_cmd_parser.c        | 104 +--
 drivers/gpu/drm/i915/i915_debugfs.c           |   4 +-
 drivers/gpu/drm/i915/i915_drv.h               |  18 +-
 drivers/gpu/drm/i915/i915_gem.c               | 264 +++---
 drivers/gpu/drm/i915/i915_gem_gtt.c           |   2 +-
 drivers/gpu/drm/i915/i915_memcpy.c            |   2 +-
 drivers/gpu/drm/i915/i915_memcpy.h            |   2 +-
 drivers/gpu/drm/i915/i915_perf.c              |  56 +-
 drivers/gpu/drm/i915/i915_request.c           |   4 -
 drivers/gpu/drm/i915/i915_request.h           |  10 -
 drivers/gpu/drm/i915/i915_selftest.h          |   2 +
 drivers/gpu/drm/i915/i915_vma.c               |  26 +-
 drivers/gpu/drm/i915/i915_vma.h               |  20 +-
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c |  94 +-
 drivers/gpu/drm/i915/selftests/i915_request.c |  10 +-
 drivers/gpu/drm/i915/selftests/igt_spinner.c  | 136 ++-
 drivers/gpu/drm/i915/selftests/igt_spinner.h  |   5 +
 .../drm/i915/selftests/intel_memory_region.c  |  18 +-
 drivers/gpu/drm/i915/selftests/mock_region.c  |   4 +-
 93 files changed, 2015 insertions(+), 2007 deletions(-)
 delete mode 100644 drivers/gpu/drm/i915/gem/i915_gem_fence.c


base-commit: 4e9a7e28ea34e4b14e66cbc53fc004e4a93f5168
-- 
2.28.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-10-07  7:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-07  2:36 [Intel-gfx] [PATCH 18/61] drm/i915: Make ring submission compatible with obj->mm.lock removal kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2020-10-02 12:58 [Intel-gfx] [PATCH 00/61] drm/i915: Remove obj->mm.lock! Maarten Lankhorst
2020-10-02 12:58 ` [Intel-gfx] [PATCH 18/61] drm/i915: Make ring submission compatible with obj->mm.lock removal Maarten Lankhorst
2020-10-07  7:33   ` Dan Carpenter
2020-10-07  7:33     ` Dan Carpenter

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.