iris: leave the top 4Gb of the high heap VMA unused
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 3 May 2019 18:58:57 +0000 (11:58 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 4 May 2019 02:48:37 +0000 (19:48 -0700)
This ports commit 9e7b0988d6e98690eb8902e477b51713a6ef9cae from anv
to iris.  Thanks to Lionel for noticing that it was missing!

src/gallium/drivers/iris/iris_bufmgr.c

index c38b960c5dd6cc3146c5899cb8e3d43108330a27..221b21d029cca014633f891fb7a140435bafa5f3 100644 (file)
@@ -1681,9 +1681,13 @@ iris_bufmgr_init(struct gen_device_info *devinfo, int fd)
    util_vma_heap_init(&bufmgr->vma_allocator[IRIS_MEMZONE_DYNAMIC],
                       IRIS_MEMZONE_DYNAMIC_START + IRIS_BORDER_COLOR_POOL_SIZE,
                       _4GB_minus_1 - IRIS_BORDER_COLOR_POOL_SIZE);
+
+   /* Leave the last 4GB out of the high vma range, so that no state
+    * base address + size can overflow 48 bits.
+    */
    util_vma_heap_init(&bufmgr->vma_allocator[IRIS_MEMZONE_OTHER],
                       IRIS_MEMZONE_OTHER_START,
-                      gtt_size - IRIS_MEMZONE_OTHER_START);
+                      (gtt_size - _4GB) - IRIS_MEMZONE_OTHER_START);
 
    // XXX: driconf
    bufmgr->bo_reuse = env_var_as_boolean("bo_reuse", true);