All of lore.kernel.org
 help / color / mirror / Atom feed
* [Bug 48954] New: nv25 PGRAPH error and X freeze
@ 2012-04-20  9:25 bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
       [not found] ` <bug-48954-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
  0 siblings, 1 reply; 5+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2012-04-20  9:25 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

https://bugs.freedesktop.org/show_bug.cgi?id=48954

             Bug #: 48954
           Summary: nv25 PGRAPH error and X freeze
    Classification: Unclassified
           Product: xorg
           Version: git
          Platform: x86 (IA32)
        OS/Version: Linux (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Driver/nouveau
        AssignedTo: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
        ReportedBy: noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org
         QAContact: xorg-team-go0+a7rfsptAfugRpC6u6w@public.gmane.org


Created attachment 60373
  --> https://bugs.freedesktop.org/attachment.cgi?id=60373
Kernel log from boot to error on nv25

I am running nouveau git kernel 3.4.0-rc2-g965a47f, xf86-video-nouveau ver.
fb3a36b and xorg-server 1.12.0 on nv25 card and I am getting PGRAPH erros

nouveau 0000:01:00.0: PGRAPH - ERROR nsource: LIMIT_COLOR nstatus:
PROTECTION_FAULT
nouveau 0000:01:00.0: PGRAPH - ch 1/4 class 0x009f mthd 0x0308 data 0x00240771

X then freezes but ssh or SysRq works. Additionally some icons on Gnome 3
fall-back mode have white rectangle in background instead of being transparent.
Didn't happen before libdrm rewrite.
Fastest way to reproduce seems to be right clicking to open pop-up menu or
opening drop-down selections - error happens in a few attempts.
On nv11 it seems not to crash, but some icons still have white background.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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

* [PATCH] nv04/exa: Reset destination surface offset in the same call of NV04EXACopy
       [not found] ` <bug-48954-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
@ 2012-05-26 20:15   ` Viktor Novotný
       [not found]     ` <1338063320-9274-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
  2012-06-08  7:26   ` [Bug 48954] nv25 PGRAPH error and X freeze bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  1 sibling, 1 reply; 5+ messages in thread
From: Viktor Novotný @ 2012-05-26 20:15 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Fixes FDO bug #48954.

Signed-off-by: Viktor Novotný <noviktor@seznam.cz>
---
 src/nv04_exa.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/nv04_exa.c b/src/nv04_exa.c
index 7ede9d9..ca92868 100644
--- a/src/nv04_exa.c
+++ b/src/nv04_exa.c
@@ -220,7 +220,7 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
 	int split_dstY = NOUVEAU_ALIGN(dstY + 1, 64);
 	int split_height = split_dstY - dstY;
 
-	if (nouveau_pushbuf_space(push, 16, 1, 0))
+	if (nouveau_pushbuf_space(push, 16, 2, 0))
 		return;
 
 	if ((width * height) >= 200000 && pNv->pspix != pNv->pdpix &&
@@ -249,7 +249,13 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
 		height -= split_height;
 		dstY = 0;
 		pNv->pmpix = pdpix;
-	} else
+	}
+
+	BEGIN_NV04(push, NV01_BLIT(POINT_IN), 3);
+	PUSH_DATA (push, (srcY << 16) | srcX);
+	PUSH_DATA (push, (dstY << 16) | dstX);
+	PUSH_DATA (push, (height  << 16) | width);
+
 	if (pNv->pmpix) {
 		struct nouveau_bo *dst_bo = nouveau_pixmap_bo(pdpix);
 
@@ -258,11 +264,6 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
 		pNv->pmpix = NULL;
 	}
 
-	BEGIN_NV04(push, NV01_BLIT(POINT_IN), 3);
-	PUSH_DATA (push, (srcY << 16) | srcX);
-	PUSH_DATA (push, (dstY << 16) | dstX);
-	PUSH_DATA (push, (height  << 16) | width);
-
 	if ((width * height) >= 512)
 		PUSH_KICK(push);
 }
-- 
1.7.8.6

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

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

* Re: [PATCH] nv04/exa: Reset destination surface offset in the same call of NV04EXACopy
       [not found]     ` <1338063320-9274-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
@ 2012-06-07 12:51       ` Marcin Slusarz
       [not found]         ` <20120607123627.GA3114-OI9uyE9O0yo@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Marcin Slusarz @ 2012-06-07 12:51 UTC (permalink / raw)
  To: Viktor Novotný; +Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Ben Skeggs

On Sat, May 26, 2012 at 10:15:20PM +0200, Viktor Novotný wrote:
> Fixes FDO bug #48954.
> 
> Signed-off-by: Viktor Novotný <noviktor@seznam.cz>
> ---

Reviewed-by: Marcin Slusarz <marcin.slusarz@gmail.com>

It seems this code was buggy since it was introduced in "nv04-nv40/exa: Make
the copy hook blit downwards for non-overlapping regions." (OFFSET_DESTIN was
not zeroed for the second part), only "WIP: port to new libdrm" made it more
apparent.

>  src/nv04_exa.c |   15 ++++++++-------
>  1 files changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/src/nv04_exa.c b/src/nv04_exa.c
> index 7ede9d9..ca92868 100644
> --- a/src/nv04_exa.c
> +++ b/src/nv04_exa.c
> @@ -220,7 +220,7 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
>  	int split_dstY = NOUVEAU_ALIGN(dstY + 1, 64);
>  	int split_height = split_dstY - dstY;
>  
> -	if (nouveau_pushbuf_space(push, 16, 1, 0))
> +	if (nouveau_pushbuf_space(push, 16, 2, 0))
>  		return;
>  
>  	if ((width * height) >= 200000 && pNv->pspix != pNv->pdpix &&
> @@ -249,7 +249,13 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
>  		height -= split_height;
>  		dstY = 0;
>  		pNv->pmpix = pdpix;
> -	} else
> +	}
> +
> +	BEGIN_NV04(push, NV01_BLIT(POINT_IN), 3);
> +	PUSH_DATA (push, (srcY << 16) | srcX);
> +	PUSH_DATA (push, (dstY << 16) | dstX);
> +	PUSH_DATA (push, (height  << 16) | width);
> +
>  	if (pNv->pmpix) {
>  		struct nouveau_bo *dst_bo = nouveau_pixmap_bo(pdpix);
>  
> @@ -258,11 +264,6 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
>  		pNv->pmpix = NULL;
>  	}
>  
> -	BEGIN_NV04(push, NV01_BLIT(POINT_IN), 3);
> -	PUSH_DATA (push, (srcY << 16) | srcX);
> -	PUSH_DATA (push, (dstY << 16) | dstX);
> -	PUSH_DATA (push, (height  << 16) | width);
> -
>  	if ((width * height) >= 512)
>  		PUSH_KICK(push);
>  }
> -- 
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

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

* [Bug 48954] nv25 PGRAPH error and X freeze
       [not found] ` <bug-48954-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
  2012-05-26 20:15   ` [PATCH] nv04/exa: Reset destination surface offset in the same call of NV04EXACopy Viktor Novotný
@ 2012-06-08  7:26   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  1 sibling, 0 replies; 5+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2012-06-08  7:26 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

https://bugs.freedesktop.org/show_bug.cgi?id=48954

Ben Skeggs <skeggsb-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED

--- Comment #1 from Ben Skeggs <skeggsb-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2012-06-08 00:26:44 PDT ---
I've pushed a patch to nouveau git which should fix this issue.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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

* Re: [PATCH] nv04/exa: Reset destination surface offset in the same call of NV04EXACopy
       [not found]         ` <20120607123627.GA3114-OI9uyE9O0yo@public.gmane.org>
@ 2012-06-08  7:32           ` Ben Skeggs
  0 siblings, 0 replies; 5+ messages in thread
From: Ben Skeggs @ 2012-06-08  7:32 UTC (permalink / raw)
  To: Marcin Slusarz; +Cc: Ben Skeggs, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

On Thu, Jun 07, 2012 at 02:51:00PM +0200, Marcin Slusarz wrote:
> On Sat, May 26, 2012 at 10:15:20PM +0200, Viktor Novotný wrote:
> > Fixes FDO bug #48954.
> > 
> > Signed-off-by: Viktor Novotný <noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
> > ---
> 
> Reviewed-by: Marcin Slusarz <marcin.slusarz-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Thanks a lot, nice catch.  I've pushed the fix to nouveau git.

> 
> It seems this code was buggy since it was introduced in "nv04-nv40/exa: Make
> the copy hook blit downwards for non-overlapping regions." (OFFSET_DESTIN was
> not zeroed for the second part), only "WIP: port to new libdrm" made it more
> apparent.
> 
> >  src/nv04_exa.c |   15 ++++++++-------
> >  1 files changed, 8 insertions(+), 7 deletions(-)
> > 
> > diff --git a/src/nv04_exa.c b/src/nv04_exa.c
> > index 7ede9d9..ca92868 100644
> > --- a/src/nv04_exa.c
> > +++ b/src/nv04_exa.c
> > @@ -220,7 +220,7 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
> >  	int split_dstY = NOUVEAU_ALIGN(dstY + 1, 64);
> >  	int split_height = split_dstY - dstY;
> >  
> > -	if (nouveau_pushbuf_space(push, 16, 1, 0))
> > +	if (nouveau_pushbuf_space(push, 16, 2, 0))
> >  		return;
> >  
> >  	if ((width * height) >= 200000 && pNv->pspix != pNv->pdpix &&
> > @@ -249,7 +249,13 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
> >  		height -= split_height;
> >  		dstY = 0;
> >  		pNv->pmpix = pdpix;
> > -	} else
> > +	}
> > +
> > +	BEGIN_NV04(push, NV01_BLIT(POINT_IN), 3);
> > +	PUSH_DATA (push, (srcY << 16) | srcX);
> > +	PUSH_DATA (push, (dstY << 16) | dstX);
> > +	PUSH_DATA (push, (height  << 16) | width);
> > +
> >  	if (pNv->pmpix) {
> >  		struct nouveau_bo *dst_bo = nouveau_pixmap_bo(pdpix);
> >  
> > @@ -258,11 +264,6 @@ NV04EXACopy(PixmapPtr pdpix, int srcX, int srcY, int dstX, int dstY,
> >  		pNv->pmpix = NULL;
> >  	}
> >  
> > -	BEGIN_NV04(push, NV01_BLIT(POINT_IN), 3);
> > -	PUSH_DATA (push, (srcY << 16) | srcX);
> > -	PUSH_DATA (push, (dstY << 16) | dstX);
> > -	PUSH_DATA (push, (height  << 16) | width);
> > -
> >  	if ((width * height) >= 512)
> >  		PUSH_KICK(push);
> >  }
> > -- 
> _______________________________________________
> Nouveau mailing list
> Nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau

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

end of thread, other threads:[~2012-06-08  7:32 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-20  9:25 [Bug 48954] New: nv25 PGRAPH error and X freeze bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
     [not found] ` <bug-48954-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
2012-05-26 20:15   ` [PATCH] nv04/exa: Reset destination surface offset in the same call of NV04EXACopy Viktor Novotný
     [not found]     ` <1338063320-9274-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2012-06-07 12:51       ` Marcin Slusarz
     [not found]         ` <20120607123627.GA3114-OI9uyE9O0yo@public.gmane.org>
2012-06-08  7:32           ` Ben Skeggs
2012-06-08  7:26   ` [Bug 48954] nv25 PGRAPH error and X freeze bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ

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.