From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [android-common:android-mainline 1/1] drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:70:61: error: no member named 'notifier' in 'struct amdgpu_bo'
Date: Sun, 30 Aug 2026 01:25:06 +0800 [thread overview]
Message-ID: <202608300156.0KB1B2LG-lkp@intel.com> (raw)
Hi Vamsidhar,
First bad commit (maybe != root cause):
tree: https://android.googlesource.com/kernel/common android-mainline
head: 62472d9b40cf9ab09e948d85ae63e14979b462c8
commit: ad36ecd6081db9827f1ebaa41671b0b336fd83bf [1/1] ANDROID: GKI: Enable HMM_MIRROR config for all arch
config: arm64-randconfig-r073-20260829 (https://download.01.org/0day-ci/archive/20260830/202608300156.0KB1B2LG-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 52774473867e49b5891ab9381accf4e5a3ce0024)
smatch: v0.5.0-9187-g5189e3fb
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260830/202608300156.0KB1B2LG-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/202608300156.0KB1B2LG-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:70:61: error: no member named 'notifier' in 'struct amdgpu_bo'
70 | struct amdgpu_bo *bo = container_of(mni, struct amdgpu_bo, notifier);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
include/linux/container_of.h:21:49: note: expanded from macro 'container_of'
21 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
22 | __same_type(*(ptr), void), \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23 | "pointer type mismatch in container_of()"); \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:537:74: note: expanded from macro '__same_type'
537 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/build_bug.h:77:50: note: expanded from macro 'static_assert'
77 | #define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr)
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:78:56: note: expanded from macro '__static_assert'
78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
| ^~~~
>> drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:70:25: error: no member named 'notifier' in 'amdgpu_bo'
70 | struct amdgpu_bo *bo = container_of(mni, struct amdgpu_bo, notifier);
| ^ ~~~~~~~~
include/linux/container_of.h:24:21: note: expanded from macro 'container_of'
24 | ((type *)(__mptr - offsetof(type, member))); })
| ^ ~~~~~~
include/linux/stddef.h:16:32: note: expanded from macro 'offsetof'
16 | #define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
| ^ ~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:79:2: error: call to undeclared function 'mmu_interval_set_seq'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
79 | mmu_interval_set_seq(mni, cur_seq);
| ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:107:61: error: no member named 'notifier' in 'struct amdgpu_bo'
107 | struct amdgpu_bo *bo = container_of(mni, struct amdgpu_bo, notifier);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
include/linux/container_of.h:21:49: note: expanded from macro 'container_of'
21 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
22 | __same_type(*(ptr), void), \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23 | "pointer type mismatch in container_of()"); \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:537:74: note: expanded from macro '__same_type'
537 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^
include/linux/build_bug.h:77:50: note: expanded from macro 'static_assert'
77 | #define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr)
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:78:56: note: expanded from macro '__static_assert'
78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
| ^~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:107:25: error: no member named 'notifier' in 'amdgpu_bo'
107 | struct amdgpu_bo *bo = container_of(mni, struct amdgpu_bo, notifier);
| ^ ~~~~~~~~
include/linux/container_of.h:24:21: note: expanded from macro 'container_of'
24 | ((type *)(__mptr - offsetof(type, member))); })
| ^ ~~~~~~
include/linux/stddef.h:16:32: note: expanded from macro 'offsetof'
16 | #define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
| ^ ~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:135:7: error: call to undeclared function 'mmu_interval_notifier_insert'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
135 | r = mmu_interval_notifier_insert(&bo->notifier, current->mm,
| ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:135:7: note: did you mean 'vma_interval_tree_insert'?
include/linux/mm.h:3372:6: note: 'vma_interval_tree_insert' declared here
3372 | void vma_interval_tree_insert(struct vm_area_struct *node,
| ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:135:41: error: no member named 'notifier' in 'struct amdgpu_bo'
135 | r = mmu_interval_notifier_insert(&bo->notifier, current->mm,
| ~~ ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:139:41: error: no member named 'notifier' in 'struct amdgpu_bo'
139 | r = mmu_interval_notifier_insert(&bo->notifier, current->mm, addr,
| ~~ ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:148:7: error: no member named 'notifier' in 'struct amdgpu_bo'
148 | bo->notifier.mm = NULL;
| ~~ ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:162:11: error: no member named 'notifier' in 'struct amdgpu_bo'
162 | if (!bo->notifier.mm)
| ~~ ^
>> drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:164:2: error: call to undeclared function 'mmu_interval_notifier_remove'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
164 | mmu_interval_notifier_remove(&bo->notifier);
| ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:164:2: note: did you mean 'vma_interval_tree_remove'?
include/linux/mm.h:3377:6: note: 'vma_interval_tree_remove' declared here
3377 | void vma_interval_tree_remove(struct vm_area_struct *node,
| ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:164:36: error: no member named 'notifier' in 'struct amdgpu_bo'
164 | mmu_interval_notifier_remove(&bo->notifier);
| ~~ ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:165:6: error: no member named 'notifier' in 'struct amdgpu_bo'
165 | bo->notifier.mm = NULL;
| ~~ ^
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:207:29: error: call to undeclared function 'mmu_interval_read_begin'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
207 | hmm_range->notifier_seq = mmu_interval_read_begin(notifier);
| ^
>> drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c:242:6: error: call to undeclared function 'mmu_interval_read_retry'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
242 | r = mmu_interval_read_retry(hmm_range->notifier,
| ^
15 errors generated.
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for XFRM_OFFLOAD
Depends on [n]: NET [=n]
Selected by [y]:
- GKI_HIDDEN_XFRM_OFFLOAD_CONFIGS [=y]
WARNING: unmet direct dependencies detected for DIMLIB
Depends on [n]: NET [=n]
Selected by [y]:
- GKI_HIDDEN_VIRTUAL_CONFIGS [=y]
WARNING: unmet direct dependencies detected for WEXT_PRIV
Depends on [n]: NET [=n] && WIRELESS [=n]
Selected by [y]:
- GKI_LEGACY_WEXT_ALLCONFIG [=y]
WARNING: unmet direct dependencies detected for NET_PTP_CLASSIFY
Depends on [n]: NET [=n]
Selected by [y]:
- GKI_HIDDEN_NET_CONFIGS [=y]
WARNING: unmet direct dependencies detected for HVC_DRIVER
Depends on [n]: TTY [=n]
Selected by [y]:
- GKI_HIDDEN_VIRTUAL_CONFIGS [=y]
WARNING: unmet direct dependencies detected for USB_PHY
Depends on [n]: USB_SUPPORT [=n]
Selected by [y]:
- GKI_HIDDEN_USB_CONFIGS [=y]
WARNING: unmet direct dependencies detected for PHYLINK
Depends on [n]: NETDEVICES [=n]
Selected by [y]:
- GKI_HIDDEN_ETHERNET_CONFIGS [=y]
WARNING: unmet direct dependencies detected for WIRELESS_EXT
Depends on [n]: NET [=n] && WIRELESS [=n]
Selected by [y]:
- GKI_LEGACY_WEXT_ALLCONFIG [=y]
WARNING: unmet direct dependencies detected for WEXT_CORE
Depends on [n]: NET [=n] && WIRELESS [=n] && (CFG80211_WEXT [=n] || WIRELESS_EXT [=y])
Selected by [y]:
- GKI_LEGACY_WEXT_ALLCONFIG [=y]
WARNING: unmet direct dependencies detected for PAGE_POOL
Depends on [n]: NET [=n]
Selected by [y]:
- GKI_HIDDEN_NET_CONFIGS [=y]
WARNING: unmet direct dependencies detected for CAN_RX_OFFLOAD
Depends on [n]: NETDEVICES [=n] && CAN_DEV [=n] && CAN_NETLINK [=n]
Selected by [y]:
- GKI_HIDDEN_MCP251XFD_CONFIGS [=y]
WARNING: unmet direct dependencies detected for NET_DEVLINK
Depends on [n]: NET [=n]
Selected by [y]:
- GKI_HIDDEN_NET_CONFIGS [=y]
WARNING: unmet direct dependencies detected for WEXT_PROC
Depends on [n]: NET [=n] && WIRELESS [=n] && PROC_FS [=n] && WEXT_CORE [=y]
Selected by [y]:
- GKI_LEGACY_WEXT_ALLCONFIG [=y]
vim +70 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 55
1ed3d2567c800ec drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2017-09-05 56 /**
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 57 * amdgpu_hmm_invalidate_gfx - callback to notify about mm change
1ed3d2567c800ec drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2017-09-05 58 *
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 59 * @mni: the range (mm) is about to update
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 60 * @range: details on the invalidation
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 61 * @cur_seq: Value to pass to mmu_interval_set_seq()
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 62 *
ad7f0b6334fe3cf drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2018-06-05 63 * Block for operations on BOs to finish and mark pages as accessed and
ad7f0b6334fe3cf drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2018-06-05 64 * potentially dirty.
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 65 */
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 66 static bool amdgpu_hmm_invalidate_gfx(struct mmu_interval_notifier *mni,
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 67 const struct mmu_notifier_range *range,
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 68 unsigned long cur_seq)
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 69 {
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 @70 struct amdgpu_bo *bo = container_of(mni, struct amdgpu_bo, notifier);
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 71 struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
7ab7e8a4096d2af drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jack Xiao 2015-04-27 72 long r;
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 73
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 74 if (!mmu_notifier_range_blockable(range))
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 75 return false;
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 76
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 77 mutex_lock(&adev->notifier_lock);
81fa1af31b5d790 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 78
81fa1af31b5d790 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 79 mmu_interval_set_seq(mni, cur_seq);
81fa1af31b5d790 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 80
0cc848a75b742c3 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2021-11-09 81 r = dma_resv_wait_timeout(bo->tbo.base.resv, DMA_RESV_USAGE_BOOKKEEP,
7bc80a5462c37ea drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2021-11-09 82 false, MAX_SCHEDULE_TIMEOUT);
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 83 mutex_unlock(&adev->notifier_lock);
7ab7e8a4096d2af drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jack Xiao 2015-04-27 84 if (r <= 0)
7ab7e8a4096d2af drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jack Xiao 2015-04-27 85 DRM_ERROR("(%ld) failed to wait for user bo\n", r);
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 86 return true;
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 87 }
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 88
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 89 static const struct mmu_interval_notifier_ops amdgpu_hmm_gfx_ops = {
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 90 .invalidate = amdgpu_hmm_invalidate_gfx,
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 91 };
0d2b42b0bdba45c drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 92
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 93 /**
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 94 * amdgpu_hmm_invalidate_hsa - callback to notify about mm change
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 95 *
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 96 * @mni: the range (mm) is about to update
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 97 * @range: details on the invalidation
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 98 * @cur_seq: Value to pass to mmu_interval_set_seq()
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 99 *
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 100 * We temporarily evict the BO attached to this range. This necessitates
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 101 * evicting all user-mode queues of the process.
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 102 */
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 103 static bool amdgpu_hmm_invalidate_hsa(struct mmu_interval_notifier *mni,
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 104 const struct mmu_notifier_range *range,
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 105 unsigned long cur_seq)
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 106 {
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 107 struct amdgpu_bo *bo = container_of(mni, struct amdgpu_bo, notifier);
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 108
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 109 if (!mmu_notifier_range_blockable(range))
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 110 return false;
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 111
f95f51a4c3357ea drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Felix Kuehling 2021-04-21 112 amdgpu_amdkfd_evict_userptr(mni, cur_seq, bo->kfd_bo);
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 113
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 114 return true;
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 115 }
93065ac753e4443 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Michal Hocko 2018-08-21 116
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 117 static const struct mmu_interval_notifier_ops amdgpu_hmm_hsa_ops = {
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 118 .invalidate = amdgpu_hmm_invalidate_hsa,
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 119 };
ae20f12d2de6629 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Christian König 2016-03-18 120
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 121 /**
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 122 * amdgpu_hmm_register - register a BO for notifier updates
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 123 *
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 124 * @bo: amdgpu buffer object
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 125 * @addr: userptr addr we should monitor
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 126 *
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 127 * Registers a mmu_notifier for the given BO at the specified address.
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 128 * Returns 0 on success, -ERRNO if anything goes wrong.
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 129 */
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 130 int amdgpu_hmm_register(struct amdgpu_bo *bo, unsigned long addr)
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 131 {
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 132 int r;
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 133
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 134 if (bo->kfd_bo)
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 135 r = mmu_interval_notifier_insert(&bo->notifier, current->mm,
81fa1af31b5d790 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 136 addr, amdgpu_bo_size(bo),
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 137 &amdgpu_hmm_hsa_ops);
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 138 else
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 139 r = mmu_interval_notifier_insert(&bo->notifier, current->mm, addr,
81fa1af31b5d790 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 140 amdgpu_bo_size(bo),
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 141 &amdgpu_hmm_gfx_ops);
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 142 if (r)
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 143 /*
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 144 * Make sure amdgpu_hmm_unregister() doesn't call
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 145 * mmu_interval_notifier_remove() when the notifier isn't properly
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 146 * initialized.
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 147 */
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 148 bo->notifier.mm = NULL;
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 149
22207fd5c80177b drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Vitaly Prosyak 2024-03-06 150 return r;
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 151 }
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 152
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 153 /**
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 154 * amdgpu_hmm_unregister - unregister a BO for notifier updates
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 155 *
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 156 * @bo: amdgpu buffer object
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 157 *
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 158 * Remove any registration of mmu notifier updates from the buffer object.
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 159 */
d9483ecd327b753 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 160 void amdgpu_hmm_unregister(struct amdgpu_bo *bo)
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 161 {
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 162 if (!bo->notifier.mm)
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 163 return;
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 @164 mmu_interval_notifier_remove(&bo->notifier);
62914a99dee5ac5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Jason Gunthorpe 2019-11-12 165 bo->notifier.mm = NULL;
d38ceaf99ed015f drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Deucher 2015-04-20 166 }
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 167
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 168 int amdgpu_hmm_range_get_pages(struct mmu_interval_notifier *notifier,
d4cbff464d2932a drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 169 uint64_t start, uint64_t npages, bool readonly,
c5b3cc417b0260a drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Sunil Khatri 2025-09-17 170 void *owner,
d4cbff464d2932a drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Christian König 2022-11-09 171 struct hmm_range **phmm_range)
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 172 {
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 173 struct hmm_range *hmm_range;
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 174 unsigned long end;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 175 unsigned long timeout;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 176 unsigned long *pfns;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 177 int r = 0;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 178
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 179 hmm_range = kzalloc(sizeof(*hmm_range), GFP_KERNEL);
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 180 if (unlikely(!hmm_range))
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 181 return -ENOMEM;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 182
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 183 pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL);
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 184 if (unlikely(!pfns)) {
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 185 r = -ENOMEM;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 186 goto out_free_range;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 187 }
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 188
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 189 hmm_range->notifier = notifier;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 190 hmm_range->default_flags = HMM_PFN_REQ_FAULT;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 191 if (!readonly)
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 192 hmm_range->default_flags |= HMM_PFN_REQ_WRITE;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 193 hmm_range->hmm_pfns = pfns;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 194 hmm_range->start = start;
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 195 end = start + npages * PAGE_SIZE;
8c21fc49a8e637b drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Alex Sierra 2021-05-06 196 hmm_range->dev_private_owner = owner;
d8a3c1c80ceb656 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2021-03-30 197
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 198 do {
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 199 hmm_range->end = min(hmm_range->start + MAX_WALK_BYTE, end);
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 200
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 201 pr_debug("hmm range: start = 0x%lx, end = 0x%lx",
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 202 hmm_range->start, hmm_range->end);
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 203
9095e5544061b16 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Philip Yang 2024-04-30 204 timeout = jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT);
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 205
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 206 retry:
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 207 hmm_range->notifier_seq = mmu_interval_read_begin(notifier);
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 208 r = hmm_range_fault(hmm_range);
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 209 if (unlikely(r)) {
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 210 if (r == -EBUSY && !time_after(jiffies, timeout))
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 211 goto retry;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 212 goto out_free_pfns;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 213 }
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 214
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 215 if (hmm_range->end == end)
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 216 break;
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 217 hmm_range->hmm_pfns += MAX_WALK_BYTE >> PAGE_SHIFT;
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 218 hmm_range->start = hmm_range->end;
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 219 } while (hmm_range->end < end);
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 220
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 221 hmm_range->start = start;
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 222 hmm_range->hmm_pfns = pfns;
c1420a5dd4dd2a1 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c James Zhu 2022-11-17 223
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 224 *phmm_range = hmm_range;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 225
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 226 return 0;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 227
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 228 out_free_pfns:
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 229 kvfree(pfns);
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 230 out_free_range:
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 231 kfree(hmm_range);
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 232
9095e5544061b16 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Philip Yang 2024-04-30 233 if (r == -EBUSY)
9095e5544061b16 drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Philip Yang 2024-04-30 234 r = -EAGAIN;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 235 return r;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 236 }
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 237
f95f51a4c3357ea drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Felix Kuehling 2021-04-21 238 bool amdgpu_hmm_range_get_pages_done(struct hmm_range *hmm_range)
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 239 {
f95f51a4c3357ea drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c Felix Kuehling 2021-04-21 240 bool r;
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 241
04d8d73dbcbe645 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c Philip Yang 2020-02-24 @242 r = mmu_interval_read_retry(hmm_range->notifier,
:::::: The code at line 70 was first introduced by commit
:::::: 62914a99dee5ac51253a84e7d4a05c18f0c77535 drm/amdgpu: Use mmu_interval_insert instead of hmm_mirror
:::::: TO: Jason Gunthorpe <jgg@mellanox.com>
:::::: CC: Jason Gunthorpe <jgg@mellanox.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-08-29 17:25 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202608300156.0KB1B2LG-lkp@intel.com \
--to=lkp@intel.com \
--cc=cros-kernel-buildreports@googlegroups.com \
--cc=oe-kbuild-all@lists.linux.dev \
/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.