Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create
@ 2014-11-17 15:48 Arun Siluvery
  2014-11-17 15:54 ` Daniel, Thomas
  2014-11-17 19:04 ` Daniel Vetter
  0 siblings, 2 replies; 8+ messages in thread
From: Arun Siluvery @ 2014-11-17 15:48 UTC (permalink / raw)
  To: intel-gfx

We are not freeing memory allocated for ringbuf and ctx if we fail
to map status page so release all resources correctly.

Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_lrc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index f3efdbd..a84d24b 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1777,8 +1777,10 @@ int intel_lr_context_deferred_create(struct intel_context *ctx,
 		ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(ctx_obj);
 		ring->status_page.page_addr =
 				kmap(sg_page(ctx_obj->pages->sgl));
-		if (ring->status_page.page_addr == NULL)
-			return -ENOMEM;
+		if (ring->status_page.page_addr == NULL) {
+			ret = -ENOMEM;
+			goto error;
+		}
 		ring->status_page.obj = ctx_obj;
 	}
 
-- 
2.1.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create
  2014-11-17 15:48 [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create Arun Siluvery
@ 2014-11-17 15:54 ` Daniel, Thomas
  2014-11-17 15:57   ` Siluvery, Arun
  2014-11-17 19:04 ` Daniel Vetter
  1 sibling, 1 reply; 8+ messages in thread
From: Daniel, Thomas @ 2014-11-17 15:54 UTC (permalink / raw)
  To: Arun Siluvery, intel-gfx@lists.freedesktop.org


[-- Attachment #1.1: Type: text/plain, Size: 1893 bytes --]

> -----Original Message-----

> From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf

> Of Arun Siluvery

> Sent: Monday, November 17, 2014 3:48 PM

> To: intel-gfx@lists.freedesktop.org

> Subject: [Intel-gfx] [PATCH] drm/i915: Free resources correctly if we cannot

> map status page during ctx create

>

> We are not freeing memory allocated for ringbuf and ctx if we fail to map

> status page so release all resources correctly.

>

> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com<mailto:arun.siluvery@linux.intel.com>>

> ---

>  drivers/gpu/drm/i915/intel_lrc.c | 6 ++++--

>  1 file changed, 4 insertions(+), 2 deletions(-)

>

> diff --git a/drivers/gpu/drm/i915/intel_lrc.c

> b/drivers/gpu/drm/i915/intel_lrc.c

> index f3efdbd..a84d24b 100644

> --- a/drivers/gpu/drm/i915/intel_lrc.c

> +++ b/drivers/gpu/drm/i915/intel_lrc.c

> @@ -1777,8 +1777,10 @@ int intel_lr_context_deferred_create(struct

> intel_context *ctx,

>                             ring->status_page.gfx_addr =

> i915_gem_obj_ggtt_offset(ctx_obj);

>                             ring->status_page.page_addr =

>                                                             kmap(sg_page(ctx_obj->pages->sgl));

> -                           if (ring->status_page.page_addr == NULL)

> -                                           return -ENOMEM;

> +                          if (ring->status_page.page_addr == NULL) {

> +                                          ret = -ENOMEM;

> +                                          goto error;

> +                          }

>                             ring->status_page.obj = ctx_obj;

>             }





Hi Arun,



I think your tree is out of date.  See this patch:

http://patchwork.freedesktop.org/patch/35828/



Cheers,

Thomas.



[-- Attachment #1.2: Type: text/html, Size: 7636 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create
  2014-11-17 15:54 ` Daniel, Thomas
@ 2014-11-17 15:57   ` Siluvery, Arun
  0 siblings, 0 replies; 8+ messages in thread
From: Siluvery, Arun @ 2014-11-17 15:57 UTC (permalink / raw)
  To: Daniel, Thomas, intel-gfx@lists.freedesktop.org

On 17/11/2014 15:54, Daniel, Thomas wrote:
>> -----Original Message-----
>
>> From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf
>
>> Of Arun Siluvery
>
>> Sent: Monday, November 17, 2014 3:48 PM
>
>> To: intel-gfx@lists.freedesktop.org
>
>> Subject: [Intel-gfx] [PATCH] drm/i915: Free resources correctly if we cannot
>
>> map status page during ctx create
>
>>
>
>> We are not freeing memory allocated for ringbuf and ctx if we fail to map
>
>> status page so release all resources correctly.
>
>>
>
>> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com<mailto:arun.siluvery@linux.intel.com>>
>
>> ---
>
>>   drivers/gpu/drm/i915/intel_lrc.c | 6 ++++--
>
>>   1 file changed, 4 insertions(+), 2 deletions(-)
>
>>
>
>> diff --git a/drivers/gpu/drm/i915/intel_lrc.c
>
>> b/drivers/gpu/drm/i915/intel_lrc.c
>
>> index f3efdbd..a84d24b 100644
>
>> --- a/drivers/gpu/drm/i915/intel_lrc.c
>
>> +++ b/drivers/gpu/drm/i915/intel_lrc.c
>
>> @@ -1777,8 +1777,10 @@ int intel_lr_context_deferred_create(struct
>
>> intel_context *ctx,
>
>>                              ring->status_page.gfx_addr =
>
>> i915_gem_obj_ggtt_offset(ctx_obj);
>
>>                              ring->status_page.page_addr =
>
>>                                                              kmap(sg_page(ctx_obj->pages->sgl));
>
>> -                           if (ring->status_page.page_addr == NULL)
>
>> -                                           return -ENOMEM;
>
>> +                          if (ring->status_page.page_addr == NULL) {
>
>> +                                          ret = -ENOMEM;
>
>> +                                          goto error;
>
>> +                          }
>
>>                              ring->status_page.obj = ctx_obj;
>
>>              }
>
>
>
>
>
> Hi Arun,
>
>
>
> I think your tree is out of date.  See this patch:
>
> http://patchwork.freedesktop.org/patch/35828/
>
>
>
> Cheers,
>
> Thomas.
>
>
You are right, I don't have latest changes.
This patch can be ignored.

regards
Arun

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create
  2014-11-17 15:48 [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create Arun Siluvery
  2014-11-17 15:54 ` Daniel, Thomas
@ 2014-11-17 19:04 ` Daniel Vetter
  2014-11-18  7:44   ` Chris Wilson
  1 sibling, 1 reply; 8+ messages in thread
From: Daniel Vetter @ 2014-11-17 19:04 UTC (permalink / raw)
  To: Arun Siluvery; +Cc: intel-gfx

On Mon, Nov 17, 2014 at 03:48:27PM +0000, Arun Siluvery wrote:
> We are not freeing memory allocated for ringbuf and ctx if we fail
> to map status page so release all resources correctly.
> 
> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_lrc.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index f3efdbd..a84d24b 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -1777,8 +1777,10 @@ int intel_lr_context_deferred_create(struct intel_context *ctx,
>  		ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(ctx_obj);
>  		ring->status_page.page_addr =
>  				kmap(sg_page(ctx_obj->pages->sgl));
> -		if (ring->status_page.page_addr == NULL)
> -			return -ENOMEM;
> +		if (ring->status_page.page_addr == NULL) {
> +			ret = -ENOMEM;
> +			goto error;
> +		}

Since this popped up: Do we have an automated igt testcase to exercise
this corner-case?

We do have it for legacy (gen6/7) contexts, including exercising the
shrinker logic to get rid of misplaced ctx objects to avoid ggtt
fragmentation hassles ...
-Daniel

>  		ring->status_page.obj = ctx_obj;
>  	}
>  
> -- 
> 2.1.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create
  2014-11-17 19:04 ` Daniel Vetter
@ 2014-11-18  7:44   ` Chris Wilson
  2014-11-18  8:05     ` Daniel Vetter
  2014-11-18  8:10     ` [PATCH] drm/i915: Drop return value from lrc_setup_hardware_status_page Daniel Vetter
  0 siblings, 2 replies; 8+ messages in thread
From: Chris Wilson @ 2014-11-18  7:44 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

On Mon, Nov 17, 2014 at 08:04:09PM +0100, Daniel Vetter wrote:
> On Mon, Nov 17, 2014 at 03:48:27PM +0000, Arun Siluvery wrote:
> > We are not freeing memory allocated for ringbuf and ctx if we fail
> > to map status page so release all resources correctly.
> > 
> > Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_lrc.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> > index f3efdbd..a84d24b 100644
> > --- a/drivers/gpu/drm/i915/intel_lrc.c
> > +++ b/drivers/gpu/drm/i915/intel_lrc.c
> > @@ -1777,8 +1777,10 @@ int intel_lr_context_deferred_create(struct intel_context *ctx,
> >  		ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(ctx_obj);
> >  		ring->status_page.page_addr =
> >  				kmap(sg_page(ctx_obj->pages->sgl));
> > -		if (ring->status_page.page_addr == NULL)
> > -			return -ENOMEM;
> > +		if (ring->status_page.page_addr == NULL) {
> > +			ret = -ENOMEM;
> > +			goto error;
> > +		}
> 
> Since this popped up: Do we have an automated igt testcase to exercise
> this corner-case?

How? kmap() never returns NULL.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create
  2014-11-18  7:44   ` Chris Wilson
@ 2014-11-18  8:05     ` Daniel Vetter
  2014-11-18  8:10     ` [PATCH] drm/i915: Drop return value from lrc_setup_hardware_status_page Daniel Vetter
  1 sibling, 0 replies; 8+ messages in thread
From: Daniel Vetter @ 2014-11-18  8:05 UTC (permalink / raw)
  To: Chris Wilson, Daniel Vetter, Arun Siluvery, intel-gfx

On Tue, Nov 18, 2014 at 07:44:40AM +0000, Chris Wilson wrote:
> On Mon, Nov 17, 2014 at 08:04:09PM +0100, Daniel Vetter wrote:
> > On Mon, Nov 17, 2014 at 03:48:27PM +0000, Arun Siluvery wrote:
> > > We are not freeing memory allocated for ringbuf and ctx if we fail
> > > to map status page so release all resources correctly.
> > > 
> > > Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/intel_lrc.c | 6 ++++--
> > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> > > index f3efdbd..a84d24b 100644
> > > --- a/drivers/gpu/drm/i915/intel_lrc.c
> > > +++ b/drivers/gpu/drm/i915/intel_lrc.c
> > > @@ -1777,8 +1777,10 @@ int intel_lr_context_deferred_create(struct intel_context *ctx,
> > >  		ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(ctx_obj);
> > >  		ring->status_page.page_addr =
> > >  				kmap(sg_page(ctx_obj->pages->sgl));
> > > -		if (ring->status_page.page_addr == NULL)
> > > -			return -ENOMEM;
> > > +		if (ring->status_page.page_addr == NULL) {
> > > +			ret = -ENOMEM;
> > > +			goto error;
> > > +		}
> > 
> > Since this popped up: Do we have an automated igt testcase to exercise
> > this corner-case?
> 
> How? kmap() never returns NULL.

Oh dear.

/me hangs head in shame

I'll do a patch to correct this.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] drm/i915: Drop return value from lrc_setup_hardware_status_page
  2014-11-18  7:44   ` Chris Wilson
  2014-11-18  8:05     ` Daniel Vetter
@ 2014-11-18  8:10     ` Daniel Vetter
  2014-11-18 15:31       ` [PATCH] drm/i915: Drop return value from shuang.he
  1 sibling, 1 reply; 8+ messages in thread
From: Daniel Vetter @ 2014-11-18  8:10 UTC (permalink / raw)
  To: Intel Graphics Development; +Cc: Daniel Vetter, Daniel Vetter

kmap never fails.

Spotted-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Arun Siluvery <arun.siluvery@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/i915/intel_lrc.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index b7c4c9ab9012..3cf15c4da0e8 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1706,7 +1706,7 @@ static uint32_t get_lr_context_size(struct intel_engine_cs *ring)
 	return ret;
 }
 
-static int lrc_setup_hardware_status_page(struct intel_engine_cs *ring,
+static void lrc_setup_hardware_status_page(struct intel_engine_cs *ring,
 		struct drm_i915_gem_object *default_ctx_obj)
 {
 	struct drm_i915_private *dev_priv = ring->dev->dev_private;
@@ -1716,15 +1716,11 @@ static int lrc_setup_hardware_status_page(struct intel_engine_cs *ring,
 	ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(default_ctx_obj);
 	ring->status_page.page_addr =
 			kmap(sg_page(default_ctx_obj->pages->sgl));
-	if (ring->status_page.page_addr == NULL)
-		return -ENOMEM;
 	ring->status_page.obj = default_ctx_obj;
 
 	I915_WRITE(RING_HWS_PGA(ring->mmio_base),
 			(u32)ring->status_page.gfx_addr);
 	POSTING_READ(RING_HWS_PGA(ring->mmio_base));
-
-	return 0;
 }
 
 /**
@@ -1811,13 +1807,8 @@ int intel_lr_context_deferred_create(struct intel_context *ctx,
 	ctx->engine[ring->id].ringbuf = ringbuf;
 	ctx->engine[ring->id].state = ctx_obj;
 
-	if (ctx == ring->default_context) {
-		ret = lrc_setup_hardware_status_page(ring, ctx_obj);
-		if (ret) {
-			DRM_ERROR("Failed to setup hardware status page\n");
-			goto error;
-		}
-	}
+	if (ctx == ring->default_context)
+		lrc_setup_hardware_status_page(ring, ctx_obj);
 
 	if (ring->id == RCS && !ctx->rcs_initialized) {
 		if (ring->init_context) {
-- 
2.1.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] drm/i915: Drop return value from
  2014-11-18  8:10     ` [PATCH] drm/i915: Drop return value from lrc_setup_hardware_status_page Daniel Vetter
@ 2014-11-18 15:31       ` shuang.he
  0 siblings, 0 replies; 8+ messages in thread
From: shuang.he @ 2014-11-18 15:31 UTC (permalink / raw)
  To: shuang.he, intel-gfx, daniel.vetter

Tested-By: PRC QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
-------------------------------------Summary-------------------------------------
Platform: baseline_drm_intel_nightly_pass_rate->patch_applied_pass_rate
BYT: pass/total=290/290->290/290
PNV: pass/total=362/362->362/362
ILK: pass/total=381/381->374/381
IVB: pass/total=522/559->522/559
SNB: pass/total=444/444->444/444
HSW: pass/total=595/595->594/595
BDW: pass/total=436/436->436/436
-------------------------------------Detailed-------------------------------------
test_platform: test_suite, test_case, result_with_drm_intel_nightly(count, machine_id...)...->result_with_patch_applied(count, machine_id)...
ILK: Intel_gpu_tools, igt_kms_flip_bcs-wf_vblank-vs-modeset-interruptible, PASS(4, M37M26) -> DMESG_WARN(1, M26)PASS(3, M26)
ILK: Intel_gpu_tools, igt_kms_flip_flip-vs-rmfb-interruptible, PASS(4, M37M26) -> DMESG_WARN(2, M26)PASS(2, M26)
ILK: Intel_gpu_tools, igt_kms_flip_plain-flip, PASS(4, M37M26) -> DMESG_WARN(1, M26)PASS(3, M26)
ILK: Intel_gpu_tools, igt_kms_flip_rcs-wf_vblank-vs-dpms-interruptible, PASS(4, M37M26) -> DMESG_WARN(3, M26)PASS(1, M26)
ILK: Intel_gpu_tools, igt_kms_flip_vblank-vs-hang-interruptible, PASS(4, M37M26) -> DMESG_WARN(3, M26)PASS(1, M26)
ILK: Intel_gpu_tools, igt_kms_flip_wf_vblank-ts-check, PASS(4, M37M26) -> DMESG_WARN(1, M26)PASS(3, M26)
ILK: Intel_gpu_tools, igt_kms_flip_wf_vblank-vs-dpms, DMESG_WARN(1, M26)PASS(3, M6M26) -> DMESG_WARN(2, M26)PASS(2, M26)
HSW: Intel_gpu_tools, igt_gem_reset_stats_close-pending-render, PASS(3, M19M40) -> NO_RESULT(1, M40)PASS(3, M40)
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-11-18 15:31 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-17 15:48 [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create Arun Siluvery
2014-11-17 15:54 ` Daniel, Thomas
2014-11-17 15:57   ` Siluvery, Arun
2014-11-17 19:04 ` Daniel Vetter
2014-11-18  7:44   ` Chris Wilson
2014-11-18  8:05     ` Daniel Vetter
2014-11-18  8:10     ` [PATCH] drm/i915: Drop return value from lrc_setup_hardware_status_page Daniel Vetter
2014-11-18 15:31       ` [PATCH] drm/i915: Drop return value from shuang.he

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox