From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 54/73] drm/i915: Fix up vma alignment to be u64
Date: Mon, 01 Aug 2016 15:21:26 +0300 [thread overview]
Message-ID: <1470054086.4174.9.camel@linux.intel.com> (raw)
In-Reply-To: <1470042681-25318-55-git-send-email-chris@chris-wilson.co.uk>
On ma, 2016-08-01 at 10:11 +0100, Chris Wilson wrote:
> This is not the full fix, as we are required to percolate the u64 nature
> down through the drm_mm stack, but this is required now to prevent
> explosions due to mismatch between execbuf (eb_vma_misplaced) and vma
> binding (i915_vma_misplaced) - and reduces the risk of spurious changes
> as we adjust the vma interface in the next patches.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 14 ++++++--------
> drivers/gpu/drm/i915/i915_gem.c | 26 +++++++++++++-------------
> drivers/gpu/drm/i915/i915_gem_evict.c | 5 +++--
> 3 files changed, 22 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 2de3d16f7b80..74a31358fd87 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -3032,13 +3032,13 @@ void i915_gem_free_object(struct drm_gem_object *obj);
> int __must_check
> i915_gem_object_pin(struct drm_i915_gem_object *obj,
> struct i915_address_space *vm,
> - uint32_t alignment,
> - uint64_t flags);
> + u64 alignment,
> + u64 flags);
> int __must_check
> i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj,
> const struct i915_ggtt_view *view,
> - uint32_t alignment,
> - uint64_t flags);
> + u64 alignment,
> + u64 flags);
>
> int i915_vma_bind(struct i915_vma *vma, enum i915_cache_level cache_level,
> u32 flags);
> @@ -3398,11 +3398,9 @@ int i915_gem_context_reset_stats_ioctl(struct drm_device *dev, void *data,
>
> /* i915_gem_evict.c */
> int __must_check i915_gem_evict_something(struct i915_address_space *vm,
> - int min_size,
> - unsigned alignment,
> + u64 min_size, u64 alignment,
> unsigned cache_level,
> - unsigned long start,
> - unsigned long end,
> + u64 start, u64 end,
> unsigned flags);
> int __must_check i915_gem_evict_for_vma(struct i915_vma *target);
> int i915_gem_evict_vm(struct i915_address_space *vm, bool do_idle);
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 3402fec5e33c..6039e46af69a 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -2960,8 +2960,8 @@ static struct i915_vma *
> i915_gem_object_bind_to_vm(struct drm_i915_gem_object *obj,
> struct i915_address_space *vm,
> const struct i915_ggtt_view *ggtt_view,
> - unsigned alignment,
> - uint64_t flags)
> + u64 alignment,
> + u64 flags)
> {
> struct drm_device *dev = obj->base.dev;
> struct drm_i915_private *dev_priv = to_i915(dev);
> @@ -3020,9 +3020,9 @@ i915_gem_object_bind_to_vm(struct drm_i915_gem_object *obj,
> alignment = flags & PIN_MAPPABLE ? fence_alignment :
> unfenced_alignment;
> if (flags & PIN_MAPPABLE && alignment & (fence_alignment - 1)) {
> - DRM_DEBUG("Invalid object (view type=%u) alignment requested %u\n",
> + DRM_DEBUG("Invalid object (view type=%u) alignment requested %llx\n",
> ggtt_view ? ggtt_view->type : 0,
> - alignment);
> + (long long)alignment);
> return ERR_PTR(-EINVAL);
> }
>
> @@ -3675,7 +3675,7 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file)
> }
>
> static bool
> -i915_vma_misplaced(struct i915_vma *vma, uint32_t alignment, uint64_t flags)
> +i915_vma_misplaced(struct i915_vma *vma, u64 alignment, u64 flags)
> {
> struct drm_i915_gem_object *obj = vma->obj;
>
> @@ -3724,8 +3724,8 @@ static int
> i915_gem_object_do_pin(struct drm_i915_gem_object *obj,
> struct i915_address_space *vm,
> const struct i915_ggtt_view *ggtt_view,
> - uint32_t alignment,
> - uint64_t flags)
> + u64 alignment,
> + u64 flags)
> {
> struct drm_i915_private *dev_priv = to_i915(obj->base.dev);
> struct i915_vma *vma;
> @@ -3754,12 +3754,12 @@ i915_gem_object_do_pin(struct drm_i915_gem_object *obj,
> if (i915_vma_misplaced(vma, alignment, flags)) {
> WARN(vma->pin_count,
> "bo is already pinned in %s 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",
> ggtt_view ? "ggtt" : "ppgtt",
> upper_32_bits(vma->node.start),
> lower_32_bits(vma->node.start),
> - alignment,
> + (long long)alignment,
Casting should still not be needed according to printk-formats.txt
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> !!(flags & PIN_MAPPABLE),
> obj->map_and_fenceable);
> ret = i915_vma_unbind(vma);
> @@ -3795,8 +3795,8 @@ i915_gem_object_do_pin(struct drm_i915_gem_object *obj,
> int
> i915_gem_object_pin(struct drm_i915_gem_object *obj,
> struct i915_address_space *vm,
> - uint32_t alignment,
> - uint64_t flags)
> + u64 alignment,
> + u64 flags)
> {
> return i915_gem_object_do_pin(obj, vm,
> i915_is_ggtt(vm) ? &i915_ggtt_view_normal : NULL,
> @@ -3806,8 +3806,8 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj,
> int
> i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj,
> const struct i915_ggtt_view *view,
> - uint32_t alignment,
> - uint64_t flags)
> + u64 alignment,
> + u64 flags)
> {
> struct drm_device *dev = obj->base.dev;
> struct drm_i915_private *dev_priv = to_i915(dev);
> diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c
> index 4bce72fa14c4..ef12ecd2b182 100644
> --- a/drivers/gpu/drm/i915/i915_gem_evict.c
> +++ b/drivers/gpu/drm/i915/i915_gem_evict.c
> @@ -84,8 +84,9 @@ mark_free(struct i915_vma *vma, struct list_head *unwind)
> */
> int
> i915_gem_evict_something(struct i915_address_space *vm,
> - int min_size, unsigned alignment, unsigned cache_level,
> - unsigned long start, unsigned long end,
> + u64 min_size, u64 alignment,
> + unsigned cache_level,
> + u64 start, u64 end,
> unsigned flags)
> {
> struct drm_i915_private *dev_priv = to_i915(vm->dev);
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-08-01 12:21 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-01 9:10 A few bug fixes leading to exporting prime fences [mostly reviewed] Chris Wilson
2016-08-01 9:10 ` [PATCH 01/73] drm/i915: Unify intel_logical_ring_emit and intel_ring_emit Chris Wilson
2016-08-01 9:10 ` [PATCH 02/73] drm/i915: Rename request->ringbuf to request->ring Chris Wilson
2016-08-01 9:10 ` [PATCH 03/73] drm/i915: Rename intel_context[engine].ringbuf Chris Wilson
2016-08-01 9:10 ` [PATCH 04/73] drm/i915: Rename struct intel_ringbuffer to struct intel_ring Chris Wilson
2016-08-01 9:10 ` [PATCH 05/73] drm/i915: Rename residual ringbuf parameters Chris Wilson
2016-08-01 9:10 ` [PATCH 06/73] drm/i915: Rename intel_pin_and_map_ring() Chris Wilson
2016-08-01 9:10 ` [PATCH 07/73] drm/i915: Remove obsolete engine->gpu_caches_dirty Chris Wilson
2016-08-01 9:10 ` [PATCH 08/73] drm/i915: Reduce engine->emit_flush() to a single mode parameter Chris Wilson
2016-08-01 9:10 ` [PATCH 09/73] drm/i915: Simplify request_alloc by returning the allocated request Chris Wilson
2016-08-01 9:10 ` [PATCH 10/73] drm/i915: Unify legacy/execlists emission of MI_BATCHBUFFER_START Chris Wilson
2016-08-01 9:10 ` [PATCH 11/73] drm/i915: Remove intel_ring_get_tail() Chris Wilson
2016-08-01 9:10 ` [PATCH 12/73] drm/i915: Convert engine->write_tail to operate on a request Chris Wilson
2016-08-01 9:10 ` [PATCH 13/73] drm/i915: Move the modulus for ring emission to the register write Chris Wilson
2016-08-01 10:07 ` Joonas Lahtinen
2016-08-01 10:15 ` Chris Wilson
2016-08-01 14:28 ` Joonas Lahtinen
2016-08-01 16:17 ` Chris Wilson
2016-08-01 16:23 ` Chris Wilson
2016-08-01 16:32 ` Chris Wilson
2016-08-02 9:42 ` Dave Gordon
2016-08-02 10:14 ` Chris Wilson
2016-08-01 10:21 ` Chris Wilson
2016-08-01 9:10 ` [PATCH 14/73] drm/i915: Unify request submission Chris Wilson
2016-08-01 14:30 ` Joonas Lahtinen
2016-08-01 17:17 ` [PATCH v2] " Chris Wilson
2016-08-01 9:10 ` [PATCH 15/73] drm/i915/lrc: Update function names to match request flow Chris Wilson
2016-08-01 9:10 ` [PATCH 16/73] drm/i915: Stop passing caller's num_dwords to engine->semaphore.signal() Chris Wilson
2016-08-01 9:10 ` [PATCH 17/73] drm/i915: Reuse legacy breadcrumbs + tail emission Chris Wilson
2016-08-01 9:10 ` [PATCH 18/73] drm/i915/ringbuffer: Specialise SNB+ request emission for semaphores Chris Wilson
2016-08-01 9:10 ` [PATCH 19/73] drm/i915: Remove duplicate golden render state init from execlists Chris Wilson
2016-08-01 9:10 ` [PATCH 20/73] drm/i915: Refactor golden render state emission to unconfuse gcc Chris Wilson
2016-08-01 9:10 ` [PATCH 21/73] drm/i915: Unify legacy/execlists submit_execbuf callbacks Chris Wilson
2016-08-01 9:10 ` [PATCH 22/73] drm/i915: Simplify calling engine->sync_to Chris Wilson
2016-08-01 9:10 ` [PATCH 23/73] drm/i915: Rename engine->semaphore.sync_to, engine->sempahore.signal locals Chris Wilson
2016-08-01 9:10 ` [PATCH 24/73] drm/i915: Amalgamate GGTT/ppGTT vma debug list walkers Chris Wilson
2016-08-01 9:10 ` [PATCH 25/73] drm/i915: Split early global GTT initialisation Chris Wilson
2016-08-01 9:10 ` [PATCH 26/73] drm/i915: Store owning file on the i915_address_space Chris Wilson
2016-08-01 9:10 ` [PATCH 27/73] drm/i915: Count how many VMA are bound for an object Chris Wilson
2016-08-01 9:10 ` [PATCH 28/73] drm/i915: Be more careful when unbinding vma Chris Wilson
2016-08-01 9:10 ` [PATCH 29/73] drm/i915: Kill drop_pages() Chris Wilson
2016-08-01 9:10 ` [PATCH 30/73] drm/i915: Introduce i915_gem_active for request tracking Chris Wilson
2016-08-01 9:10 ` [PATCH 31/73] drm/i915: Prepare i915_gem_active for annotations Chris Wilson
2016-08-01 9:10 ` [PATCH 32/73] drm/i915: Mark up i915_gem_active for locking annotation Chris Wilson
2016-08-01 9:10 ` [PATCH 33/73] drm/i915: Refactor blocking waits Chris Wilson
2016-08-01 9:10 ` [PATCH 34/73] drm/i915: Rename request->list to link for consistency Chris Wilson
2016-08-01 9:10 ` [PATCH 35/73] drm/i915: Remove obsolete i915_gem_object_flush_active() Chris Wilson
2016-08-01 9:10 ` [PATCH 36/73] drm/i915: Refactor activity tracking for requests Chris Wilson
2016-08-01 12:52 ` Joonas Lahtinen
2016-08-01 9:10 ` [PATCH 37/73] drm/i915: Track requests inside each intel_ring Chris Wilson
2016-08-01 9:10 ` [PATCH 38/73] drm/i915: Convert intel_overlay to request tracking Chris Wilson
2016-08-01 9:10 ` [PATCH 39/73] drm/i915: Move the special case wait-request handling to its one caller Chris Wilson
2016-08-01 9:10 ` [PATCH 40/73] drm/i915: Disable waitboosting for a saturated engine Chris Wilson
2016-08-01 9:10 ` [PATCH 41/73] drm/i915: s/__i915_wait_request/i915_wait_request/ Chris Wilson
2016-08-01 9:10 ` [PATCH 42/73] drm/i915: Double check activity before relocations Chris Wilson
2016-08-01 9:10 ` [PATCH 43/73] drm/i915: Move request list retirement to i915_gem_request.c Chris Wilson
2016-08-01 9:10 ` [PATCH 44/73] drm/i915: i915_vma_move_to_active prep patch Chris Wilson
2016-08-01 9:10 ` [PATCH 45/73] drm/i915: Track active vma requests Chris Wilson
2016-08-01 9:10 ` [PATCH 46/73] drm/i915: Release vma when the handle is closed Chris Wilson
2016-08-01 11:26 ` Joonas Lahtinen
2016-08-01 9:10 ` [PATCH 47/73] drm/i915: Mark the context and address space as closed Chris Wilson
2016-08-01 9:10 ` [PATCH 48/73] Revert "drm/i915: Clean up associated VMAs on context destruction" Chris Wilson
2016-08-01 9:10 ` [PATCH 49/73] drm/i915: Combine loops within i915_gem_evict_something Chris Wilson
2016-08-01 9:10 ` [PATCH 50/73] drm/i915: Remove surplus drm_device parameter to i915_gem_evict_something() Chris Wilson
2016-08-01 9:10 ` [PATCH 51/73] drm/i915: Double check the active status on the batch pool Chris Wilson
2016-08-01 9:11 ` [PATCH 52/73] drm/i915: Remove request retirement before each batch Chris Wilson
2016-08-01 9:11 ` [PATCH 53/73] drm/i915: Remove i915_gem_execbuffer_retire_commands() Chris Wilson
2016-08-01 9:11 ` [PATCH 54/73] drm/i915: Fix up vma alignment to be u64 Chris Wilson
2016-08-01 12:21 ` Joonas Lahtinen [this message]
2016-08-01 9:11 ` [PATCH 55/73] drm/i915: Pad GTT views of exec objects up to user specified size Chris Wilson
2016-08-01 9:11 ` [PATCH 56/73] drm/i915: Reduce WARN(i915_gem_valid_gtt_space) to a debug-only check Chris Wilson
2016-08-01 9:11 ` [PATCH 57/73] drm/i915: Split insertion/binding of an object into the VM Chris Wilson
2016-08-01 9:11 ` [PATCH 58/73] drm/i915: Convert 4096 alignment request to 0 for drm_mm allocations Chris Wilson
2016-08-01 9:11 ` [PATCH 59/73] drm/i915: Update the GGTT size/alignment query functions Chris Wilson
2016-08-01 12:27 ` Joonas Lahtinen
2016-08-01 9:11 ` [PATCH 60/73] drm/i915: Update i915_gem_get_ggtt_size/_alignment to use drm_i915_private Chris Wilson
2016-08-01 12:30 ` Joonas Lahtinen
2016-08-01 9:11 ` [PATCH 61/73] drm/i915: Record allocated vma size Chris Wilson
2016-08-01 12:36 ` Joonas Lahtinen
2016-08-01 12:44 ` Chris Wilson
2016-08-01 9:11 ` [PATCH 62/73] drm/i915: Wrap vma->pin_count accessors with small inline helpers Chris Wilson
2016-08-01 9:11 ` [PATCH 63/73] drm/i915: Start passing around i915_vma from execbuffer Chris Wilson
2016-08-01 9:11 ` [PATCH 64/73] drm/i915: Combine all i915_vma bitfields into a single set of flags Chris Wilson
2016-08-01 9:11 ` [PATCH 65/73] drm/i915: Make i915_vma_pin() small and inline Chris Wilson
2016-08-01 9:11 ` [PATCH 66/73] drm/i915: Remove highly confusing i915_gem_obj_ggtt_pin() Chris Wilson
2016-08-01 9:11 ` [PATCH 67/73] drm/i915: Make fb_tracking.lock a spinlock Chris Wilson
2016-08-01 9:11 ` [PATCH 68/73] drm/i915: Use atomics to manipulate obj->frontbuffer_bits Chris Wilson
2016-08-01 9:11 ` [PATCH 69/73] drm/i915: Use dev_priv consistently through the intel_frontbuffer interface Chris Wilson
2016-08-01 9:11 ` [PATCH 70/73] drm/i915: Move obj->active:5 to obj->flags Chris Wilson
2016-08-01 12:46 ` Joonas Lahtinen
2016-08-01 9:11 ` [PATCH 71/73] drm/i915: Move i915_gem_object_wait_rendering() Chris Wilson
2016-08-01 9:11 ` [PATCH 72/73] drm/i915: Enable lockless lookup of request tracking via RCU Chris Wilson
2016-08-01 9:11 ` [PATCH 73/73] drm/i915: Export our request as a dma-buf fence on the reservation object Chris Wilson
2016-08-01 11:45 ` ✗ Ro.CI.BAT: failure for series starting with [01/73] drm/i915: Unify intel_logical_ring_emit and intel_ring_emit 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=1470054086.4174.9.camel@linux.intel.com \
--to=joonas.lahtinen@linux.intel.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox