From 24839663a40257e0468406d72c48d431b5ae2bd4 Mon Sep 17 00:00:00 2001 From: Sergii Romantsov Date: Wed, 15 Aug 2018 14:23:42 +0300 Subject: [PATCH] intel/ppgtt: memory address alignment Kernel (for ppgtt) requires memory address to be aligned to page size (4096). -v2: added marking that also fixes initial commit 01058a552294. -v3: numbers replaced by PAGE_SIZE; buffer-object size is aligned instead of alignment of offsets (Chris Wilson). -v4: changes related to PAGE_SIZE moved to separate commit -v5: restored alignment to page-size for 0-size. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106997 Fixes: a363bb2cd0e2 (i965: Allocate VMA in userspace for full-PPGTT systems.) Fixes: 01058a552294 (i965: Add virtual memory allocator infrastructure to brw_bufmgr.) Signed-off-by: Sergii Romantsov Reviewed-by: Kenneth Graunke Reviewed-by: Lionel Landwerlin --- src/mesa/drivers/dri/i965/brw_bufmgr.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.c b/src/mesa/drivers/dri/i965/brw_bufmgr.c index 09d45e30ecc..19e2d145f4a 100644 --- a/src/mesa/drivers/dri/i965/brw_bufmgr.c +++ b/src/mesa/drivers/dri/i965/brw_bufmgr.c @@ -496,7 +496,6 @@ bo_alloc_internal(struct brw_bufmgr *bufmgr, uint32_t stride) { struct brw_bo *bo; - unsigned int page_size = getpagesize(); int ret; struct bo_cache_bucket *bucket; bool alloc_from_cache; @@ -522,12 +521,12 @@ bo_alloc_internal(struct brw_bufmgr *bufmgr, * allocation up. */ if (bucket == NULL) { - bo_size = size; - if (bo_size < page_size) - bo_size = page_size; + unsigned int page_size = getpagesize(); + bo_size = size == 0 ? page_size : ALIGN(size, page_size); } else { bo_size = bucket->size; } + assert(bo_size); mtx_lock(&bufmgr->lock); /* Get a buffer out of the cache if available */ -- 2.30.2