]> git.karo-electronics.de Git - linux-beck.git/commitdiff
drm/radeon: move IB pool to 1MB offset
authorChristian König <deathsimple@vodafone.de>
Tue, 11 Sep 2012 14:09:59 +0000 (16:09 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 20 Sep 2012 17:10:42 +0000 (13:10 -0400)
Even GPUs can have a null pointer dereference, so move
the IB pool to another offset to catch those.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
drivers/gpu/drm/radeon/radeon.h
drivers/gpu/drm/radeon/radeon_gart.c
drivers/gpu/drm/radeon/radeon_ring.c

index d48bd3045db6d6f2a56970b5bec054377eaf4aaf..55f17f9bc0957c5d68bf0188b75fcca8ce11e6b5 100644 (file)
@@ -123,6 +123,7 @@ extern int radeon_lockup_timeout;
 #define CAYMAN_RING_TYPE_CP2_INDEX             2
 
 /* hardcode those limit for now */
+#define RADEON_VA_IB_OFFSET                    (1 << 20)
 #define RADEON_VA_RESERVED_SIZE                        (8 << 20)
 #define RADEON_IB_VM_MAX_SIZE                  (64 << 10)
 
index 5694421b7c670c22bdd1a430d49b94ed217ed312..1b1c001e269a9c5b6be1e069109230df43b9174e 100644 (file)
@@ -980,7 +980,7 @@ int radeon_vm_init(struct radeon_device *rdev, struct radeon_vm *vm)
        /* map the ib pool buffer at 0 in virtual address space, set
         * read only
         */
-       r = radeon_vm_bo_add(rdev, vm, rdev->ring_tmp_bo.bo, 0,
+       r = radeon_vm_bo_add(rdev, vm, rdev->ring_tmp_bo.bo, RADEON_VA_IB_OFFSET,
                             RADEON_VM_PAGE_READABLE | RADEON_VM_PAGE_SNOOPED);
        return r;
 }
index 993cf712074f10d6bec17a4df43c9f1789c1d883..d90b0bc6f0729a8ab6f3518cff52c2d99d087e12 100644 (file)
@@ -79,10 +79,10 @@ int radeon_ib_get(struct radeon_device *rdev, int ring,
        ib->ptr = radeon_sa_bo_cpu_addr(ib->sa_bo);
        ib->vm = vm;
        if (vm) {
-               /* ib pool is bind at 0 in virtual address space,
-                * so gpu_addr is the offset inside the pool bo
+               /* ib pool is bound at RADEON_VA_IB_OFFSET in virtual address
+                * space and soffset is the offset inside the pool bo
                 */
-               ib->gpu_addr = ib->sa_bo->soffset;
+               ib->gpu_addr = ib->sa_bo->soffset + RADEON_VA_IB_OFFSET;
        } else {
                ib->gpu_addr = radeon_sa_bo_gpu_addr(ib->sa_bo);
        }