dri-devel Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH] drm/lima: fix recovering from PLBU out of memory
@ 2020-02-15  3:50 Vasily Khoruzhick
  2020-02-17  1:20 ` Qiang Yu
  0 siblings, 1 reply; 3+ messages in thread
From: Vasily Khoruzhick @ 2020-02-15  3:50 UTC (permalink / raw)
  To: Qiang Yu, David Airlie, Daniel Vetter, dri-devel, lima, linux-kernel
  Cc: Vasily Khoruzhick

It looks like on PLBU_OUT_OF_MEM interrupt we need to resume from where we
stopped, i.e. new PLBU heap start is old end. Also update end address
in GP frame to grow heap on 2nd and subsequent out of memory interrupts.

Fixes: 2081e8dcf1ee ("drm/lima: recover task by enlarging heap buffer")
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
---
 drivers/gpu/drm/lima/lima_gp.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/lima/lima_gp.c b/drivers/gpu/drm/lima/lima_gp.c
index d1e7826c2d74..325604262def 100644
--- a/drivers/gpu/drm/lima/lima_gp.c
+++ b/drivers/gpu/drm/lima/lima_gp.c
@@ -224,8 +224,13 @@ static int lima_gp_task_recover(struct lima_sched_pipe *pipe)
 	}
 
 	gp_write(LIMA_GP_INT_MASK, LIMA_GP_IRQ_MASK_USED);
+	/* Resume from where we stopped, i.e. new start is old end */
+	gp_write(LIMA_GP_PLBU_ALLOC_START_ADDR,
+		 f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2]);
+	f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2] =
+		f[LIMA_GP_PLBU_ALLOC_START_ADDR >> 2] + task->heap->heap_size;
 	gp_write(LIMA_GP_PLBU_ALLOC_END_ADDR,
-		 f[LIMA_GP_PLBU_ALLOC_START_ADDR >> 2] + task->heap->heap_size);
+		 f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2]);
 	gp_write(LIMA_GP_CMD, LIMA_GP_CMD_UPDATE_PLBU_ALLOC);
 	return 0;
 }
-- 
2.25.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH] drm/lima: fix recovering from PLBU out of memory
  2020-02-15  3:50 [PATCH] drm/lima: fix recovering from PLBU out of memory Vasily Khoruzhick
@ 2020-02-17  1:20 ` Qiang Yu
  2020-02-17  3:06   ` Qiang Yu
  0 siblings, 1 reply; 3+ messages in thread
From: Qiang Yu @ 2020-02-17  1:20 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: David Airlie, Linux Kernel Mailing List, dri-devel, lima

Looks good for me, patch is:
Reviewed-by: Qiang Yu <yuq825@gmail.com>

Regards,
Qiang

On Sat, Feb 15, 2020 at 11:50 AM Vasily Khoruzhick <anarsoul@gmail.com> wrote:
>
> It looks like on PLBU_OUT_OF_MEM interrupt we need to resume from where we
> stopped, i.e. new PLBU heap start is old end. Also update end address
> in GP frame to grow heap on 2nd and subsequent out of memory interrupts.
>
> Fixes: 2081e8dcf1ee ("drm/lima: recover task by enlarging heap buffer")
> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> ---
>  drivers/gpu/drm/lima/lima_gp.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/lima/lima_gp.c b/drivers/gpu/drm/lima/lima_gp.c
> index d1e7826c2d74..325604262def 100644
> --- a/drivers/gpu/drm/lima/lima_gp.c
> +++ b/drivers/gpu/drm/lima/lima_gp.c
> @@ -224,8 +224,13 @@ static int lima_gp_task_recover(struct lima_sched_pipe *pipe)
>         }
>
>         gp_write(LIMA_GP_INT_MASK, LIMA_GP_IRQ_MASK_USED);
> +       /* Resume from where we stopped, i.e. new start is old end */
> +       gp_write(LIMA_GP_PLBU_ALLOC_START_ADDR,
> +                f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2]);
> +       f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2] =
> +               f[LIMA_GP_PLBU_ALLOC_START_ADDR >> 2] + task->heap->heap_size;
>         gp_write(LIMA_GP_PLBU_ALLOC_END_ADDR,
> -                f[LIMA_GP_PLBU_ALLOC_START_ADDR >> 2] + task->heap->heap_size);
> +                f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2]);
>         gp_write(LIMA_GP_CMD, LIMA_GP_CMD_UPDATE_PLBU_ALLOC);
>         return 0;
>  }
> --
> 2.25.0
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH] drm/lima: fix recovering from PLBU out of memory
  2020-02-17  1:20 ` Qiang Yu
@ 2020-02-17  3:06   ` Qiang Yu
  0 siblings, 0 replies; 3+ messages in thread
From: Qiang Yu @ 2020-02-17  3:06 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: David Airlie, Linux Kernel Mailing List, dri-devel, lima

applied to drm-misc-next.

On Mon, Feb 17, 2020 at 9:20 AM Qiang Yu <yuq825@gmail.com> wrote:
>
> Looks good for me, patch is:
> Reviewed-by: Qiang Yu <yuq825@gmail.com>
>
> Regards,
> Qiang
>
> On Sat, Feb 15, 2020 at 11:50 AM Vasily Khoruzhick <anarsoul@gmail.com> wrote:
> >
> > It looks like on PLBU_OUT_OF_MEM interrupt we need to resume from where we
> > stopped, i.e. new PLBU heap start is old end. Also update end address
> > in GP frame to grow heap on 2nd and subsequent out of memory interrupts.
> >
> > Fixes: 2081e8dcf1ee ("drm/lima: recover task by enlarging heap buffer")
> > Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> > ---
> >  drivers/gpu/drm/lima/lima_gp.c | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/lima/lima_gp.c b/drivers/gpu/drm/lima/lima_gp.c
> > index d1e7826c2d74..325604262def 100644
> > --- a/drivers/gpu/drm/lima/lima_gp.c
> > +++ b/drivers/gpu/drm/lima/lima_gp.c
> > @@ -224,8 +224,13 @@ static int lima_gp_task_recover(struct lima_sched_pipe *pipe)
> >         }
> >
> >         gp_write(LIMA_GP_INT_MASK, LIMA_GP_IRQ_MASK_USED);
> > +       /* Resume from where we stopped, i.e. new start is old end */
> > +       gp_write(LIMA_GP_PLBU_ALLOC_START_ADDR,
> > +                f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2]);
> > +       f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2] =
> > +               f[LIMA_GP_PLBU_ALLOC_START_ADDR >> 2] + task->heap->heap_size;
> >         gp_write(LIMA_GP_PLBU_ALLOC_END_ADDR,
> > -                f[LIMA_GP_PLBU_ALLOC_START_ADDR >> 2] + task->heap->heap_size);
> > +                f[LIMA_GP_PLBU_ALLOC_END_ADDR >> 2]);
> >         gp_write(LIMA_GP_CMD, LIMA_GP_CMD_UPDATE_PLBU_ALLOC);
> >         return 0;
> >  }
> > --
> > 2.25.0
> >
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

end of thread, back to index

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-15  3:50 [PATCH] drm/lima: fix recovering from PLBU out of memory Vasily Khoruzhick
2020-02-17  1:20 ` Qiang Yu
2020-02-17  3:06   ` Qiang Yu

dri-devel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dri-devel/0 dri-devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dri-devel dri-devel/ https://lore.kernel.org/dri-devel \
		dri-devel@lists.freedesktop.org
	public-inbox-index dri-devel

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.freedesktop.lists.dri-devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git