[Intel-gfx] [PATCH] drm/i915/gem: Avoid gem_context->mutex for simple vma lookup
Dan Carpenter
dan.carpenter at oracle.com
Tue Mar 17 13:55:32 UTC 2020
Hi Chris,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on drm-tip/drm-tip next-20200316]
[cannot apply to v5.6-rc6]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Chris-Wilson/drm-i915-gem-Avoid-gem_context-mutex-for-simple-vma-lookup/20200317-110430
base: git://anongit.freedesktop.org/drm-intel for-linux-next
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>
Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
New smatch warnings:
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:815 eb_lookup_vmas() error: uninitialized symbol 'obj'.
Old smatch warnings:
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:1111 reloc_move_to_gpu() warn: maybe use && instead of &
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:1599 eb_move_to_gpu() warn: maybe use && instead of &
drivers/gpu/drm/i915/gem/i915_gem_context.h:201 i915_gem_context_get_engine() warn: inconsistent indenting
drivers/gpu/drm/i915/gem/i915_gem_context.h:203 i915_gem_context_get_engine() warn: inconsistent indenting
# https://github.com/0day-ci/linux/commit/88e913b4b889b5b70ae708967ff75a04527b50af
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 88e913b4b889b5b70ae708967ff75a04527b50af
vim +/obj +815 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
2889caa9232109 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 731 static int eb_lookup_vmas(struct i915_execbuffer *eb)
3b96eff447b4ca drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2013-01-08 732 {
8f2a1057d6ec21 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2019-04-25 733 struct radix_tree_root *handles_vma = &eb->gem_context->handles_vma;
ac70ebe873f516 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-09-12 734 struct drm_i915_gem_object *obj;
^^^^
Uninitialized
746c8f143afad7 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2018-06-10 735 unsigned int i, batch;
2889caa9232109 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 736 int err;
3b96eff447b4ca drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2013-01-08 737
003d8b9143a69f drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-03 738 if (unlikely(i915_gem_context_is_closed(eb->gem_context)))
003d8b9143a69f drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-03 739 return -ENOENT;
003d8b9143a69f drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-03 740
2889caa9232109 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 741 INIT_LIST_HEAD(&eb->relocs);
2889caa9232109 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 742 INIT_LIST_HEAD(&eb->unbound);
d55495b4dcce2e drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-15 743
746c8f143afad7 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2018-06-10 744 batch = eb_batch_index(eb);
746c8f143afad7 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2018-06-10 745
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 746 for (i = 0; i < eb->buffer_count; i++) {
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 747 u32 handle = eb->exec[i].handle;
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 748 struct i915_lut_handle *lut;
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 749 struct i915_vma *vma;
4ff4b44cbb70c2 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 750
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 751 lookup:
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 752 rcu_read_lock();
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 753 vma = radix_tree_lookup(handles_vma, handle);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 754 if (likely(vma))
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 755 vma = i915_vma_tryget(vma);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 756 rcu_read_unlock();
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 757 if (likely(vma))
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 758 goto add_vma;
^^^^^^^^^^^^
Assume we hit this goto
3b96eff447b4ca drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2013-01-08 759
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 760 obj = i915_gem_object_lookup(eb->file, handle);
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 761 if (unlikely(!obj)) {
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 762 err = -ENOENT;
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 763 goto err_vma;
27173f1f95db5e drivers/gpu/drm/i915/i915_gem_execbuffer.c Ben Widawsky 2013-08-14 764 }
6f65e29acad749 drivers/gpu/drm/i915/i915_gem_execbuffer.c Ben Widawsky 2013-12-06 765
f5d974f9d2a811 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2019-07-30 766 vma = i915_vma_instance(obj, eb->context->vm, NULL);
772b5408e3aac9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chengguang Xu 2019-02-21 767 if (IS_ERR(vma)) {
2889caa9232109 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 768 err = PTR_ERR(vma);
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 769 goto err_obj;
27173f1f95db5e drivers/gpu/drm/i915/i915_gem_execbuffer.c Ben Widawsky 2013-08-14 770 }
27173f1f95db5e drivers/gpu/drm/i915/i915_gem_execbuffer.c Ben Widawsky 2013-08-14 771
13f1bfd3b3329b drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2019-02-28 772 lut = i915_lut_handle_alloc();
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 773 if (unlikely(!lut)) {
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 774 err = -ENOMEM;
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 775 goto err_obj;
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 776 }
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 777
155ab8836caa69 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2019-06-06 778 /* transfer ref to lut */
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 779 i915_gem_object_get(obj);
155ab8836caa69 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2019-06-06 780 if (!atomic_fetch_inc(&vma->open_count))
3365e2268b6bc3 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2018-05-03 781 i915_vma_reopen(vma);
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 782 lut->handle = handle;
155ab8836caa69 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2019-06-06 783 lut->ctx = eb->gem_context;
155ab8836caa69 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2019-06-06 784
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 785 mutex_lock(&eb->gem_context->mutex);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 786 err = -ENOENT;
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 787 if (unlikely(!i915_gem_context_is_closed(eb->gem_context)))
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 788 err = radix_tree_insert(handles_vma, handle, vma);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 789 mutex_unlock(&eb->gem_context->mutex);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 790 if (unlikely(err)) {
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 791 atomic_dec(&vma->open_count);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 792 i915_gem_object_put(obj);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 793 i915_lut_handle_free(lut);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 794 i915_gem_object_put(obj);
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 795 if (err == -EEXIST)
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 796 goto lookup;
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 797 goto err_vma;
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 798 }
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 799
155ab8836caa69 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2019-06-06 800 i915_gem_object_lock(obj);
155ab8836caa69 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2019-06-06 801 list_add(&lut->obj_link, &obj->lut_list);
155ab8836caa69 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2019-06-06 802 i915_gem_object_unlock(obj);
d1b48c1e7184d9 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 803
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 804 add_vma:
003d8b9143a69f drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-03 805 err = eb_validate_vma(eb, &eb->exec[i], vma);
2889caa9232109 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 806 if (unlikely(err))
88e913b4b889b5 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-16 807 goto err_obj;
And this goto
dade2a6165fd7b drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 808
003d8b9143a69f drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-03 809 eb_add_vma(eb, i, batch, vma);
3b96eff447b4ca drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2013-01-08 810 }
3b96eff447b4ca drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2013-01-08 811
003d8b9143a69f drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-03 812 return 0;
2889caa9232109 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 813
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 814 err_obj:
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 @815 i915_gem_object_put(obj);
^^^
170fa29b14fadf drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-08-16 816 err_vma:
7d6236bb13352c drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c Chris Wilson 2020-03-03 817 eb->vma[i].vma = NULL;
2889caa9232109 drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2017-06-16 818 return err;
3b96eff447b4ca drivers/gpu/drm/i915/i915_gem_execbuffer.c Chris Wilson 2013-01-08 819 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
More information about the Intel-gfx
mailing list