From: Daniel Vetter <daniel@ffwll.ch>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 10/38] drm/i915: Remove highly confusing i915_gem_obj_ggtt_pin()
Date: Wed, 8 Jun 2016 11:43:57 +0200 [thread overview]
Message-ID: <20160608094357.GU3363@phenom.ffwll.local> (raw)
In-Reply-To: <1464972953-2726-11-git-send-email-chris@chris-wilson.co.uk>
On Fri, Jun 03, 2016 at 05:55:25PM +0100, Chris Wilson wrote:
> Since i915_gem_obj_ggtt_pin() is an idiom breaking curry function for
> i915_gem_object_ggtt_pin(), spare us the confustion and remove it.
> Removing it now simplifies later patches to change the i915_vma_pin()
> (and friends) interface.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diff looks like accidentally squashed in speed-up to help gcc along with
bitfields in vma. Needs to be unsquashed.
-Daniel
> ---
> drivers/gpu/drm/i915/i915_drv.h | 35 ++++++++-------------
> drivers/gpu/drm/i915/i915_gem.c | 46 +++++++++++++--------------
> drivers/gpu/drm/i915/i915_gem_context.c | 5 ++-
> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 10 +++---
> drivers/gpu/drm/i915/i915_gem_gtt.h | 47 +++++++++++++++-------------
> drivers/gpu/drm/i915/i915_gem_render_state.c | 2 +-
> drivers/gpu/drm/i915/i915_guc_submission.c | 4 +--
> drivers/gpu/drm/i915/intel_guc_loader.c | 2 +-
> drivers/gpu/drm/i915/intel_lrc.c | 8 +++--
> drivers/gpu/drm/i915/intel_overlay.c | 3 +-
> drivers/gpu/drm/i915/intel_ringbuffer.c | 16 +++++-----
> 11 files changed, 89 insertions(+), 89 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index f537d8fc5e0f..861d132b2fe4 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2934,32 +2934,32 @@ void i915_gem_free_object(struct drm_gem_object *obj);
> int __must_check
> i915_vma_pin(struct i915_vma *vma, u64 size, u64 alignment, u64 flags);
> /* Flags used by pin/bind&friends. */
> -#define PIN_MAPPABLE (1<<0)
> -#define PIN_NONBLOCK (1<<1)
> -#define PIN_GLOBAL (1<<2)
> -#define PIN_OFFSET_BIAS (1<<3)
> -#define PIN_USER (1<<4)
> -#define PIN_UPDATE (1<<5)
> -#define PIN_ZONE_4G (1<<6)
> -#define PIN_HIGH (1<<7)
> -#define PIN_OFFSET_FIXED (1<<8)
> +#define PIN_GLOBAL (1<<0)
> +#define PIN_USER (1<<1)
> +#define PIN_UPDATE (1<<2)
> +#define PIN_MAPPABLE (1<<3)
> +#define PIN_ZONE_4G (1<<4)
> +#define PIN_NONBLOCK (1<<5)
> +#define PIN_HIGH (1<<6)
> +#define PIN_OFFSET_BIAS (1<<7)
> +#define PIN_OFFSET_FIXED (1<<8)
> #define PIN_OFFSET_MASK (~4095)
>
> static inline void __i915_vma_pin(struct i915_vma *vma)
> {
> GEM_BUG_ON(vma->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT);
> - vma->pin_count++;
> + vma->flags++;
> }
>
> static inline bool i915_vma_is_pinned(struct i915_vma *vma)
> {
> - return vma->pin_count;
> + return vma->flags & DRM_I915_GEM_OBJECT_MAX_PIN_COUNT;
> }
>
> static inline void __i915_vma_unpin(struct i915_vma *vma)
> {
> GEM_BUG_ON(!i915_vma_is_pinned(vma));
> - vma->pin_count--;
> + vma->flags--;
> }
>
> static inline void i915_vma_unpin(struct i915_vma *vma)
> @@ -2972,7 +2972,7 @@ int __must_check
> i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj,
> const struct i915_ggtt_view *view,
> uint64_t size,
> - uint32_t alignment,
> + uint64_t alignment,
> uint64_t flags);
>
> int i915_vma_bind(struct i915_vma *vma, enum i915_cache_level cache_level,
> @@ -3223,15 +3223,6 @@ static inline bool i915_gem_obj_ggtt_bound(struct drm_i915_gem_object *obj)
> unsigned long
> i915_gem_obj_ggtt_size(struct drm_i915_gem_object *obj);
>
> -static inline int __must_check
> -i915_gem_obj_ggtt_pin(struct drm_i915_gem_object *obj,
> - uint32_t alignment,
> - unsigned flags)
> -{
> - return i915_gem_object_ggtt_pin(obj, &i915_ggtt_view_normal,
> - 0, alignment, flags);
> -}
> -
> void i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj,
> const struct i915_ggtt_view *view);
> static inline void
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 71a32a9f9858..53776a071ce7 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -772,7 +772,9 @@ i915_gem_gtt_pwrite_fast(struct drm_device *dev,
> char __user *user_data;
> int page_offset, page_length, ret;
>
> - ret = i915_gem_obj_ggtt_pin(obj, 0, PIN_MAPPABLE | PIN_NONBLOCK);
> + ret = i915_gem_object_ggtt_pin(obj, NULL,
> + 0, 0,
> + PIN_MAPPABLE | PIN_NONBLOCK);
> if (ret)
> goto out;
>
> @@ -3408,32 +3410,35 @@ void __i915_vma_set_map_and_fenceable(struct i915_vma *vma)
> int
> i915_vma_pin(struct i915_vma *vma, u64 size, u64 alignment, u64 flags)
> {
> - unsigned bound = vma->bound;
> + unsigned bound;
> int ret;
>
> GEM_BUG_ON((flags & (PIN_GLOBAL | PIN_USER)) == 0);
> GEM_BUG_ON((flags & PIN_GLOBAL) && !vma->is_ggtt);
>
> - if (WARN_ON(vma->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT))
> - return -EBUSY;
> -
> /* Pin early to prevent the shrinker/eviction logic from destroying
> * our vma as we insert and bind.
> */
> - __i915_vma_pin(vma);
> + bound = vma->flags++;
> + if (WARN_ON((bound & 0xf) == (DRM_I915_GEM_OBJECT_MAX_PIN_COUNT-1))) {
> + ret = -EBUSY;
> + goto err;
> + }
>
> - if (!bound) {
> + if ((bound & 0xff) == 0) {
> ret = i915_vma_insert(vma, size, alignment, flags);
> if (ret)
> goto err;
> }
>
> - ret = i915_vma_bind(vma, vma->obj->cache_level, flags);
> - if (ret)
> - goto err;
> + if (~(bound >> 4) & (flags & (GLOBAL_BIND | LOCAL_BIND))) {
> + ret = i915_vma_bind(vma, vma->obj->cache_level, flags);
> + if (ret)
> + goto err;
>
> - if ((bound ^ vma->bound) & GLOBAL_BIND)
> - __i915_vma_set_map_and_fenceable(vma);
> + if ((bound ^ vma->flags) & (GLOBAL_BIND << 4))
> + __i915_vma_set_map_and_fenceable(vma);
> + }
>
> GEM_BUG_ON(i915_vma_misplaced(vma, size, alignment, flags));
> return 0;
> @@ -3447,13 +3452,14 @@ int
> i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj,
> const struct i915_ggtt_view *view,
> uint64_t size,
> - uint32_t alignment,
> + uint64_t alignment,
> uint64_t flags)
> {
> struct i915_vma *vma;
> int ret;
>
> - BUG_ON(!view);
> + if (view == NULL)
> + view = &i915_ggtt_view_normal;
>
> vma = i915_gem_obj_lookup_or_create_ggtt_vma(obj, view);
> if (IS_ERR(vma))
> @@ -3465,11 +3471,11 @@ i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj,
>
> WARN(vma->pin_count,
> "bo is already pinned in ggtt with incorrect alignment:"
> - " offset=%08x %08x, req.alignment=%x, req.map_and_fenceable=%d,"
> + " offset=%08x %08x, req.alignment=%llx, req.map_and_fenceable=%d,"
> " obj->map_and_fenceable=%d\n",
> upper_32_bits(vma->node.start),
> lower_32_bits(vma->node.start),
> - alignment,
> + (long long)alignment,
> !!(flags & PIN_MAPPABLE),
> obj->map_and_fenceable);
> ret = i915_vma_unbind(vma);
> @@ -3484,13 +3490,7 @@ void
> i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj,
> const struct i915_ggtt_view *view)
> {
> - struct i915_vma *vma = i915_gem_obj_to_ggtt_view(obj, view);
> -
> - GEM_BUG_ON(!vma);
> - WARN_ON(i915_vma_is_pinned(vma));
> - WARN_ON(!i915_gem_obj_ggtt_bound_view(obj, view));
> -
> - __i915_vma_unpin(vma);
> + i915_vma_unpin(i915_gem_obj_to_ggtt_view(obj, view));
> }
>
> int
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
> index 5ed91406d4e9..c9b8c2c62828 100644
> --- a/drivers/gpu/drm/i915/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> @@ -722,9 +722,8 @@ static int do_rcs_switch(struct drm_i915_gem_request *req)
> return 0;
>
> /* Trying to pin first makes error handling easier. */
> - ret = i915_gem_obj_ggtt_pin(to->engine[RCS].state,
> - to->ggtt_alignment,
> - 0);
> + ret = i915_gem_object_ggtt_pin(to->engine[RCS].state, NULL, 0,
> + to->ggtt_alignment, 0);
> if (ret)
> return ret;
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index cc9c0e4073ff..69bf73b51df9 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -34,10 +34,10 @@
> #include <linux/dma_remapping.h>
> #include <linux/uaccess.h>
>
> -#define __EXEC_OBJECT_HAS_PIN (1<<31)
> -#define __EXEC_OBJECT_HAS_FENCE (1<<30)
> -#define __EXEC_OBJECT_NEEDS_MAP (1<<29)
> -#define __EXEC_OBJECT_NEEDS_BIAS (1<<28)
> +#define __EXEC_OBJECT_HAS_PIN (1U<<31)
> +#define __EXEC_OBJECT_HAS_FENCE (1U<<30)
> +#define __EXEC_OBJECT_NEEDS_MAP (1U<<29)
> +#define __EXEC_OBJECT_NEEDS_BIAS (1U<<28)
>
> #define BATCH_OFFSET_BIAS (256*1024)
>
> @@ -1263,7 +1263,7 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *engine,
> if (ret)
> goto err;
>
> - ret = i915_gem_obj_ggtt_pin(shadow_batch_obj, 0, 0);
> + ret = i915_gem_object_ggtt_pin(shadow_batch_obj, NULL, 0, 0, 0);
> if (ret)
> goto err;
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h
> index 2bd8ec7e1948..5655358a60e1 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.h
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h
> @@ -184,13 +184,30 @@ struct i915_vma {
>
> struct i915_gem_active last_read[I915_NUM_ENGINES];
>
> - /** Flags and address space this VMA is bound to */
> + union {
> + struct {
> + /**
> + * How many users have pinned this object in GTT space. The following
> + * users can each hold at most one reference: pwrite/pread, execbuffer
> + * (objects are not allowed multiple times for the same batchbuffer),
> + * and the framebuffer code. When switching/pageflipping, the
> + * framebuffer code has at most two buffers pinned per crtc.
> + *
> + * In the worst case this is 1 + 1 + 1 + 2*2 = 7. That would fit into 3
> + * bits with absolutely no headroom. So use 4 bits. */
> + unsigned int pin_count : 4;
> +#define DRM_I915_GEM_OBJECT_MAX_PIN_COUNT 0xf
> +
> + /** Flags and address space this VMA is bound to */
> #define GLOBAL_BIND (1<<0)
> #define LOCAL_BIND (1<<1)
> - unsigned int bound : 4;
> - unsigned int active : I915_NUM_ENGINES;
> - bool is_ggtt : 1;
> - bool closed : 1;
> + unsigned int bound : 4;
> + unsigned int active : I915_NUM_ENGINES;
> + bool is_ggtt : 1;
> + bool closed : 1;
> + };
> + unsigned int flags;
> + };
>
> /**
> * Support different GGTT views into the same object.
> @@ -215,39 +232,27 @@ struct i915_vma {
> struct hlist_node exec_node;
> unsigned long exec_handle;
> struct drm_i915_gem_exec_object2 *exec_entry;
> -
> - /**
> - * How many users have pinned this object in GTT space. The following
> - * users can each hold at most one reference: pwrite/pread, execbuffer
> - * (objects are not allowed multiple times for the same batchbuffer),
> - * and the framebuffer code. When switching/pageflipping, the
> - * framebuffer code has at most two buffers pinned per crtc.
> - *
> - * In the worst case this is 1 + 1 + 1 + 2*2 = 7. That would fit into 3
> - * bits with absolutely no headroom. So use 4 bits. */
> - unsigned int pin_count:4;
> -#define DRM_I915_GEM_OBJECT_MAX_PIN_COUNT 0xf
> };
>
> static inline bool i915_vma_is_active(const struct i915_vma *vma)
> {
> - return vma->active;
> + return vma->flags & (((1 << I915_NUM_ENGINES) - 1) << 8);
> }
>
> static inline void i915_vma_set_active(struct i915_vma *vma, unsigned engine)
> {
> - vma->active |= 1 << engine;
> + vma->flags |= 0x100 << engine;
> }
>
> static inline void i915_vma_unset_active(struct i915_vma *vma, unsigned engine)
> {
> - vma->active &= ~(1 << engine);
> + vma->flags &= ~(0x100 << engine);
> }
>
> static inline bool i915_vma_has_active_engine(const struct i915_vma *vma,
> unsigned engine)
> {
> - return vma->active & (1 << engine);
> + return vma->flags & (0x100 << engine);
> }
>
> struct i915_page_dma {
> diff --git a/drivers/gpu/drm/i915/i915_gem_render_state.c b/drivers/gpu/drm/i915/i915_gem_render_state.c
> index c0abe9a2210f..4cf82697b3db 100644
> --- a/drivers/gpu/drm/i915/i915_gem_render_state.c
> +++ b/drivers/gpu/drm/i915/i915_gem_render_state.c
> @@ -72,7 +72,7 @@ static int render_state_init(struct render_state *so,
> if (IS_ERR(so->obj))
> return PTR_ERR(so->obj);
>
> - ret = i915_gem_obj_ggtt_pin(so->obj, 4096, 0);
> + ret = i915_gem_object_ggtt_pin(so->obj, NULL, 0, 0, 0);
> if (ret)
> goto free_gem;
>
> diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
> index cc4792df249d..63ef34c78494 100644
> --- a/drivers/gpu/drm/i915/i915_guc_submission.c
> +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
> @@ -613,8 +613,8 @@ static struct drm_i915_gem_object *gem_allocate_guc_obj(struct drm_device *dev,
> return NULL;
> }
>
> - if (i915_gem_obj_ggtt_pin(obj, PAGE_SIZE,
> - PIN_OFFSET_BIAS | GUC_WOPCM_TOP)) {
> + if (i915_gem_object_ggtt_pin(obj, NULL, 0, PAGE_SIZE,
> + PIN_OFFSET_BIAS | GUC_WOPCM_TOP)) {
> i915_gem_object_put(obj);
> return NULL;
> }
> diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
> index 74a5f11a5689..be93b458968a 100644
> --- a/drivers/gpu/drm/i915/intel_guc_loader.c
> +++ b/drivers/gpu/drm/i915/intel_guc_loader.c
> @@ -321,7 +321,7 @@ static int guc_ucode_xfer(struct drm_i915_private *dev_priv)
> return ret;
> }
>
> - ret = i915_gem_obj_ggtt_pin(guc_fw->guc_fw_obj, 0, 0);
> + ret = i915_gem_object_ggtt_pin(guc_fw->guc_fw_obj, NULL, 0, 0, 0);
> if (ret) {
> DRM_DEBUG_DRIVER("pin failed %d\n", ret);
> return ret;
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 964108cbb9c0..6cdc421fdc37 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -774,8 +774,9 @@ static int intel_lr_context_pin(struct i915_gem_context *ctx,
> if (ce->pin_count++)
> return 0;
>
> - ret = i915_gem_obj_ggtt_pin(ce->state, GEN8_LR_CONTEXT_ALIGN,
> - PIN_OFFSET_BIAS | GUC_WOPCM_TOP);
> + ret = i915_gem_object_ggtt_pin(ce->state, NULL,
> + 0, GEN8_LR_CONTEXT_ALIGN,
> + PIN_OFFSET_BIAS | GUC_WOPCM_TOP);
> if (ret)
> goto err;
>
> @@ -1154,7 +1155,8 @@ static int lrc_setup_wa_ctx_obj(struct intel_engine_cs *engine, u32 size)
> return ret;
> }
>
> - ret = i915_gem_obj_ggtt_pin(engine->wa_ctx.obj, PAGE_SIZE, 0);
> + ret = i915_gem_object_ggtt_pin(engine->wa_ctx.obj, NULL,
> + 0, PAGE_SIZE, 0);
> if (ret) {
> DRM_DEBUG_DRIVER("pin LRC WA ctx backing obj failed: %d\n",
> ret);
> diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c
> index 5f645ad2babd..9b0fb7e23cbb 100644
> --- a/drivers/gpu/drm/i915/intel_overlay.c
> +++ b/drivers/gpu/drm/i915/intel_overlay.c
> @@ -1412,7 +1412,8 @@ void intel_setup_overlay(struct drm_i915_private *dev_priv)
> }
> overlay->flip_addr = reg_bo->phys_handle->busaddr;
> } else {
> - ret = i915_gem_obj_ggtt_pin(reg_bo, PAGE_SIZE, PIN_MAPPABLE);
> + ret = i915_gem_object_ggtt_pin(reg_bo, NULL,
> + 0, PAGE_SIZE, PIN_MAPPABLE);
> if (ret) {
> DRM_ERROR("failed to pin overlay register bo\n");
> goto out_free_bo;
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index d63e4fdc60de..f86039455c5a 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -648,7 +648,7 @@ int intel_init_pipe_control(struct intel_engine_cs *engine, int size)
> goto err;
> }
>
> - ret = i915_gem_obj_ggtt_pin(obj, 4096, PIN_HIGH);
> + ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 4096, PIN_HIGH);
> if (ret)
> goto err_unref;
>
> @@ -1816,7 +1816,7 @@ static int init_status_page(struct intel_engine_cs *engine)
> * actualy map it).
> */
> flags |= PIN_MAPPABLE;
> - ret = i915_gem_obj_ggtt_pin(obj, 4096, flags);
> + ret = i915_gem_object_ggtt_pin(obj, NULL, 0, 4096, flags);
> if (ret) {
> err_unref:
> i915_gem_object_put(obj);
> @@ -1863,7 +1863,7 @@ int intel_ring_pin(struct intel_ring *ring)
> int ret;
>
> if (HAS_LLC(dev_priv) && !obj->stolen) {
> - ret = i915_gem_obj_ggtt_pin(obj, PAGE_SIZE, flags);
> + ret = i915_gem_object_ggtt_pin(obj, NULL, 0, PAGE_SIZE, flags);
> if (ret)
> return ret;
>
> @@ -1877,8 +1877,8 @@ int intel_ring_pin(struct intel_ring *ring)
> goto err_unpin;
> }
> } else {
> - ret = i915_gem_obj_ggtt_pin(obj, PAGE_SIZE,
> - flags | PIN_MAPPABLE);
> + ret = i915_gem_object_ggtt_pin(obj, NULL, 0, PAGE_SIZE,
> + flags | PIN_MAPPABLE);
> if (ret)
> return ret;
>
> @@ -2007,7 +2007,8 @@ static int intel_ring_context_pin(struct i915_gem_context *ctx,
> return 0;
>
> if (ce->state) {
> - ret = i915_gem_obj_ggtt_pin(ce->state, ctx->ggtt_alignment, 0);
> + ret = i915_gem_object_ggtt_pin(ce->state, NULL, 0,
> + ctx->ggtt_alignment, 0);
> if (ret)
> goto error;
> }
> @@ -2574,7 +2575,8 @@ int intel_init_render_ring_buffer(struct drm_device *dev)
> i915.semaphores = 0;
> } else {
> i915_gem_object_set_cache_level(obj, I915_CACHE_LLC);
> - ret = i915_gem_obj_ggtt_pin(obj, 0, PIN_NONBLOCK);
> + ret = i915_gem_object_ggtt_pin(obj, NULL,
> + 0, 0, 0);
> if (ret != 0) {
> i915_gem_object_put(obj);
> DRM_ERROR("Failed to pin semaphore bo. Disabling semaphores\n");
> --
> 2.8.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-06-08 9:44 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-03 16:55 Tracking VMA Chris Wilson
2016-06-03 16:55 ` [PATCH 01/38] drm/i915: Combine loops within i915_gem_evict_something Chris Wilson
2016-06-03 16:55 ` [PATCH 02/38] drm/i915: Remove surplus drm_device parameter to i915_gem_evict_something() Chris Wilson
2016-06-03 16:55 ` [PATCH 03/38] drm/i915: Double check the active status on the batch pool Chris Wilson
2016-06-03 16:55 ` [PATCH 04/38] drm/i915: Remove request retirement before each batch Chris Wilson
2016-06-06 13:40 ` Mika Kuoppala
2016-06-03 16:55 ` [PATCH 05/38] drm/i915: Remove i915_gem_execbuffer_retire_commands() Chris Wilson
2016-06-06 14:26 ` Mika Kuoppala
2016-06-03 16:55 ` [PATCH 06/38] drm/i915: Pad GTT views of exec objects up to user specified size Chris Wilson
2016-06-08 9:41 ` Daniel Vetter
2016-06-08 10:08 ` Chris Wilson
2016-06-03 16:55 ` [PATCH 07/38] drm/i915: Split insertion/binding of an object into the VM Chris Wilson
2016-06-03 16:55 ` [PATCH 08/38] drm/i915: Record allocated vma size Chris Wilson
2016-06-03 16:55 ` [PATCH 09/38] drm/i915: Start passing around i915_vma from execbuffer Chris Wilson
2016-06-03 16:55 ` [PATCH 10/38] drm/i915: Remove highly confusing i915_gem_obj_ggtt_pin() Chris Wilson
2016-06-08 9:43 ` Daniel Vetter [this message]
2016-06-08 12:58 ` Chris Wilson
2016-06-03 16:55 ` [PATCH 11/38] drm/i915: Make fb_tracking.lock a spinlock Chris Wilson
2016-06-03 16:55 ` [PATCH 12/38] drm/i915: Use atomics to manipulate obj->frontbuffer_bits Chris Wilson
2016-06-03 16:55 ` [PATCH 13/38] drm/i915: Move obj->active:5 to obj->flags Chris Wilson
2016-06-08 9:53 ` Daniel Vetter
2016-06-03 16:55 ` [PATCH 14/38] drm/i915: Move i915_gem_object_wait_rendering() Chris Wilson
2016-06-03 16:55 ` [PATCH 15/38] drm/i915: Mark all current requests as complete before resetting them Chris Wilson
2016-06-03 16:55 ` [PATCH 16/38] drm/i915: Enable lockless lookup of request tracking via RCU Chris Wilson
2016-06-03 16:55 ` [PATCH 17/38] drm/i915: Introduce i915_gem_active_wait_unlocked() Chris Wilson
2016-06-03 16:55 ` [PATCH 18/38] drm/i915: Convert non-blocking waits for requests over to using RCU Chris Wilson
2016-06-03 16:55 ` [PATCH 19/38] drm/i915: Convert non-blocking userptr " Chris Wilson
2016-06-03 16:55 ` [PATCH 20/38] drm/i915/userptr: Remove superfluous interruptible=false on waiting Chris Wilson
2016-06-03 16:55 ` [PATCH 21/38] drm/i915: Avoid requiring struct_mutex during suspend Chris Wilson
2016-06-03 16:55 ` [PATCH 22/38] drm/gem/shrinker: Wait before acquiring struct_mutex under oom Chris Wilson
2016-06-08 9:57 ` Daniel Vetter
2016-06-08 10:04 ` Chris Wilson
2016-06-03 16:55 ` [PATCH 23/38] suspend Chris Wilson
2016-06-03 16:55 ` [PATCH 24/38] drm/i915: Do a nonblocking wait first in pread/pwrite Chris Wilson
2016-06-03 16:55 ` [PATCH 25/38] drm/i915: Remove (struct_mutex) locking for wait-ioctl Chris Wilson
2016-06-03 16:55 ` [PATCH 26/38] drm/i915: Remove (struct_mutex) locking for busy-ioctl Chris Wilson
2016-06-03 16:55 ` [PATCH 27/38] drm/i915: Reduce locking inside swfinish ioctl Chris Wilson
2016-06-08 9:59 ` Daniel Vetter
2016-06-08 10:03 ` Chris Wilson
2016-06-03 16:55 ` [PATCH 28/38] drm/i915: Remove pinned check from madvise ioctl Chris Wilson
2016-06-08 10:01 ` Daniel Vetter
2016-06-03 16:55 ` [PATCH 29/38] drm/i915: Remove locking for get_tiling Chris Wilson
2016-06-08 10:02 ` Daniel Vetter
2016-06-08 10:11 ` Chris Wilson
2016-06-13 14:19 ` Daniel Vetter
2016-06-03 16:55 ` [PATCH 30/38] drm/i915: Assert that the request hasn't been retired Chris Wilson
2016-06-03 16:55 ` [PATCH 31/38] drm/i915: Reduce amount of duplicate buffer information captured on error Chris Wilson
2016-06-03 16:55 ` [PATCH 32/38] drm/i915: Stop the machine whilst capturing the GPU crash dump Chris Wilson
2016-06-08 10:06 ` Daniel Vetter
2016-06-08 11:37 ` Chris Wilson
2016-06-03 16:55 ` [PATCH 33/38] drm/i915: Scan GGTT active list for context object Chris Wilson
2016-06-03 16:55 ` [PATCH 34/38] drm/i915: Move setting of request->batch into its single callsite Chris Wilson
2016-06-03 16:55 ` [PATCH 35/38] drm/i915: Mark unmappable GGTT entries as PIN_HIGH Chris Wilson
2016-06-03 16:55 ` [PATCH 36/38] drm/i915: Track pinned vma inside guc Chris Wilson
2016-06-03 16:55 ` [PATCH 37/38] drm/i915: Track pinned VMA Chris Wilson
2016-06-08 10:08 ` Daniel Vetter
2016-06-03 16:55 ` [PATCH 38/38] drm/i915/overlay: Use VMA as the primary tracker for images Chris Wilson
2016-06-06 10:42 ` ✗ Ro.CI.BAT: failure for series starting with [01/38] drm/i915: Combine loops within i915_gem_evict_something Patchwork
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=20160608094357.GU3363@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.org \
/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.