From: kernel test robot <lkp@intel.com>
To: "Christian König" <ckoenig.leichtzumerken@gmail.com>,
thomas.hellstrom@linux.intel.com, intel-xe@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, matthew.brost@intel.com,
matthew.auld@intel.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH 6/6] drm/ttm: replace TTMs refcount with the DRM refcount
Date: Tue, 17 Jun 2025 12:27:41 +0800 [thread overview]
Message-ID: <202506171254.EsodeP9U-lkp@intel.com> (raw)
In-Reply-To: <20250616130726.22863-6-christian.koenig@amd.com>
Hi Christian,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on next-20250616]
[cannot apply to drm-xe/drm-xe-next drm-exynos/exynos-drm-next linus/master drm/drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.16-rc2]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Christian-K-nig/drm-xe-stop-asserting-on-the-TTM-refcount/20250616-210818
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20250616130726.22863-6-christian.koenig%40amd.com
patch subject: [PATCH 6/6] drm/ttm: replace TTMs refcount with the DRM refcount
config: x86_64-buildonly-randconfig-006-20250617 (https://download.01.org/0day-ci/archive/20250617/202506171254.EsodeP9U-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250617/202506171254.EsodeP9U-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506171254.EsodeP9U-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/gem/i915_gem_ttm.c: In function 'i915_ttm_adjust_lru':
>> drivers/gpu/drm/i915/gem/i915_gem_ttm.c:935:27: error: 'struct ttm_buffer_object' has no member named 'kref'
935 | if (!kref_read(&bo->kref))
| ^~
vim +935 drivers/gpu/drm/i915/gem/i915_gem_ttm.c
213d5092776345 Thomas Hellström 2021-06-10 918
3589fdbd3b2085 Thomas Hellström 2021-11-04 919 /**
3589fdbd3b2085 Thomas Hellström 2021-11-04 920 * i915_ttm_adjust_lru - Adjust an object's position on relevant LRU lists.
3589fdbd3b2085 Thomas Hellström 2021-11-04 921 * @obj: The object
3589fdbd3b2085 Thomas Hellström 2021-11-04 922 */
3589fdbd3b2085 Thomas Hellström 2021-11-04 923 void i915_ttm_adjust_lru(struct drm_i915_gem_object *obj)
213d5092776345 Thomas Hellström 2021-06-10 924 {
213d5092776345 Thomas Hellström 2021-06-10 925 struct ttm_buffer_object *bo = i915_gem_to_ttm(obj);
7ae034590ceaef Matthew Auld 2021-10-18 926 struct i915_ttm_tt *i915_tt =
7ae034590ceaef Matthew Auld 2021-10-18 927 container_of(bo->ttm, typeof(*i915_tt), ttm);
ebd4a8ec7799b1 Matthew Auld 2021-10-18 928 bool shrinkable =
ebd4a8ec7799b1 Matthew Auld 2021-10-18 929 bo->ttm && i915_tt->filp && ttm_tt_is_populated(bo->ttm);
213d5092776345 Thomas Hellström 2021-06-10 930
213d5092776345 Thomas Hellström 2021-06-10 931 /*
213d5092776345 Thomas Hellström 2021-06-10 932 * Don't manipulate the TTM LRUs while in TTM bo destruction.
213d5092776345 Thomas Hellström 2021-06-10 933 * We're called through i915_ttm_delete_mem_notify().
213d5092776345 Thomas Hellström 2021-06-10 934 */
213d5092776345 Thomas Hellström 2021-06-10 @935 if (!kref_read(&bo->kref))
213d5092776345 Thomas Hellström 2021-06-10 936 return;
213d5092776345 Thomas Hellström 2021-06-10 937
ebd4a8ec7799b1 Matthew Auld 2021-10-18 938 /*
ebd4a8ec7799b1 Matthew Auld 2021-10-18 939 * We skip managing the shrinker LRU in set_pages() and just manage
ebd4a8ec7799b1 Matthew Auld 2021-10-18 940 * everything here. This does at least solve the issue with having
ebd4a8ec7799b1 Matthew Auld 2021-10-18 941 * temporary shmem mappings(like with evicted lmem) not being visible to
ebd4a8ec7799b1 Matthew Auld 2021-10-18 942 * the shrinker. Only our shmem objects are shrinkable, everything else
ebd4a8ec7799b1 Matthew Auld 2021-10-18 943 * we keep as unshrinkable.
ebd4a8ec7799b1 Matthew Auld 2021-10-18 944 *
ebd4a8ec7799b1 Matthew Auld 2021-10-18 945 * To make sure everything plays nice we keep an extra shrink pin in TTM
ebd4a8ec7799b1 Matthew Auld 2021-10-18 946 * if the underlying pages are not currently shrinkable. Once we release
ebd4a8ec7799b1 Matthew Auld 2021-10-18 947 * our pin, like when the pages are moved to shmem, the pages will then
ebd4a8ec7799b1 Matthew Auld 2021-10-18 948 * be added to the shrinker LRU, assuming the caller isn't also holding
ebd4a8ec7799b1 Matthew Auld 2021-10-18 949 * a pin.
ebd4a8ec7799b1 Matthew Auld 2021-10-18 950 *
ebd4a8ec7799b1 Matthew Auld 2021-10-18 951 * TODO: consider maybe also bumping the shrinker list here when we have
ebd4a8ec7799b1 Matthew Auld 2021-10-18 952 * already unpinned it, which should give us something more like an LRU.
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 953 *
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 954 * TODO: There is a small window of opportunity for this function to
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 955 * get called from eviction after we've dropped the last GEM refcount,
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 956 * but before the TTM deleted flag is set on the object. Avoid
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 957 * adjusting the shrinker list in such cases, since the object is
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 958 * not available to the shrinker anyway due to its zero refcount.
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 959 * To fix this properly we should move to a TTM shrinker LRU list for
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 960 * these objects.
ebd4a8ec7799b1 Matthew Auld 2021-10-18 961 */
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 962 if (kref_get_unless_zero(&obj->base.refcount)) {
ebd4a8ec7799b1 Matthew Auld 2021-10-18 963 if (shrinkable != obj->mm.ttm_shrinkable) {
ebd4a8ec7799b1 Matthew Auld 2021-10-18 964 if (shrinkable) {
ebd4a8ec7799b1 Matthew Auld 2021-10-18 965 if (obj->mm.madv == I915_MADV_WILLNEED)
ebd4a8ec7799b1 Matthew Auld 2021-10-18 966 __i915_gem_object_make_shrinkable(obj);
ebd4a8ec7799b1 Matthew Auld 2021-10-18 967 else
ebd4a8ec7799b1 Matthew Auld 2021-10-18 968 __i915_gem_object_make_purgeable(obj);
ebd4a8ec7799b1 Matthew Auld 2021-10-18 969 } else {
ebd4a8ec7799b1 Matthew Auld 2021-10-18 970 i915_gem_object_make_unshrinkable(obj);
ebd4a8ec7799b1 Matthew Auld 2021-10-18 971 }
ebd4a8ec7799b1 Matthew Auld 2021-10-18 972
ebd4a8ec7799b1 Matthew Auld 2021-10-18 973 obj->mm.ttm_shrinkable = shrinkable;
ebd4a8ec7799b1 Matthew Auld 2021-10-18 974 }
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 975 i915_gem_object_put(obj);
d3cb30f8dcbcb7 Thomas Hellström 2021-11-10 976 }
ebd4a8ec7799b1 Matthew Auld 2021-10-18 977
213d5092776345 Thomas Hellström 2021-06-10 978 /*
213d5092776345 Thomas Hellström 2021-06-10 979 * Put on the correct LRU list depending on the MADV status
213d5092776345 Thomas Hellström 2021-06-10 980 */
213d5092776345 Thomas Hellström 2021-06-10 981 spin_lock(&bo->bdev->lru_lock);
ebd4a8ec7799b1 Matthew Auld 2021-10-18 982 if (shrinkable) {
7ae034590ceaef Matthew Auld 2021-10-18 983 /* Try to keep shmem_tt from being considered for shrinking. */
7ae034590ceaef Matthew Auld 2021-10-18 984 bo->priority = TTM_MAX_BO_PRIORITY - 1;
7ae034590ceaef Matthew Auld 2021-10-18 985 } else if (obj->mm.madv != I915_MADV_WILLNEED) {
213d5092776345 Thomas Hellström 2021-06-10 986 bo->priority = I915_TTM_PRIO_PURGE;
213d5092776345 Thomas Hellström 2021-06-10 987 } else if (!i915_gem_object_has_pages(obj)) {
213d5092776345 Thomas Hellström 2021-06-10 988 bo->priority = I915_TTM_PRIO_NO_PAGES;
ba2c5d15022a56 Matthew Auld 2022-02-09 989 } else {
9373505967ffc1 Matthew Auld 2022-02-28 990 struct ttm_resource_manager *man =
9373505967ffc1 Matthew Auld 2022-02-28 991 ttm_manager_type(bo->bdev, bo->resource->mem_type);
9373505967ffc1 Matthew Auld 2022-02-28 992
9373505967ffc1 Matthew Auld 2022-02-28 993 /*
9373505967ffc1 Matthew Auld 2022-02-28 994 * If we need to place an LMEM resource which doesn't need CPU
9373505967ffc1 Matthew Auld 2022-02-28 995 * access then we should try not to victimize mappable objects
9373505967ffc1 Matthew Auld 2022-02-28 996 * first, since we likely end up stealing more of the mappable
54296aa4cfe718 Nitin Gote 2025-01-20 997 * portion. And likewise when we try to find space for a mappable
9373505967ffc1 Matthew Auld 2022-02-28 998 * object, we know not to ever victimize objects that don't
9373505967ffc1 Matthew Auld 2022-02-28 999 * occupy any mappable pages.
9373505967ffc1 Matthew Auld 2022-02-28 1000 */
9373505967ffc1 Matthew Auld 2022-02-28 1001 if (i915_ttm_cpu_maps_iomem(bo->resource) &&
9373505967ffc1 Matthew Auld 2022-02-28 1002 i915_ttm_buddy_man_visible_size(man) < man->size &&
9373505967ffc1 Matthew Auld 2022-02-28 1003 !(obj->flags & I915_BO_ALLOC_GPU_ONLY))
9373505967ffc1 Matthew Auld 2022-02-28 1004 bo->priority = I915_TTM_PRIO_NEEDS_CPU_ACCESS;
9373505967ffc1 Matthew Auld 2022-02-28 1005 else
ba2c5d15022a56 Matthew Auld 2022-02-09 1006 bo->priority = I915_TTM_PRIO_HAS_PAGES;
213d5092776345 Thomas Hellström 2021-06-10 1007 }
213d5092776345 Thomas Hellström 2021-06-10 1008
fee2ede155423b Christian König 2022-01-24 1009 ttm_bo_move_to_lru_tail(bo);
213d5092776345 Thomas Hellström 2021-06-10 1010 spin_unlock(&bo->bdev->lru_lock);
213d5092776345 Thomas Hellström 2021-06-10 1011 }
213d5092776345 Thomas Hellström 2021-06-10 1012
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2025-06-17 4:28 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-16 13:07 [PATCH 1/6] drm/vmwgfx: drop printing the TTM refcount for debugging Christian König
2025-06-16 13:07 ` [PATCH 2/6] drm/xe: stop asserting on the TTM refcount Christian König
2025-06-23 14:54 ` Matthew Brost
2025-06-16 13:07 ` [PATCH 3/6] drm/ttm: fix error handling in ttm_buffer_object_transfer Christian König
2025-06-24 2:24 ` Matthew Brost
2025-06-16 13:07 ` [PATCH 4/6] drm/ttm: rename ttm_bo_put to _fini Christian König
2025-06-17 2:08 ` kernel test robot
2025-06-16 13:07 ` [PATCH 5/6] drm/ttm: disable ttm_bo_validate_deleted_evict for now Christian König
2025-06-16 13:07 ` [PATCH 6/6] drm/ttm: replace TTMs refcount with the DRM refcount Christian König
2025-06-17 4:27 ` kernel test robot [this message]
2025-06-17 10:18 ` Thomas Hellström
2025-06-16 14:23 ` ✗ LGCI.VerificationFailed: failure for series starting with [1/6] drm/vmwgfx: drop printing the TTM refcount for debugging Patchwork
2025-06-23 9:35 ` ✗ CI.checkpatch: warning for series starting with [1/6] drm/vmwgfx: drop printing the TTM refcount for debugging (rev2) Patchwork
2025-06-23 9:36 ` ✗ CI.KUnit: failure " Patchwork
2025-06-23 19:02 ` [PATCH 1/6] drm/vmwgfx: drop printing the TTM refcount for debugging Ian Forbes
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=202506171254.EsodeP9U-lkp@intel.com \
--to=lkp@intel.com \
--cc=ckoenig.leichtzumerken@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=matthew.auld@intel.com \
--cc=matthew.brost@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=thomas.hellstrom@linux.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