linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] drm/nouveau/gem: tolerate a buffer specified multiple times
@ 2015-07-30 10:28 Bryan O'Donoghue
  2015-07-30 14:12 ` Ilia Mirkin
  0 siblings, 1 reply; 19+ messages in thread
From: Bryan O'Donoghue @ 2015-07-30 10:28 UTC (permalink / raw)
  To: airlied, bskeggs, maarten.lankhorst, dri-devel, linux-kernel
  Cc: Bryan O'Donoghue

Ubuntu is shipping Chrome Version 44.0.2403.125 (64-bit). With this version
of the browser and current tip-of-tree 86ea07ca846a I get the following
error message followed by a lock-up of X.

nouveau E[chrome[2737]] multiple instances of buffer 33 on validation list
nouveau E[chrome[2737]] validate_init
nouveau E[chrome[2737]] validate: -22
nouveau E[chrome[2737]] multiple instances of buffer 18 on validation list
nouveau E[chrome[2737]] validate_init
 nouveau E[chrome[2737]] validate: -22
nouveau E[   PFIFO][0000:01:00.0] PFIFO: read fault at
0x0003e21000 [PAGE_NOT_PRESENT] from (unknown enum
0x00000000)/GPC0/(unknown enum 0x0000000f) on channel 0x007f80c000
[unknown]

This patch suggests a fix for this with the kernel simply tolerating an
application such as chrome requesting the same buffer more than once.

With the version of chrome given above, you can elicit this behaviour by
clicking on the bookmarks drop down. This will open another window on-top
of the current window. Minus the fix included here, this will lead to hard
lockup of all windows on the desktop.

Chrome Version 44.0.2403.125 (64-bit)
Linux 4.2.0-rc4+ 86ea07ca846a

People are suggesting running chrome with -disable-gpu however it is
possible to run Chrome in it's default mode, so long as we tolerate the
above behaviour.

http://tinyurl.com/orvbzf3

Signed-off-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
---
 drivers/gpu/drm/nouveau/nouveau_gem.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
index af1ee51..a9694faad 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
@@ -401,9 +401,7 @@ retry:
 		if (nvbo->reserved_by && nvbo->reserved_by == file_priv) {
 			NV_PRINTK(error, cli, "multiple instances of buffer %d on "
 				      "validation list\n", b->handle);
-			drm_gem_object_unreference_unlocked(gem);
-			ret = -EINVAL;
-			break;
+			continue;
 		}
 
 		ret = ttm_bo_reserve(&nvbo->bo, true, false, true, &op->ticket);
-- 
1.9.1


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

end of thread, other threads:[~2015-08-03  0:51 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-30 10:28 [PATCH] drm/nouveau/gem: tolerate a buffer specified multiple times Bryan O'Donoghue
2015-07-30 14:12 ` Ilia Mirkin
2015-07-30 14:48   ` Bryan O'Donoghue
2015-07-30 14:49   ` Peter Hurley
2015-07-30 14:52     ` Bryan O'Donoghue
2015-07-30 14:56       ` Bryan O'Donoghue
2015-07-30 15:02         ` Ilia Mirkin
2015-07-30 15:14           ` Bryan O'Donoghue
2015-07-30 15:26           ` Emil Velikov
2015-07-30 21:45             ` Peter Hurley
2015-07-31  0:03               ` Bryan O'Donoghue
2015-07-31  9:53                 ` Bryan O'Donoghue
2015-07-31  9:58                   ` Bryan O'Donoghue
2015-07-31 10:27                     ` Bryan O'Donoghue
2015-07-31 16:36                       ` Ilia Mirkin
2015-07-31 16:43                         ` Bryan O'Donoghue
2015-07-31 18:11                           ` Bryan O'Donoghue
2015-08-03  0:51                             ` Bryan O'Donoghue
2015-07-31 16:19               ` Bryan O'Donoghue

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).