* [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 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.