Mesa (master): nouveau: map_range returning -EBUSY isn' t necessarily an error

Ben Skeggs darktama at kemper.freedesktop.org
Wed Jul 29 01:05:23 UTC 2009


Module: Mesa
Branch: master
Commit: 625bc0cfa2ffb67b797672f7fb3c083a863199d3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=625bc0cfa2ffb67b797672f7fb3c083a863199d3

Author: Ben Skeggs <bskeggs at redhat.com>
Date:   Wed Jul 29 10:58:05 2009 +1000

nouveau: map_range returning -EBUSY isn't necessarily an error

---

 src/gallium/drivers/nouveau/nouveau_screen.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/nouveau/nouveau_screen.c b/src/gallium/drivers/nouveau/nouveau_screen.c
index 832366e..e4cf91c 100644
--- a/src/gallium/drivers/nouveau/nouveau_screen.c
+++ b/src/gallium/drivers/nouveau/nouveau_screen.c
@@ -4,6 +4,8 @@
 
 #include <util/u_memory.h>
 
+#include <errno.h>
+
 #include "nouveau/nouveau_bo.h"
 #include "nouveau_winsys.h"
 #include "nouveau_screen.h"
@@ -141,12 +143,13 @@ nouveau_screen_bo_map_range(struct pipe_screen *pscreen, struct pipe_buffer *pb,
 			    unsigned offset, unsigned length, unsigned usage)
 {
 	struct nouveau_bo *bo = nouveau_bo(pb);
+	uint32_t flags = nouveau_screen_map_flags(usage);
 	int ret;
 
-	ret = nouveau_bo_map_range(bo, offset, length,
-				   nouveau_screen_map_flags(usage));
+	ret = nouveau_bo_map_range(bo, offset, length, flags);
 	if (ret) {
-		debug_printf("map_range failed: %d\n", ret);
+		if (!(flags & NOUVEAU_BO_NOWAIT) || ret != -EBUSY)
+			debug_printf("map_range failed: %d\n", ret);
 		return NULL;
 	}
 




More information about the mesa-commit mailing list