All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael H. Nguyen" <michael.h.nguyen@intel.com>
To: "Bloomfield, Jon" <jon.bloomfield@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Cc: Brad Volkin <bradley.d.volkin@intel.com>
Subject: Re: [PATCH v6 4/5] drm/i915: Mark shadow batch buffers as purgeable
Date: Thu, 11 Dec 2014 10:56:01 -0800	[thread overview]
Message-ID: <5489E8C1.6000004@intel.com> (raw)
In-Reply-To: <AD48BB7FB99B174FBCC69E228F58B3B61B0FA544@IRSMSX104.ger.corp.intel.com>



On 12/11/2014 05:26 AM, Bloomfield, Jon wrote:
>> -----Original Message-----
>> From: Nguyen, Michael H
>> Sent: Monday, December 08, 2014 10:34 PM
>> To: intel-gfx@lists.freedesktop.org
>> Cc: Bloomfield, Jon; Brad Volkin
>> Subject: [PATCH v6 4/5] drm/i915: Mark shadow batch buffers as purgeable
>>
>> From: Brad Volkin <bradley.d.volkin@intel.com>
>>
>> By adding a new exec_entry flag, we cleanly mark the shadow objects as
>> purgeable after they are on the active list.
>>
>> v2:
>> - Move 'shadow_batch_obj->madv = I915_MADV_WILLNEED' inside _get
>>    fnc (danvet, from v4 6/7 feedback)
>>
>> Issue: VIZ-4719
>> Signed-off-by: Brad Volkin <bradley.d.volkin@intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_gem_batch_pool.c |  2 ++
>> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 11 ++++++++++-
>>   2 files changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_gem_batch_pool.c
>> b/drivers/gpu/drm/i915/i915_gem_batch_pool.c
>> index e9349e3..9e0ec4b 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_batch_pool.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_batch_pool.c
>> @@ -128,5 +128,7 @@ i915_gem_batch_pool_get(struct
>> i915_gem_batch_pool *pool,
>>   		list_add_tail(&obj->batch_pool_list, &pool->cache_list);
>>   	}
>>
>> +	obj->madv = I915_MADV_WILLNEED;
>> +
>>   	return obj;
>>   }
>> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
>> b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
>> index fccfff5..2071938 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
>> @@ -37,6 +37,7 @@
>>   #define  __EXEC_OBJECT_HAS_FENCE (1<<30)  #define
>> __EXEC_OBJECT_NEEDS_MAP (1<<29)  #define
>> __EXEC_OBJECT_NEEDS_BIAS (1<<28)
>> +#define  __EXEC_OBJECT_PURGEABLE (1<<27)
>>
>>   #define BATCH_OFFSET_BIAS (256*1024)
>>
>> @@ -226,7 +227,12 @@ i915_gem_execbuffer_unreserve_vma(struct
>> i915_vma *vma)
>>   	if (entry->flags & __EXEC_OBJECT_HAS_PIN)
>>   		vma->pin_count--;
>>
>> -	entry->flags &= ~(__EXEC_OBJECT_HAS_FENCE |
>> __EXEC_OBJECT_HAS_PIN);
>> +	if (entry->flags & __EXEC_OBJECT_PURGEABLE)
>> +		obj->madv = I915_MADV_DONTNEED;
>> +
>> +	entry->flags &= ~(__EXEC_OBJECT_HAS_FENCE |
>> +			  __EXEC_OBJECT_HAS_PIN |
>> +			  __EXEC_OBJECT_PURGEABLE);
>>   }
>>
>>   static void eb_destroy(struct eb_vmas *eb) @@ -1410,6 +1416,8 @@
>> i915_gem_do_execbuffer(struct drm_device *dev, void *data,
>>   			goto err;
>>   		}
>>
>> +		shadow_batch_obj->madv = I915_MADV_WILLNEED;
>> +
>
> Hasn't i915_gem_batch_pool_get() has already marked the buffer as WILLNEED ?
Yes, good eyes. It was actually corrected in 5/5 but that doesn't make 
this patch okay. Will fix.

Thanks,
Mike
>
>
>>   		ret = i915_gem_obj_ggtt_pin(shadow_batch_obj, 4096, 0);
>>   		if (ret)
>>   			goto err;
>> @@ -1433,6 +1441,7 @@ i915_gem_do_execbuffer(struct drm_device *dev,
>> void *data,
>>
>>   			vma = i915_gem_obj_to_ggtt(shadow_batch_obj);
>>   			vma->exec_entry = &shadow_exec_entry;
>> +			vma->exec_entry->flags =
>> __EXEC_OBJECT_PURGEABLE;
>>   			drm_gem_object_reference(&shadow_batch_obj-
>>> base);
>>   			list_add_tail(&vma->exec_list, &eb->vmas);
>>
>> --
>> 1.9.1
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2014-12-11 18:51 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-08 22:33 [PATCH v6 0/5] Command parser batch buffer copy michael.h.nguyen
2014-12-08 22:33 ` [PATCH v6 1/5] drm/i915: Implement a framework for batch buffer pools michael.h.nguyen
2014-12-09 13:18   ` Daniel Vetter
2014-12-09 19:42     ` Michael H. Nguyen
2014-12-10 11:06     ` Bloomfield, Jon
2014-12-10 16:33       ` Michael H. Nguyen
2014-12-10 16:41         ` Bloomfield, Jon
2014-12-10 17:05           ` Michael H. Nguyen
2014-12-08 22:33 ` [PATCH v6 2/5] drm/i915: Use batch pools with the command parser michael.h.nguyen
2014-12-08 22:33 ` [PATCH v6 3/5] drm/i915: Use batch length instead of object size in " michael.h.nguyen
2014-12-08 22:33 ` [PATCH v6 4/5] drm/i915: Mark shadow batch buffers as purgeable michael.h.nguyen
2014-12-09 13:21   ` Daniel Vetter
2014-12-09 21:34     ` Michael H. Nguyen
2014-12-11 13:26   ` Bloomfield, Jon
2014-12-11 18:56     ` Michael H. Nguyen [this message]
2014-12-08 22:33 ` [PATCH v6 5/5] drm/i915: Tidy up execbuffer command parsing code michael.h.nguyen
2014-12-09  2:05   ` shuang.he
2014-12-09 13:22   ` Daniel Vetter
2014-12-09 21:35     ` Michael H. Nguyen
2014-12-11 13:49   ` Bloomfield, Jon
2014-12-11 18:56     ` Michael H. Nguyen

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=5489E8C1.6000004@intel.com \
    --to=michael.h.nguyen@intel.com \
    --cc=bradley.d.volkin@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jon.bloomfield@intel.com \
    /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.