diff mbox

[1/2] drm/i915/gen8: The WA BB framework is enabled.

Message ID 1424886882-8117-2-git-send-email-arun.siluvery@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

arun.siluvery@linux.intel.com Feb. 25, 2015, 5:54 p.m. UTC
From: Namrta <namrta.salonie@intel.com>

This can be used to enable WA BB infrastructure for features like
RC6, SSEU and in between context save/restore etc.
The patch which would need WA BB will have to declare the wa_bb obj
utilizing the function here. Update the WA BB with required commands
and update the address of the WA BB at appropriate place.

Change-Id: I9cc49ae7426560215e7b6a6d10ba411caeb9321b
Signed-off-by: Namrta <namrta.salonie@intel.com>
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_lrc.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

Comments

Michel Thierry Feb. 27, 2015, 5:32 p.m. UTC | #1
On 25/02/15 17:54, Arun Siluvery wrote:
> From: Namrta <namrta.salonie@intel.com>
>
> This can be used to enable WA BB infrastructure for features like
> RC6, SSEU and in between context save/restore etc.
> The patch which would need WA BB will have to declare the wa_bb obj
> utilizing the function here. Update the WA BB with required commands
> and update the address of the WA BB at appropriate place.
>
> Change-Id: I9cc49ae7426560215e7b6a6d10ba411caeb9321b
> Signed-off-by: Namrta <namrta.salonie@intel.com>
> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> ---
>   drivers/gpu/drm/i915/intel_lrc.c | 32 ++++++++++++++++++++++++++++++++
>   1 file changed, 32 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 9c851d8..47473e5 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -1337,6 +1337,38 @@ static int gen8_emit_request(struct intel_ringbuffer *ringbuf,
>   	return 0;
>   }
>   
> +static struct intel_ringbuffer *
> +create_wa_bb(struct intel_engine_cs *ring, uint32_t bb_size)
> +{
> +	struct drm_device *dev = ring->dev;
> +	struct intel_ringbuffer *ringbuf;
> +	int ret;
> +
> +	ringbuf = kzalloc(sizeof(*ringbuf), GFP_KERNEL);
> +	if (!ringbuf)
> +		return NULL;
> +
> +	ringbuf->ring = ring;
> +
> +	ringbuf->size = roundup(bb_size, PAGE_SIZE);
> +	ringbuf->effective_size = ringbuf->size;
> +	ringbuf->head = 0;
> +	ringbuf->tail = 0;
> +	ringbuf->space = ringbuf->size;
> +	ringbuf->last_retired_head = -1;
> +
> +	ret = intel_alloc_ringbuffer_obj(dev, ringbuf);
> +	if (ret) {
> +		DRM_DEBUG_DRIVER(
> +		"Failed to allocate ringbuf obj for wa_bb%s: %d\n",
> +		ring->name, ret);
> +		kfree(ringbuf);
> +		return NULL;
> +	}
> +
> +	return ringbuf;
> +}
> +
>   static int intel_lr_context_render_state_init(struct intel_engine_cs *ring,
>   					      struct intel_context *ctx)
>   {
Maybe add an extra line between the 2 paragraphs in the commit message.

Reviewed-by: Michel Thierry <michel.thierry@intel.com>
Michel Thierry Feb. 27, 2015, 6:04 p.m. UTC | #2
On 27/02/15 17:32, Michel Thierry wrote:
>
>
> On 25/02/15 17:54, Arun Siluvery wrote:
>> From: Namrta <namrta.salonie@intel.com>
>>
>> This can be used to enable WA BB infrastructure for features like
>> RC6, SSEU and in between context save/restore etc.
>> The patch which would need WA BB will have to declare the wa_bb obj
>> utilizing the function here. Update the WA BB with required commands
>> and update the address of the WA BB at appropriate place.
>>
>> Change-Id: I9cc49ae7426560215e7b6a6d10ba411caeb9321b
>> Signed-off-by: Namrta <namrta.salonie@intel.com>
>> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
>> ---
>>   drivers/gpu/drm/i915/intel_lrc.c | 32 ++++++++++++++++++++++++++++++++
>>   1 file changed, 32 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_lrc.c 
>> b/drivers/gpu/drm/i915/intel_lrc.c
>> index 9c851d8..47473e5 100644
>>
> Maybe add an extra line between the 2 paragraphs in the commit message.
>
> Reviewed-by: Michel Thierry <michel.thierry@intel.com>

Also, your next patch moves the function around, it'd be nice to add it 
in the right place since here, so the diffs are clearer.
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 9c851d8..47473e5 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1337,6 +1337,38 @@  static int gen8_emit_request(struct intel_ringbuffer *ringbuf,
 	return 0;
 }
 
+static struct intel_ringbuffer *
+create_wa_bb(struct intel_engine_cs *ring, uint32_t bb_size)
+{
+	struct drm_device *dev = ring->dev;
+	struct intel_ringbuffer *ringbuf;
+	int ret;
+
+	ringbuf = kzalloc(sizeof(*ringbuf), GFP_KERNEL);
+	if (!ringbuf)
+		return NULL;
+
+	ringbuf->ring = ring;
+
+	ringbuf->size = roundup(bb_size, PAGE_SIZE);
+	ringbuf->effective_size = ringbuf->size;
+	ringbuf->head = 0;
+	ringbuf->tail = 0;
+	ringbuf->space = ringbuf->size;
+	ringbuf->last_retired_head = -1;
+
+	ret = intel_alloc_ringbuffer_obj(dev, ringbuf);
+	if (ret) {
+		DRM_DEBUG_DRIVER(
+		"Failed to allocate ringbuf obj for wa_bb%s: %d\n",
+		ring->name, ret);
+		kfree(ringbuf);
+		return NULL;
+	}
+
+	return ringbuf;
+}
+
 static int intel_lr_context_render_state_init(struct intel_engine_cs *ring,
 					      struct intel_context *ctx)
 {