Hi Matthew, [auto build test ERROR on drm-intel/for-linux-next] [also build test ERROR on next-20161202] [cannot apply to v4.9-rc7] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Matthew-Auld/drm-i915-introduce-GEM_WARN_ON/20161203-231346 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: i386-allmodconfig (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=i386 All error/warnings (new ones prefixed by >>): In file included from drivers/gpu/drm/i915/i915_gem_request.h:30:0, from drivers/gpu/drm/i915/i915_gem_timeline.h:30, from drivers/gpu/drm/i915/i915_gem_gtt.h:40, from drivers/gpu/drm/i915/i915_vma.h:32, from drivers/gpu/drm/i915/i915_vma.c:25: drivers/gpu/drm/i915/i915_vma.c: In function 'i915_vma_bind': >> drivers/gpu/drm/i915/i915_gem.h:33:27: error: expected expression before 'do' #define GEM_WARN_ON(expr) do { } while (0) ^ >> drivers/gpu/drm/i915/i915_vma.c:179:6: note: in expansion of macro 'GEM_WARN_ON' if (GEM_WARN_ON(vma->node.start + vma->node.size < vma->node.start)) ^~~~~~~~~~~ >> drivers/gpu/drm/i915/i915_gem.h:33:27: error: expected expression before 'do' #define GEM_WARN_ON(expr) do { } while (0) ^ drivers/gpu/drm/i915/i915_vma.c:182:6: note: in expansion of macro 'GEM_WARN_ON' if (GEM_WARN_ON(vma->node.start + vma->node.size > vma->vm->total)) ^~~~~~~~~~~ vim +/GEM_WARN_ON +179 drivers/gpu/drm/i915/i915_vma.c 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21 * IN THE SOFTWARE. 22 * 23 */ 24 > 25 #include "i915_vma.h" 26 27 #include "i915_drv.h" 28 #include "intel_ringbuffer.h" 29 #include "intel_frontbuffer.h" 30 31 #include <drm/drm_gem.h> 32 33 static void 34 i915_vma_retire(struct i915_gem_active *active, 35 struct drm_i915_gem_request *rq) 36 { 37 const unsigned int idx = rq->engine->id; 38 struct i915_vma *vma = 39 container_of(active, struct i915_vma, last_read[idx]); 40 struct drm_i915_gem_object *obj = vma->obj; 41 42 GEM_BUG_ON(!i915_vma_has_active_engine(vma, idx)); 43 44 i915_vma_clear_active(vma, idx); 45 if (i915_vma_is_active(vma)) 46 return; 47 48 list_move_tail(&vma->vm_link, &vma->vm->inactive_list); 49 if (unlikely(i915_vma_is_closed(vma) && !i915_vma_is_pinned(vma))) 50 WARN_ON(i915_vma_unbind(vma)); 51 52 GEM_BUG_ON(!i915_gem_object_is_active(obj)); 53 if (--obj->active_count) 54 return; 55 56 /* Bump our place on the bound list to keep it roughly in LRU order 57 * so that we don't steal from recently used but inactive objects 58 * (unless we are forced to ofc!) 59 */ 60 if (obj->bind_count) 61 list_move_tail(&obj->global_link, &rq->i915->mm.bound_list); 62 63 obj->mm.dirty = true; /* be paranoid */ 64 65 if (i915_gem_object_has_active_reference(obj)) { 66 i915_gem_object_clear_active_reference(obj); 67 i915_gem_object_put(obj); 68 } 69 } 70 71 static struct i915_vma * 72 __i915_vma_create(struct drm_i915_gem_object *obj, 73 struct i915_address_space *vm, 74 const struct i915_ggtt_view *view) 75 { 76 struct i915_vma *vma; 77 struct rb_node *rb, **p; 78 int i; 79 80 GEM_BUG_ON(vm->closed); 81 82 vma = kmem_cache_zalloc(to_i915(obj->base.dev)->vmas, GFP_KERNEL); 83 if (vma == NULL) 84 return ERR_PTR(-ENOMEM); 85 86 INIT_LIST_HEAD(&vma->exec_list); 87 for (i = 0; i < ARRAY_SIZE(vma->last_read); i++) 88 init_request_active(&vma->last_read[i], i915_vma_retire); 89 init_request_active(&vma->last_fence, NULL); 90 list_add(&vma->vm_link, &vm->unbound_list); 91 vma->vm = vm; 92 vma->obj = obj; 93 vma->size = obj->base.size; 94 95 if (view) { 96 vma->ggtt_view = *view; 97 if (view->type == I915_GGTT_VIEW_PARTIAL) { 98 vma->size = view->params.partial.size; 99 vma->size <<= PAGE_SHIFT; 100 } else if (view->type == I915_GGTT_VIEW_ROTATED) { 101 vma->size = 102 intel_rotation_info_size(&view->params.rotated); 103 vma->size <<= PAGE_SHIFT; 104 } 105 } 106 107 if (i915_is_ggtt(vm)) { 108 vma->flags |= I915_VMA_GGTT; 109 list_add(&vma->obj_link, &obj->vma_list); 110 } else { 111 i915_ppgtt_get(i915_vm_to_ppgtt(vm)); 112 list_add_tail(&vma->obj_link, &obj->vma_list); 113 } 114 115 rb = NULL; 116 p = &obj->vma_tree.rb_node; 117 while (*p) { 118 struct i915_vma *pos; 119 120 rb = *p; 121 pos = rb_entry(rb, struct i915_vma, obj_node); 122 if (i915_vma_compare(pos, vm, view) < 0) 123 p = &rb->rb_right; 124 else 125 p = &rb->rb_left; 126 } 127 rb_link_node(&vma->obj_node, rb, p); 128 rb_insert_color(&vma->obj_node, &obj->vma_tree); 129 130 return vma; 131 } 132 133 struct i915_vma * 134 i915_vma_create(struct drm_i915_gem_object *obj, 135 struct i915_address_space *vm, 136 const struct i915_ggtt_view *view) 137 { 138 lockdep_assert_held(&obj->base.dev->struct_mutex); 139 GEM_BUG_ON(view && !i915_is_ggtt(vm)); 140 GEM_BUG_ON(i915_gem_obj_to_vma(obj, vm, view)); 141 142 return __i915_vma_create(obj, vm, view); 143 } 144 145 /** 146 * i915_vma_bind - Sets up PTEs for an VMA in it's corresponding address space. 147 * @vma: VMA to map 148 * @cache_level: mapping cache level 149 * @flags: flags like global or local mapping 150 * 151 * DMA addresses are taken from the scatter-gather table of this object (or of 152 * this VMA in case of non-default GGTT views) and PTE entries set up. 153 * Note that DMA addresses are also the only part of the SG table we care about. 154 */ 155 int i915_vma_bind(struct i915_vma *vma, enum i915_cache_level cache_level, 156 u32 flags) 157 { 158 u32 bind_flags; 159 u32 vma_flags; 160 int ret; 161 162 if (WARN_ON(flags == 0)) 163 return -EINVAL; 164 165 bind_flags = 0; 166 if (flags & PIN_GLOBAL) 167 bind_flags |= I915_VMA_GLOBAL_BIND; 168 if (flags & PIN_USER) 169 bind_flags |= I915_VMA_LOCAL_BIND; 170 171 vma_flags = vma->flags & (I915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND); 172 if (flags & PIN_UPDATE) 173 bind_flags |= vma_flags; 174 else 175 bind_flags &= ~vma_flags; 176 if (bind_flags == 0) 177 return 0; 178 > 179 if (GEM_WARN_ON(vma->node.start + vma->node.size < vma->node.start)) 180 return -ENODEV; 181 182 if (GEM_WARN_ON(vma->node.start + vma->node.size > vma->vm->total)) --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip
_______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx