On Wed, Apr 20, 2016 at 03:23:10PM +0100, Robert Bragg wrote: > +static int alloc_oa_buffer(struct drm_i915_private *dev_priv) > +{ > + struct drm_i915_gem_object *bo; > + int ret; > + > + BUG_ON(dev_priv->perf.oa.oa_buffer.obj); > + > + ret = i915_mutex_lock_interruptible(dev_priv->dev); > + if (ret) > + return ret; > + > + bo = i915_gem_alloc_object(dev_priv->dev, OA_BUFFER_SIZE); > + if (bo == NULL) { > + DRM_ERROR("Failed to allocate OA buffer\n"); > + ret = -ENOMEM; > + goto unlock; > + } > + dev_priv->perf.oa.oa_buffer.obj = bo; > + > + ret = i915_gem_object_set_cache_level(bo, I915_CACHE_LLC); > + if (ret) > + goto err_unref; > + > + /* PreHSW required 512K alignment, HSW requires 16M */ > + ret = i915_gem_obj_ggtt_pin(bo, SZ_16M, 0); > + if (ret) > + goto err_unref; > + > + dev_priv->perf.oa.oa_buffer.gtt_offset = i915_gem_obj_ggtt_offset(bo); > + dev_priv->perf.oa.oa_buffer.addr = vmap_oa_buffer(bo); Now i915_gem_object_pin_map(bo) instead of manually vmapping it, and i915_gem_object_unpin_map() to release. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel