nvc0: work around what looks like a code prefetch bug
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 16 Apr 2011 13:24:07 +0000 (15:24 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 16 Apr 2011 22:17:14 +0000 (00:17 +0200)
Sounds very unlikely, but I don't have a better explanation at the
moment.
The GPU throws page faults at the first page after the code buffer
quite frequently on startup, and traces don't show us overflowing.

src/gallium/drivers/nvc0/nvc0_screen.c

index c4cdface5021a61fc38a79d4794dd15f1db01bc9..de62fd68b28dc7c3a7cc811bbfb0a47f4178d44d 100644 (file)
@@ -447,7 +447,10 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
    if (ret)
       goto fail;
 
-   nouveau_resource_init(&screen->text_heap, 0, 1 << 20);
+   /* XXX: getting a page fault at the end of the code buffer every few
+    *  launches, don't use the last 256 bytes to work around them - prefetch ?
+    */
+   nouveau_resource_init(&screen->text_heap, 0, (1 << 20) - 0x100);
 
    ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 1 << 12, 6 << 16,
                         &screen->uniforms);