bugzilla-daemon at freedesktop.org
2012-Apr-20 09:25 UTC
[Nouveau] [Bug 48954] New: nv25 PGRAPH error and X freeze
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 at lists.freedesktop.org
ReportedBy: noviktor at seznam.cz
QAContact: xorg-team at lists.x.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.
Viktor Novotný
2012-May-26 20:15 UTC
[Nouveau] [PATCH] nv04/exa: Reset destination surface offset in the same call of NV04EXACopy
Fixes FDO bug #48954.
Signed-off-by: Viktor Novotn? <noviktor at 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
Marcin Slusarz
2012-Jun-07 12:51 UTC
[Nouveau] [PATCH] nv04/exa: Reset destination surface offset in the same call of NV04EXACopy
On Sat, May 26, 2012 at 10:15:20PM +0200, Viktor Novotn? wrote:> Fixes FDO bug #48954. > > Signed-off-by: Viktor Novotn? <noviktor at seznam.cz> > ---Reviewed-by: Marcin Slusarz <marcin.slusarz at 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); > } > --
bugzilla-daemon at freedesktop.org
2012-Jun-08 07:26 UTC
[Nouveau] [Bug 48954] nv25 PGRAPH error and X freeze
https://bugs.freedesktop.org/show_bug.cgi?id=48954
Ben Skeggs <skeggsb at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #1 from Ben Skeggs <skeggsb at gmail.com> 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.