* [Intel-gfx] [PATCH] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list @ 2020-01-17 22:00 Chris Wilson 2020-01-17 22:06 ` Chris Wilson ` (4 more replies) 0 siblings, 5 replies; 6+ messages in thread From: Chris Wilson @ 2020-01-17 22:00 UTC (permalink / raw) To: intel-gfx Currently we create a new mmap_offset for every call to mmap_offset_ioctl. This exposes ourselves to an abusive client that may simply create new mmap_offsets ad infinitum, which will exhaust physical memory and the virtual address space. In addition to the exhaustion, a very long linear list of mmap_offsets causes other clients using the object to incur long list walks -- these long lists can also be generated by simply having many clients generate their own mmap_offset. Switching to an rbtree store for obj->mmo.offsets allows us to use a binary search for duplicated mmap_offsets (preventing the exhaustion from a trivial malicious client), and also quickly search for matching mmap_offsets on object close. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> --- drivers/gpu/drm/i915/gem/i915_gem_mman.c | 93 +++++++++++++++++-- drivers/gpu/drm/i915/gem/i915_gem_object.c | 46 +++++++-- .../gpu/drm/i915/gem/i915_gem_object_types.h | 4 +- 3 files changed, 124 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c index b9fdac2f9003..2908a205faa9 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c @@ -455,10 +455,11 @@ static void i915_gem_object_release_mmap_gtt(struct drm_i915_gem_object *obj) void i915_gem_object_release_mmap_offset(struct drm_i915_gem_object *obj) { - struct i915_mmap_offset *mmo; + struct i915_mmap_offset *mmo, *mn; spin_lock(&obj->mmo.lock); - list_for_each_entry(mmo, &obj->mmo.offsets, offset) { + rbtree_postorder_for_each_entry_safe(mmo, mn, + &obj->mmo.offsets, offset) { /* * vma_node_unmap for GTT mmaps handled already in * __i915_gem_object_release_mmap_gtt @@ -487,6 +488,84 @@ void i915_gem_object_release_mmap(struct drm_i915_gem_object *obj) i915_gem_object_release_mmap_offset(obj); } +static struct i915_mmap_offset * +lookup_mmo(struct drm_i915_gem_object *obj, + enum i915_mmap_type mmap_type, + struct drm_file *file) +{ + struct i915_mmap_offset *match = NULL; + struct rb_node *rb; + + spin_lock(&obj->mmo.lock); + rb = obj->mmo.offsets.rb_node; + while (rb) { + struct i915_mmap_offset *mmo = + rb_entry(rb, typeof(*mmo), offset); + + if (mmo->file < file) { + rb = rb->rb_right; + continue; + } + + if (mmo->file > file) { + rb = rb->rb_left; + continue; + } + + if (mmo->mmap_type < mmap_type) { + rb = rb->rb_right; + continue; + } + + if (mmo->mmap_type > mmap_type) { + rb = rb->rb_left; + continue; + } + + match = mmo; + break; + } + spin_unlock(&obj->mmo.lock); + + return match; +} + +static struct i915_mmap_offset * +insert_mmo(struct drm_i915_gem_object *obj, struct i915_mmap_offset *mmo) +{ + struct rb_node *rb, **p; + + spin_lock(&obj->mmo.lock); + rb = NULL; + p = &obj->mmo.offsets.rb_node; + while (*p) { + struct i915_mmap_offset *pos; + + rb = *p; + pos = rb_entry(rb, typeof(*pos), offset); + + if (pos->file < mmo->file) { + p = &rb->rb_right; + continue; + } + + if (pos->file > mmo->file) { + p = &rb->rb_left; + continue; + } + + if (pos->mmap_type < mmo->mmap_type) + p = &rb->rb_right; + else + p = &rb->rb_left; + } + rb_link_node(&mmo->offset, rb, p); + rb_insert_color(&mmo->offset, &obj->mmo.offsets); + spin_unlock(&obj->mmo.lock); + + return mmo; +} + static struct i915_mmap_offset * mmap_offset_attach(struct drm_i915_gem_object *obj, enum i915_mmap_type mmap_type, @@ -496,6 +575,10 @@ mmap_offset_attach(struct drm_i915_gem_object *obj, struct i915_mmap_offset *mmo; int err; + mmo = lookup_mmo(obj, mmap_type, file); + if (mmo) + return mmo; + mmo = kmalloc(sizeof(*mmo), GFP_KERNEL); if (!mmo) return ERR_PTR(-ENOMEM); @@ -526,11 +609,7 @@ mmap_offset_attach(struct drm_i915_gem_object *obj, if (file) drm_vma_node_allow(&mmo->vma_node, file); - spin_lock(&obj->mmo.lock); - list_add(&mmo->offset, &obj->mmo.offsets); - spin_unlock(&obj->mmo.lock); - - return mmo; + return insert_mmo(obj, mmo); err: kfree(mmo); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c b/drivers/gpu/drm/i915/gem/i915_gem_object.c index 46bacc82ddc4..3cc9f83f0bae 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c @@ -63,7 +63,7 @@ void i915_gem_object_init(struct drm_i915_gem_object *obj, INIT_LIST_HEAD(&obj->lut_list); spin_lock_init(&obj->mmo.lock); - INIT_LIST_HEAD(&obj->mmo.offsets); + obj->mmo.offsets = RB_ROOT; init_rcu_head(&obj->rcu); @@ -96,6 +96,37 @@ void i915_gem_object_set_cache_coherency(struct drm_i915_gem_object *obj, !(obj->cache_coherent & I915_BO_CACHE_COHERENT_FOR_WRITE); } +static struct i915_mmap_offset * +first_mmo(struct drm_i915_gem_object *obj, struct drm_file *file) +{ + struct i915_mmap_offset *first = NULL; + struct rb_node *pos; + + pos = obj->mmo.offsets.rb_node; + while (pos) { + struct i915_mmap_offset *mmo = + rb_entry(pos, typeof(*mmo), offset); + + if (mmo->file < file) { + pos = pos->rb_right; + continue; + } + + pos = pos->rb_left; + if (mmo->file == file) + first = mmo; + } + + return first; +} + +static struct i915_mmap_offset * +next_mmo(struct i915_mmap_offset *pos, struct drm_file *file) +{ + pos = rb_entry_safe(rb_next(&pos->offset), typeof(*pos), offset); + return pos && pos->file == file ? pos : NULL; +} + void i915_gem_close_object(struct drm_gem_object *gem, struct drm_file *file) { struct drm_i915_gem_object *obj = to_intel_bo(gem); @@ -117,14 +148,8 @@ void i915_gem_close_object(struct drm_gem_object *gem, struct drm_file *file) i915_gem_object_unlock(obj); spin_lock(&obj->mmo.lock); - list_for_each_entry(mmo, &obj->mmo.offsets, offset) { - if (mmo->file != file) - continue; - - spin_unlock(&obj->mmo.lock); + for (mmo = first_mmo(obj, file); mmo; mmo = next_mmo(mmo, file)) drm_vma_node_revoke(&mmo->vma_node, file); - spin_lock(&obj->mmo.lock); - } spin_unlock(&obj->mmo.lock); list_for_each_entry_safe(lut, ln, &close, obj_link) { @@ -203,12 +228,13 @@ static void __i915_gem_free_objects(struct drm_i915_private *i915, i915_gem_object_release_mmap(obj); - list_for_each_entry_safe(mmo, mn, &obj->mmo.offsets, offset) { + rbtree_postorder_for_each_entry_safe(mmo, mn, + &obj->mmo.offsets, + offset) { drm_vma_offset_remove(obj->base.dev->vma_offset_manager, &mmo->vma_node); kfree(mmo); } - INIT_LIST_HEAD(&obj->mmo.offsets); GEM_BUG_ON(atomic_read(&obj->bind_count)); GEM_BUG_ON(obj->userfault_count); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h index 88e268633fdc..124fd2fb1bec 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h @@ -77,7 +77,7 @@ struct i915_mmap_offset { struct drm_file *file; enum i915_mmap_type mmap_type; - struct list_head offset; + struct rb_node offset; }; struct drm_i915_gem_object { @@ -137,7 +137,7 @@ struct drm_i915_gem_object { struct { spinlock_t lock; /* Protects access to mmo offsets */ - struct list_head offsets; + struct rb_root offsets; } mmo; I915_SELFTEST_DECLARE(struct list_head st_link); -- 2.25.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list 2020-01-17 22:00 [Intel-gfx] [PATCH] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list Chris Wilson @ 2020-01-17 22:06 ` Chris Wilson 2020-01-17 22:29 ` [Intel-gfx] [PATCH v2] " Chris Wilson ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Chris Wilson @ 2020-01-17 22:06 UTC (permalink / raw) To: intel-gfx Quoting Chris Wilson (2020-01-17 22:00:38) > Currently we create a new mmap_offset for every call to > mmap_offset_ioctl. This exposes ourselves to an abusive client that may > simply create new mmap_offsets ad infinitum, which will exhaust physical > memory and the virtual address space. In addition to the exhaustion, a > very long linear list of mmap_offsets causes other clients using the > object to incur long list walks -- these long lists can also be > generated by simply having many clients generate their own mmap_offset. > > Switching to an rbtree store for obj->mmo.offsets allows us to use a > binary search for duplicated mmap_offsets (preventing the exhaustion > from a trivial malicious client), and also quickly search for matching > mmap_offsets on object close. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> Hmm, mmo->file only serves for revoking, duplicating drm_vma_node_revoke itself. I think we can do better yet. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Intel-gfx] [PATCH v2] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list 2020-01-17 22:00 [Intel-gfx] [PATCH] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list Chris Wilson 2020-01-17 22:06 ` Chris Wilson @ 2020-01-17 22:29 ` Chris Wilson 2020-01-18 2:38 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) Patchwork ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Chris Wilson @ 2020-01-17 22:29 UTC (permalink / raw) To: intel-gfx Currently we create a new mmap_offset for every call to mmap_offset_ioctl. This exposes ourselves to an abusive client that may simply create new mmap_offsets ad infinitum, which will exhaust physical memory and the virtual address space. In addition to the exhaustion, a very long linear list of mmap_offsets causes other clients using the object to incur long list walks -- these long lists can also be generated by simply having many clients generate their own mmap_offset. However, we can simply use the drm_vma_node itself to manage the file association (allow/revoke) dropping our need to keep an mmo per-file. Then if we keep a small rbtree of per-type mmap_offsets, we can lookup duplicate requests quickly. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> --- drivers/gpu/drm/i915/gem/i915_gem_mman.c | 81 ++++++++++++++++--- drivers/gpu/drm/i915/gem/i915_gem_object.c | 17 ++-- .../gpu/drm/i915/gem/i915_gem_object_types.h | 6 +- 3 files changed, 76 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c index b9fdac2f9003..0e0f63bf6ca8 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c @@ -455,10 +455,11 @@ static void i915_gem_object_release_mmap_gtt(struct drm_i915_gem_object *obj) void i915_gem_object_release_mmap_offset(struct drm_i915_gem_object *obj) { - struct i915_mmap_offset *mmo; + struct i915_mmap_offset *mmo, *mn; spin_lock(&obj->mmo.lock); - list_for_each_entry(mmo, &obj->mmo.offsets, offset) { + rbtree_postorder_for_each_entry_safe(mmo, mn, + &obj->mmo.offsets, offset) { /* * vma_node_unmap for GTT mmaps handled already in * __i915_gem_object_release_mmap_gtt @@ -487,6 +488,59 @@ void i915_gem_object_release_mmap(struct drm_i915_gem_object *obj) i915_gem_object_release_mmap_offset(obj); } +static struct i915_mmap_offset * +lookup_mmo(struct drm_i915_gem_object *obj, + enum i915_mmap_type mmap_type) +{ + struct rb_node *rb; + + spin_lock(&obj->mmo.lock); + rb = obj->mmo.offsets.rb_node; + while (rb) { + struct i915_mmap_offset *mmo = + rb_entry(rb, typeof(*mmo), offset); + + if (mmo->mmap_type == mmap_type) { + spin_unlock(&obj->mmo.lock); + return mmo; + } else if (mmo->mmap_type < mmap_type) { + rb = rb->rb_right; + } else { + rb = rb->rb_left; + } + + } + spin_unlock(&obj->mmo.lock); + + return NULL; +} + +static struct i915_mmap_offset * +insert_mmo(struct drm_i915_gem_object *obj, struct i915_mmap_offset *mmo) +{ + struct rb_node *rb, **p; + + spin_lock(&obj->mmo.lock); + rb = NULL; + p = &obj->mmo.offsets.rb_node; + while (*p) { + struct i915_mmap_offset *pos; + + rb = *p; + pos = rb_entry(rb, typeof(*pos), offset); + + if (pos->mmap_type < mmo->mmap_type) + p = &rb->rb_right; + else + p = &rb->rb_left; + } + rb_link_node(&mmo->offset, rb, p); + rb_insert_color(&mmo->offset, &obj->mmo.offsets); + spin_unlock(&obj->mmo.lock); + + return mmo; +} + static struct i915_mmap_offset * mmap_offset_attach(struct drm_i915_gem_object *obj, enum i915_mmap_type mmap_type, @@ -496,18 +550,23 @@ mmap_offset_attach(struct drm_i915_gem_object *obj, struct i915_mmap_offset *mmo; int err; + mmo = lookup_mmo(obj, mmap_type); + if (mmo) { + if (file) + drm_vma_node_allow(&mmo->vma_node, file); + return mmo; + } + mmo = kmalloc(sizeof(*mmo), GFP_KERNEL); if (!mmo) return ERR_PTR(-ENOMEM); mmo->obj = obj; - mmo->dev = obj->base.dev; - mmo->file = file; mmo->mmap_type = mmap_type; drm_vma_node_reset(&mmo->vma_node); - err = drm_vma_offset_add(mmo->dev->vma_offset_manager, &mmo->vma_node, - obj->base.size / PAGE_SIZE); + err = drm_vma_offset_add(obj->base.dev->vma_offset_manager, + &mmo->vma_node, obj->base.size / PAGE_SIZE); if (likely(!err)) goto out; @@ -517,8 +576,8 @@ mmap_offset_attach(struct drm_i915_gem_object *obj, goto err; i915_gem_drain_freed_objects(i915); - err = drm_vma_offset_add(mmo->dev->vma_offset_manager, &mmo->vma_node, - obj->base.size / PAGE_SIZE); + err = drm_vma_offset_add(obj->base.dev->vma_offset_manager, + &mmo->vma_node, obj->base.size / PAGE_SIZE); if (err) goto err; @@ -526,11 +585,7 @@ mmap_offset_attach(struct drm_i915_gem_object *obj, if (file) drm_vma_node_allow(&mmo->vma_node, file); - spin_lock(&obj->mmo.lock); - list_add(&mmo->offset, &obj->mmo.offsets); - spin_unlock(&obj->mmo.lock); - - return mmo; + return insert_mmo(obj, mmo); err: kfree(mmo); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c b/drivers/gpu/drm/i915/gem/i915_gem_object.c index 46bacc82ddc4..34e75a7fec81 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c @@ -63,7 +63,7 @@ void i915_gem_object_init(struct drm_i915_gem_object *obj, INIT_LIST_HEAD(&obj->lut_list); spin_lock_init(&obj->mmo.lock); - INIT_LIST_HEAD(&obj->mmo.offsets); + obj->mmo.offsets = RB_ROOT; init_rcu_head(&obj->rcu); @@ -100,8 +100,8 @@ void i915_gem_close_object(struct drm_gem_object *gem, struct drm_file *file) { struct drm_i915_gem_object *obj = to_intel_bo(gem); struct drm_i915_file_private *fpriv = file->driver_priv; + struct i915_mmap_offset *mmo, *mn; struct i915_lut_handle *lut, *ln; - struct i915_mmap_offset *mmo; LIST_HEAD(close); i915_gem_object_lock(obj); @@ -117,14 +117,8 @@ void i915_gem_close_object(struct drm_gem_object *gem, struct drm_file *file) i915_gem_object_unlock(obj); spin_lock(&obj->mmo.lock); - list_for_each_entry(mmo, &obj->mmo.offsets, offset) { - if (mmo->file != file) - continue; - - spin_unlock(&obj->mmo.lock); + rbtree_postorder_for_each_entry_safe(mmo, mn, &obj->mmo.offsets, offset) drm_vma_node_revoke(&mmo->vma_node, file); - spin_lock(&obj->mmo.lock); - } spin_unlock(&obj->mmo.lock); list_for_each_entry_safe(lut, ln, &close, obj_link) { @@ -203,12 +197,13 @@ static void __i915_gem_free_objects(struct drm_i915_private *i915, i915_gem_object_release_mmap(obj); - list_for_each_entry_safe(mmo, mn, &obj->mmo.offsets, offset) { + rbtree_postorder_for_each_entry_safe(mmo, mn, + &obj->mmo.offsets, + offset) { drm_vma_offset_remove(obj->base.dev->vma_offset_manager, &mmo->vma_node); kfree(mmo); } - INIT_LIST_HEAD(&obj->mmo.offsets); GEM_BUG_ON(atomic_read(&obj->bind_count)); GEM_BUG_ON(obj->userfault_count); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h index 88e268633fdc..f64ad77e6b1e 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h @@ -71,13 +71,11 @@ enum i915_mmap_type { }; struct i915_mmap_offset { - struct drm_device *dev; struct drm_vma_offset_node vma_node; struct drm_i915_gem_object *obj; - struct drm_file *file; enum i915_mmap_type mmap_type; - struct list_head offset; + struct rb_node offset; }; struct drm_i915_gem_object { @@ -137,7 +135,7 @@ struct drm_i915_gem_object { struct { spinlock_t lock; /* Protects access to mmo offsets */ - struct list_head offsets; + struct rb_root offsets; } mmo; I915_SELFTEST_DECLARE(struct list_head st_link); -- 2.25.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) 2020-01-17 22:00 [Intel-gfx] [PATCH] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list Chris Wilson 2020-01-17 22:06 ` Chris Wilson 2020-01-17 22:29 ` [Intel-gfx] [PATCH v2] " Chris Wilson @ 2020-01-18 2:38 ` Patchwork 2020-01-18 3:20 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork 2020-01-18 3:20 ` [Intel-gfx] ✗ Fi.CI.BUILD: warning " Patchwork 4 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2020-01-18 2:38 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) URL : https://patchwork.freedesktop.org/series/72221/ State : warning == Summary == $ dim checkpatch origin/drm-tip a9954bbab8d0 drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list -:66: CHECK:BRACES: Blank lines aren't necessary before a close brace '}' #66: FILE: drivers/gpu/drm/i915/gem/i915_gem_mman.c:512: + + } total: 0 errors, 0 warnings, 1 checks, 190 lines checked _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) 2020-01-17 22:00 [Intel-gfx] [PATCH] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list Chris Wilson ` (2 preceding siblings ...) 2020-01-18 2:38 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) Patchwork @ 2020-01-18 3:20 ` Patchwork 2020-01-18 3:20 ` [Intel-gfx] ✗ Fi.CI.BUILD: warning " Patchwork 4 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2020-01-18 3:20 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) URL : https://patchwork.freedesktop.org/series/72221/ State : failure == Summary == CI Bug Log - changes from CI_DRM_7769 -> Patchwork_16162 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_16162 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_16162, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/index.html Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_16162: ### IGT changes ### #### Possible regressions #### * igt@gem_busy@busy-all: - fi-bsw-nick: NOTRUN -> [INCOMPLETE][1] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bsw-nick/igt@gem_busy@busy-all.html - fi-bsw-kefka: NOTRUN -> [INCOMPLETE][2] [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bsw-kefka/igt@gem_busy@busy-all.html - fi-hsw-4770r: NOTRUN -> [DMESG-WARN][3] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-hsw-4770r/igt@gem_busy@busy-all.html - fi-hsw-peppy: NOTRUN -> [DMESG-WARN][4] [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-hsw-peppy/igt@gem_busy@busy-all.html - fi-pnv-d510: [PASS][5] -> [DMESG-WARN][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-pnv-d510/igt@gem_busy@busy-all.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-pnv-d510/igt@gem_busy@busy-all.html - fi-cfl-8700k: [PASS][7] -> [INCOMPLETE][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-cfl-8700k/igt@gem_busy@busy-all.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-cfl-8700k/igt@gem_busy@busy-all.html - fi-snb-2520m: NOTRUN -> [DMESG-WARN][9] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-snb-2520m/igt@gem_busy@busy-all.html - fi-blb-e6850: [PASS][10] -> [DMESG-WARN][11] [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-blb-e6850/igt@gem_busy@busy-all.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-blb-e6850/igt@gem_busy@busy-all.html - fi-elk-e7500: [PASS][12] -> [DMESG-WARN][13] [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-elk-e7500/igt@gem_busy@busy-all.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-elk-e7500/igt@gem_busy@busy-all.html - fi-cfl-guc: [PASS][14] -> [INCOMPLETE][15] [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-cfl-guc/igt@gem_busy@busy-all.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-cfl-guc/igt@gem_busy@busy-all.html - fi-hsw-4770: [PASS][16] -> [DMESG-WARN][17] [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-hsw-4770/igt@gem_busy@busy-all.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-hsw-4770/igt@gem_busy@busy-all.html - fi-bsw-n3050: NOTRUN -> [INCOMPLETE][18] [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bsw-n3050/igt@gem_busy@busy-all.html - fi-ilk-650: [PASS][19] -> [DMESG-WARN][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-ilk-650/igt@gem_busy@busy-all.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-ilk-650/igt@gem_busy@busy-all.html - fi-whl-u: [PASS][21] -> [INCOMPLETE][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-whl-u/igt@gem_busy@busy-all.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-whl-u/igt@gem_busy@busy-all.html - fi-byt-j1900: [PASS][23] -> [DMESG-WARN][24] [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-byt-j1900/igt@gem_busy@busy-all.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-byt-j1900/igt@gem_busy@busy-all.html - fi-snb-2600: NOTRUN -> [DMESG-WARN][25] [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-snb-2600/igt@gem_busy@busy-all.html * igt@gem_mmap_gtt@basic: - fi-gdg-551: [PASS][26] -> [DMESG-WARN][27] [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-gdg-551/igt@gem_mmap_gtt@basic.html [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-gdg-551/igt@gem_mmap_gtt@basic.html * igt@runner@aborted: - fi-kbl-x1275: NOTRUN -> [FAIL][28] [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-x1275/igt@runner@aborted.html - fi-bsw-kefka: NOTRUN -> [FAIL][29] [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bsw-kefka/igt@runner@aborted.html - fi-cfl-8700k: NOTRUN -> [FAIL][30] [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-cfl-8700k/igt@runner@aborted.html - fi-gdg-551: NOTRUN -> [FAIL][31] [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-gdg-551/igt@runner@aborted.html - fi-bsw-nick: NOTRUN -> [FAIL][32] [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bsw-nick/igt@runner@aborted.html - fi-apl-guc: NOTRUN -> [FAIL][33] [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-apl-guc/igt@runner@aborted.html - fi-kbl-r: NOTRUN -> [FAIL][34] [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-r/igt@runner@aborted.html - fi-kbl-soraka: NOTRUN -> [FAIL][35] [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-soraka/igt@runner@aborted.html - fi-kbl-7500u: NOTRUN -> [FAIL][36] [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-7500u/igt@runner@aborted.html - fi-kbl-guc: NOTRUN -> [FAIL][37] [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-guc/igt@runner@aborted.html - fi-whl-u: NOTRUN -> [FAIL][38] [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-whl-u/igt@runner@aborted.html - fi-bxt-dsi: NOTRUN -> [FAIL][39] [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bxt-dsi/igt@runner@aborted.html - fi-cfl-guc: NOTRUN -> [FAIL][40] [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-cfl-guc/igt@runner@aborted.html - fi-bsw-n3050: NOTRUN -> [FAIL][41] [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bsw-n3050/igt@runner@aborted.html #### Warnings #### * igt@runner@aborted: - fi-kbl-8809g: [FAIL][42] ([i915#858]) -> [FAIL][43] [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-kbl-8809g/igt@runner@aborted.html [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-8809g/igt@runner@aborted.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * igt@runner@aborted: - {fi-kbl-7560u}: NOTRUN -> [FAIL][44] [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-7560u/igt@runner@aborted.html Known issues ------------ Here are the changes found in Patchwork_16162 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_busy@busy-all: - fi-bdw-5557u: [PASS][45] -> [INCOMPLETE][46] ([i915#667]) [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-bdw-5557u/igt@gem_busy@busy-all.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bdw-5557u/igt@gem_busy@busy-all.html - fi-kbl-8809g: [PASS][47] -> [INCOMPLETE][48] ([i915#667]) [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-kbl-8809g/igt@gem_busy@busy-all.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-8809g/igt@gem_busy@busy-all.html - fi-icl-guc: [PASS][49] -> [INCOMPLETE][50] ([i915#140]) [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-icl-guc/igt@gem_busy@busy-all.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-icl-guc/igt@gem_busy@busy-all.html - fi-skl-6770hq: [PASS][51] -> [INCOMPLETE][52] ([i915#667]) [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-skl-6770hq/igt@gem_busy@busy-all.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-skl-6770hq/igt@gem_busy@busy-all.html - fi-icl-dsi: [PASS][53] -> [INCOMPLETE][54] ([i915#140]) [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-icl-dsi/igt@gem_busy@busy-all.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-icl-dsi/igt@gem_busy@busy-all.html - fi-kbl-guc: [PASS][55] -> [INCOMPLETE][56] ([i915#667]) [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-kbl-guc/igt@gem_busy@busy-all.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-guc/igt@gem_busy@busy-all.html - fi-kbl-7500u: [PASS][57] -> [INCOMPLETE][58] ([i915#667]) [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-kbl-7500u/igt@gem_busy@busy-all.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-7500u/igt@gem_busy@busy-all.html - fi-kbl-x1275: [PASS][59] -> [INCOMPLETE][60] ([i915#667]) [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-kbl-x1275/igt@gem_busy@busy-all.html [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-x1275/igt@gem_busy@busy-all.html - fi-icl-u2: [PASS][61] -> [INCOMPLETE][62] ([i915#140]) [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-icl-u2/igt@gem_busy@busy-all.html [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-icl-u2/igt@gem_busy@busy-all.html - fi-icl-y: [PASS][63] -> [INCOMPLETE][64] ([i915#140]) [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-icl-y/igt@gem_busy@busy-all.html [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-icl-y/igt@gem_busy@busy-all.html - fi-apl-guc: [PASS][65] -> [INCOMPLETE][66] ([fdo#103927]) [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-apl-guc/igt@gem_busy@busy-all.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-apl-guc/igt@gem_busy@busy-all.html - fi-glk-dsi: [PASS][67] -> [INCOMPLETE][68] ([i915#58] / [k.org#198133]) [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-glk-dsi/igt@gem_busy@busy-all.html [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-glk-dsi/igt@gem_busy@busy-all.html - fi-cml-s: [PASS][69] -> [INCOMPLETE][70] ([i915#283]) [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-cml-s/igt@gem_busy@busy-all.html [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-cml-s/igt@gem_busy@busy-all.html - fi-skl-6700k2: [PASS][71] -> [INCOMPLETE][72] ([i915#667]) [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-skl-6700k2/igt@gem_busy@busy-all.html [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-skl-6700k2/igt@gem_busy@busy-all.html - fi-skl-guc: [PASS][73] -> [INCOMPLETE][74] ([i915#667]) [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-skl-guc/igt@gem_busy@busy-all.html [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-skl-guc/igt@gem_busy@busy-all.html - fi-icl-u3: [PASS][75] -> [INCOMPLETE][76] ([i915#140]) [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-icl-u3/igt@gem_busy@busy-all.html [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-icl-u3/igt@gem_busy@busy-all.html - fi-cml-u2: [PASS][77] -> [INCOMPLETE][78] ([i915#283]) [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-cml-u2/igt@gem_busy@busy-all.html [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-cml-u2/igt@gem_busy@busy-all.html - fi-bxt-dsi: [PASS][79] -> [INCOMPLETE][80] ([fdo#103927]) [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-bxt-dsi/igt@gem_busy@busy-all.html [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-bxt-dsi/igt@gem_busy@busy-all.html - fi-kbl-soraka: [PASS][81] -> [INCOMPLETE][82] ([i915#667]) [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-kbl-soraka/igt@gem_busy@busy-all.html [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-kbl-soraka/igt@gem_busy@busy-all.html #### Warnings #### * igt@runner@aborted: - fi-cml-s: [FAIL][83] ([fdo#111764] / [i915#577]) -> [FAIL][84] ([fdo#111893] / [i915#577]) [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7769/fi-cml-s/igt@runner@aborted.html [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/fi-cml-s/igt@runner@aborted.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#111764]: https://bugs.freedesktop.org/show_bug.cgi?id=111764 [fdo#111893]: https://bugs.freedesktop.org/show_bug.cgi?id=111893 [i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140 [i915#283]: https://gitlab.freedesktop.org/drm/intel/issues/283 [i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472 [i915#577]: https://gitlab.freedesktop.org/drm/intel/issues/577 [i915#58]: https://gitlab.freedesktop.org/drm/intel/issues/58 [i915#667]: https://gitlab.freedesktop.org/drm/intel/issues/667 [i915#858]: https://gitlab.freedesktop.org/drm/intel/issues/858 [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133 Participating hosts (42 -> 42) ------------------------------ Additional (9): fi-hsw-4770r fi-hsw-peppy fi-snb-2520m fi-kbl-r fi-bsw-kefka fi-kbl-7560u fi-bsw-nick fi-skl-6600u fi-snb-2600 Missing (9): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-bwr-2160 fi-ivb-3770 fi-skl-lmem fi-byt-n2820 fi-byt-clapper Build changes ------------- * CI: CI-20190529 -> None * Linux: CI_DRM_7769 -> Patchwork_16162 CI-20190529: 20190529 CI_DRM_7769: 15e78429922635916a012ba594255cf07a5b07ad @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5372: 0d00a27fbbd4d4a77d24499ea9811e07e65eb0ac @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_16162: a9954bbab8d032c65b2af034e91628ba7152dbcd @ git://anongit.freedesktop.org/gfx-ci/linux == Kernel 32bit build == Warning: Kernel 32bit buildtest failed: https://intel-gfx-ci.01.org/Patchwork_16162/build_32bit.log CALL scripts/checksyscalls.sh CALL scripts/atomic/check-atomics.sh CHK include/generated/compile.h Kernel: arch/x86/boot/bzImage is ready (#1) Building modules, stage 2. MODPOST 122 modules ERROR: "__udivdi3" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined! scripts/Makefile.modpost:93: recipe for target '__modpost' failed make[1]: *** [__modpost] Error 1 Makefile:1282: recipe for target 'modules' failed make: *** [modules] Error 2 == Linux commits == a9954bbab8d0 drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/index.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BUILD: warning for drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) 2020-01-17 22:00 [Intel-gfx] [PATCH] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list Chris Wilson ` (3 preceding siblings ...) 2020-01-18 3:20 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork @ 2020-01-18 3:20 ` Patchwork 4 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2020-01-18 3:20 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) URL : https://patchwork.freedesktop.org/series/72221/ State : warning == Summary == CALL scripts/checksyscalls.sh CALL scripts/atomic/check-atomics.sh CHK include/generated/compile.h Kernel: arch/x86/boot/bzImage is ready (#1) Building modules, stage 2. MODPOST 122 modules ERROR: "__udivdi3" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined! scripts/Makefile.modpost:93: recipe for target '__modpost' failed make[1]: *** [__modpost] Error 1 Makefile:1282: recipe for target 'modules' failed make: *** [modules] Error 2 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16162/build_32bit.log _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-01-18 3:20 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-01-17 22:00 [Intel-gfx] [PATCH] drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list Chris Wilson 2020-01-17 22:06 ` Chris Wilson 2020-01-17 22:29 ` [Intel-gfx] [PATCH v2] " Chris Wilson 2020-01-18 2:38 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gem: Store mmap_offsets in an rbtree rather than a plain list (rev2) Patchwork 2020-01-18 3:20 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork 2020-01-18 3:20 ` [Intel-gfx] ✗ Fi.CI.BUILD: warning " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).