From d98b85b50713c12e1970da08220f124b26feaab0 Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Mon, 13 Jan 2014 13:36:28 -0500 Subject: [PATCH] nv50: allocate an extra code bo to avoid dmesg spam Each code BO is a heap that allocates at the end first, and so GPs are allocated at the very end of the allocated space. When executing, we see PAGE_NOT_PRESENT errors for the next page. Just over-allocate to make sure that there's something there. Signed-off-by: Ilia Mirkin --- src/gallium/drivers/nouveau/nv50/nv50_screen.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c b/src/gallium/drivers/nouveau/nv50/nv50_screen.c index b678cee..2e7b84d 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c @@ -738,8 +738,12 @@ nv50_screen_create(struct nouveau_device *dev) goto fail; } + /* This over-allocates by a whole code BO. The GP, which would execute at + * the end of the last page, would trigger faults. The going theory is that + * it prefetches up to a certain amount. This avoids dmesg spam. + */ ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 1 << 16, - 3 << NV50_CODE_BO_SIZE_LOG2, NULL, &screen->code); + 4 << NV50_CODE_BO_SIZE_LOG2, NULL, &screen->code); if (ret) { NOUVEAU_ERR("Failed to allocate code bo: %d\n", ret); goto fail; -- 2.7.4