* [mlankhorst:locking-rework 31/31] drivers/gpu/drm/i915/gem/i915_gem_userptr.c:242:22: error: no member named 'lock' in 'struct drm_i915_gem_object::(anonymous at drivers/gpu/drm/i915/gem/i915_gem_object_types.h:196:2)'
@ 2020-08-06 14:46 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-08-06 14:46 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 36660 bytes --]
tree: git://people.freedesktop.org/~mlankhorst/linux locking-rework
head: e4824ec03388895de61fbd106cfba7c6f5602ff6
commit: e4824ec03388895de61fbd106cfba7c6f5602ff6 [31/31] remove obj->mm.lock
config: x86_64-randconfig-a015-20200806 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 076b120bebfd727b502208601012a44ab2e1028e)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout e4824ec03388895de61fbd106cfba7c6f5602ff6
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross 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 >>):
>> drivers/gpu/drm/i915/gem/i915_gem_userptr.c:242:22: error: no member named 'lock' in 'struct drm_i915_gem_object::(anonymous at drivers/gpu/drm/i915/gem/i915_gem_object_types.h:196:2)'
mutex_lock(&obj->mm.lock);
~~~~~~~ ^
drivers/gpu/drm/i915/gem/i915_gem_userptr.c:249:24: error: no member named 'lock' in 'struct drm_i915_gem_object::(anonymous at drivers/gpu/drm/i915/gem/i915_gem_object_types.h:196:2)'
mutex_unlock(&obj->mm.lock);
~~~~~~~ ^
>> drivers/gpu/drm/i915/gem/i915_gem_userptr.c:441:6: warning: shift count >= width of type [-Wshift-count-overflow]
if (overflows_type(args->user_size, obj->base.size))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_utils.h:125:32: note: expanded from macro 'overflows_type'
(sizeof(x) > sizeof(T) && (x) >> BITS_PER_TYPE(T))
^ ~~~~~~~~~~~~~~~~
1 warning and 2 errors generated.
vim +242 drivers/gpu/drm/i915/gem/i915_gem_userptr.c
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 229
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 230 int i915_gem_object_userptr_submit_begin(struct drm_i915_gem_object *obj)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 231 {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 232 struct sg_table *pages;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 233 int err;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 234
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 235 err = i915_gem_object_unbind(obj, I915_GEM_OBJECT_UNBIND_ACTIVE);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 236 if (err)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 237 return err;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 238
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 239 if (GEM_WARN_ON(i915_gem_object_has_pinned_pages(obj)))
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 240 return -EBUSY;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 241
cd91d7dd25dd383 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-08-05 @242 mutex_lock(&obj->mm.lock);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 243
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 244 pages = __i915_gem_object_unset_pages(obj);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 245 if (!IS_ERR_OR_NULL(pages))
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 246 i915_gem_userptr_put_pages(obj, pages);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 247
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 248 err = ____i915_gem_object_get_pages(obj);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 249 mutex_unlock(&obj->mm.lock);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 250
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 251 return err;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 252 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 253
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 254 int i915_gem_object_userptr_submit_init(struct drm_i915_gem_object *obj)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 255 {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 256 struct drm_i915_private *i915 = to_i915(obj->base.dev);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 257 const unsigned long num_pages = obj->base.size >> PAGE_SHIFT;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 258 struct page **pvec;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 259 unsigned int gup_flags = 0;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 260 unsigned long notifier_seq;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 261 int pinned, ret;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 262 bool reffed = false;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 263
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 264 if (obj->userptr.notifier.mm)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 265 notifier_seq = mmu_interval_read_begin(&obj->userptr.notifier);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 266
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 267 if (obj->userptr.notifier.mm && obj->userptr.notifier.mm != current->mm)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 268 return -EFAULT;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 269
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 270 pvec = kvmalloc_array(num_pages, sizeof(struct page *), GFP_KERNEL);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 271 if (!pvec)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 272 return -ENOMEM;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 273
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 274 /*
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 275 * Using __get_user_pages_fast() with a read-only
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 276 * access is questionable. A read-only page may be
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 277 * COW-broken, and then this might end up giving
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 278 * the wrong side of the COW..
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 279 *
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 280 * We may or may not care.
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 281 */
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 282 if (!i915_gem_object_is_readonly(obj))
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 283 gup_flags |= FOLL_WRITE;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 284
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 285 pinned = ret = 0;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 286 while (pinned < num_pages) {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 287 ret = pin_user_pages_fast(obj->userptr.ptr + pinned * PAGE_SIZE,
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 288 num_pages - pinned, gup_flags,
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 289 &pvec[pinned]);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 290 if (ret < 0)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 291 break;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 292
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 293 pinned += ret;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 294 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 295
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 296 if (ret >= 0) {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 297 ret = 0;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 298
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 299 mutex_lock(&i915->mm.notifier_lock);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 300 if (!obj->userptr.page_ref++) {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 301 obj->userptr.pvec = pvec;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 302 obj->userptr.notifier_seq = notifier_seq;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 303 reffed = true;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 304 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 305 mutex_unlock(&i915->mm.notifier_lock);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 306 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 307
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 308 if (!reffed) {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 309 unpin_user_pages(pvec, pinned);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 310 kvfree(pvec);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 311 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 312
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 313 return ret;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 314 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 315
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 316 int i915_gem_object_userptr_submit_done(struct drm_i915_gem_object *obj)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 317 {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 318 if (obj->userptr.notifier.mm &&
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 319 mmu_interval_read_retry(&obj->userptr.notifier,
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 320 obj->userptr.notifier_seq)) {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 321 /* We collided with the mmu notifier, need to retry */
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 322
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 323 return -EAGAIN;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 324 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 325
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 326 return 0;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 327 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 328
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 329 void i915_gem_object_userptr_submit_fini(struct drm_i915_gem_object *obj)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 330 {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 331 i915_gem_object_userptr_drop_ref(obj);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 332 }
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 333
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 334 static void
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 335 i915_gem_userptr_release(struct drm_i915_gem_object *obj)
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 336 {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 337 if (!obj->userptr.notifier.mm)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 338 return;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 339
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 340 mmu_interval_notifier_remove(&obj->userptr.notifier);
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 341 obj->userptr.notifier.mm = NULL;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 342 }
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 343
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 344 static int
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 345 i915_gem_userptr_dmabuf_export(struct drm_i915_gem_object *obj)
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 346 {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 347 /* Needs to be created with an interval notifier */
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 348 if (!obj->userptr.notifier.mm)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 349 return -EPERM;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 350
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 351 return 0;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 352 }
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 353
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 354 const struct drm_i915_gem_object_ops i915_gem_userptr_ops = {
7d192daa73d9f37 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Chris Wilson 2020-05-29 355 .name = "i915_gem_object_userptr",
3599a91cc8d0754 drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-11-01 356 .flags = I915_GEM_OBJECT_HAS_STRUCT_PAGE |
484d9a844d0d0ae drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2019-01-15 357 I915_GEM_OBJECT_IS_SHRINKABLE |
f6c26b555e14fb2 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Janusz Krzysztofik 2020-02-04 358 I915_GEM_OBJECT_NO_MMAP |
484d9a844d0d0ae drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2019-01-15 359 I915_GEM_OBJECT_ASYNC_CANCEL,
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 360 .get_pages = i915_gem_userptr_get_pages,
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 361 .put_pages = i915_gem_userptr_put_pages,
de4726649b6b1d7 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2016-01-22 362 .dmabuf_export = i915_gem_userptr_dmabuf_export,
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 363 .release = i915_gem_userptr_release,
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 364 };
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 365
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 366 #endif
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 367
a5a5ae2abe3ba77 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-02-08 368 /*
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 369 * Creates a new mm object that wraps some normal memory from the process
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 370 * context - user memory.
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 371 *
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 372 * We impose several restrictions upon the memory being mapped
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 373 * into the GPU.
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 374 * 1. It must be page aligned (both start/end addresses, i.e ptr and size).
ec8b0dd51c50e33 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-07-21 375 * 2. It must be normal system memory, not a pointer into another map of IO
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 376 * space (e.g. it must not be a GTT mmapping of another object).
ec8b0dd51c50e33 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-07-21 377 * 3. We only allow a bo as large as we could in theory map into the GTT,
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 378 * that is we limit the size to the total size of the GTT.
ec8b0dd51c50e33 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-07-21 379 * 4. The bo is marked as being snoopable. The backing pages are left
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 380 * accessible directly by the CPU, but reads and writes by the GPU may
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 381 * incur the cost of a snoop (unless you have an LLC architecture).
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 382 *
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 383 * Synchronisation between multiple users and the GPU is left to userspace
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 384 * through the normal set-domain-ioctl. The kernel will enforce that the
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 385 * GPU relinquishes the VMA before it is returned back to the system
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 386 * i.e. upon free(), munmap() or process termination. However, the userspace
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 387 * malloc() library may not immediately relinquish the VMA after free() and
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 388 * instead reuse it whilst the GPU is still reading and writing to the VMA.
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 389 * Caveat emptor.
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 390 *
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 391 * Also note, that the object created here is not currently a "first class"
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 392 * object, in that several ioctls are banned. These are the CPU access
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 393 * ioctls: mmap(), pwrite and pread. In practice, you are expected to use
cc917ab43541db3 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2015-10-13 394 * direct access via your pointer rather than use those ioctls. Another
cc917ab43541db3 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2015-10-13 395 * restriction is that we do not allow userptr surfaces to be pinned to the
cc917ab43541db3 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2015-10-13 396 * hardware and so we reject any attempt to create a framebuffer out of a
cc917ab43541db3 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2015-10-13 397 * userptr.
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 398 *
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 399 * If you think this is a good interface to use to pass GPU memory between
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 400 * drivers, please use dma-buf instead. In fact, wherever possible use
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 401 * dma-buf instead.
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 402 */
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 403 int
a5a5ae2abe3ba77 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-02-08 404 i915_gem_userptr_ioctl(struct drm_device *dev,
a5a5ae2abe3ba77 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-02-08 405 void *data,
a5a5ae2abe3ba77 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-02-08 406 struct drm_file *file)
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 407 {
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 408 #ifdef CONFIG_MMU_NOTIFIER
7867d709959927e drivers/gpu/drm/i915/gem/i915_gem_userptr.c Chris Wilson 2019-10-22 409 static struct lock_class_key lock_class;
0031fb96859caad drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-11-04 410 struct drm_i915_private *dev_priv = to_i915(dev);
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 411 struct drm_i915_gem_userptr *args = data;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 412 struct drm_i915_gem_object *obj;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 413 int ret;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 414 u32 handle;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 415
0031fb96859caad drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-11-04 416 if (!HAS_LLC(dev_priv) && !HAS_SNOOP(dev_priv)) {
ca377809d657ea3 drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-03-02 417 /* We cannot support coherent userptr objects on hw without
ca377809d657ea3 drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-03-02 418 * LLC and broken snooping.
ca377809d657ea3 drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-03-02 419 */
ca377809d657ea3 drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-03-02 420 return -ENODEV;
ca377809d657ea3 drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-03-02 421 }
ca377809d657ea3 drivers/gpu/drm/i915/i915_gem_userptr.c Tvrtko Ursulin 2016-03-02 422
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 423 if (args->flags & ~(I915_USERPTR_READ_ONLY |
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 424 I915_USERPTR_UNSYNCHRONIZED))
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 425 return -EINVAL;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 426
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 427 /*
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 428 * XXX: There is a prevalence of the assumption that we fit the
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 429 * object's page count inside a 32bit _signed_ variable. Let's document
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 430 * this and catch if we ever need to fix it. In the meantime, if you do
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 431 * spot such a local variable, please consider fixing!
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 432 *
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 433 * Aside from our own locals (for which we have no excuse!):
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 434 * - sg_table embeds unsigned int for num_pages
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 435 * - get_user_pages*() mixed ints with longs
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 436 */
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 437
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 438 if (args->user_size >> PAGE_SHIFT > INT_MAX)
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 439 return -E2BIG;
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 440
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 @441 if (overflows_type(args->user_size, obj->base.size))
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 442 return -E2BIG;
24860ad748688b1 drivers/gpu/drm/i915/gem/i915_gem_userptr.c Matthew Auld 2020-01-17 443
c11c7bfd2134957 drivers/gpu/drm/i915/i915_gem_userptr.c Matthew Auld 2018-05-02 444 if (!args->user_size)
c11c7bfd2134957 drivers/gpu/drm/i915/i915_gem_userptr.c Matthew Auld 2018-05-02 445 return -EINVAL;
c11c7bfd2134957 drivers/gpu/drm/i915/i915_gem_userptr.c Matthew Auld 2018-05-02 446
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 447 if (offset_in_page(args->user_ptr | args->user_size))
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 448 return -EINVAL;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 449
96d4f267e40f950 drivers/gpu/drm/i915/i915_gem_userptr.c Linus Torvalds 2019-01-03 450 if (!access_ok((char __user *)(unsigned long)args->user_ptr, args->user_size))
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 451 return -EFAULT;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 452
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 453 /* Require mmu notifier now */
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 454 if (args->flags & I915_USERPTR_UNSYNCHRONIZED)
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 455 return -ENODEV;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 456
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 457 if (args->flags & I915_USERPTR_READ_ONLY) {
0b100760e3e8cbb drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-07-12 458 /*
0b100760e3e8cbb drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-07-12 459 * On almost all of the older hw, we cannot tell the GPU that
0b100760e3e8cbb drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-07-12 460 * a page is readonly.
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 461 */
e6ba76480299a0d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Chris Wilson 2019-12-21 462 if (!dev_priv->gt.vm->has_read_only)
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 463 return -ENODEV;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 464 }
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 465
13f1bfd3b3329b1 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2019-02-28 466 obj = i915_gem_object_alloc();
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 467 if (obj == NULL)
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 468 return -ENOMEM;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 469
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 470 drm_gem_private_object_init(dev, &obj->base, args->user_size);
7867d709959927e drivers/gpu/drm/i915/gem/i915_gem_userptr.c Chris Wilson 2019-10-22 471 i915_gem_object_init(obj, &i915_gem_userptr_ops, &lock_class);
c0a51fd07b1dd50 drivers/gpu/drm/i915/i915_gem_userptr.c Christian König 2018-02-16 472 obj->read_domains = I915_GEM_DOMAIN_CPU;
c0a51fd07b1dd50 drivers/gpu/drm/i915/i915_gem_userptr.c Christian König 2018-02-16 473 obj->write_domain = I915_GEM_DOMAIN_CPU;
b8f55be64453ea7 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2017-08-11 474 i915_gem_object_set_cache_coherency(obj, I915_CACHE_LLC);
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 475
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 476 obj->userptr.ptr = args->user_ptr;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 477 obj->userptr.notifier_seq = ULONG_MAX;
0b100760e3e8cbb drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-07-12 478 if (args->flags & I915_USERPTR_READ_ONLY)
0b100760e3e8cbb drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2018-07-12 479 i915_gem_object_set_readonly(obj);
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 480
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 481 /* And keep a pointer to the current->mm for resolving the user pages
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 482 * at binding. This means that we need to hook into the mmu_notifier
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 483 * in order to detect if the mmu is destroyed.
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 484 */
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 485 ret = i915_gem_userptr_init__mmu_notifier(obj, args->flags);
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 486 if (ret == 0)
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 487 ret = drm_gem_handle_create(file, &obj->base, &handle);
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 488
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 489 /* drop reference from allocate - handle holds it now */
f0cd518206e1a47 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2016-10-28 490 i915_gem_object_put(obj);
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 491 if (ret)
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 492 return ret;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 493
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 494 args->handle = handle;
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 495 return 0;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 496 #else
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 497 return -ENODEV;
71d98df6e1a246d drivers/gpu/drm/i915/gem/i915_gem_userptr.c Maarten Lankhorst 2020-07-10 498 #endif
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 499 }
5cc9ed4b9a7ac57 drivers/gpu/drm/i915/i915_gem_userptr.c Chris Wilson 2014-05-16 500
:::::: The code at line 242 was first introduced by commit
:::::: cd91d7dd25dd3836e74489cd21c16336c3cd016c drm/i915: Flatten obj->mm.lock
:::::: TO: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
:::::: CC: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
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: 33794 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-08-06 14:46 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-06 14:46 [mlankhorst:locking-rework 31/31] drivers/gpu/drm/i915/gem/i915_gem_userptr.c:242:22: error: no member named 'lock' in 'struct drm_i915_gem_object::(anonymous at drivers/gpu/drm/i915/gem/i915_gem_object_types.h:196:2)' kernel test robot
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.