netfilter: xt_limit: fix invalid return code in limit_mt_check()
[cascardo/linux.git] / drivers / gpu / drm / radeon / radeon_object.c
index e98cae3..73af463 100644 (file)
@@ -188,6 +188,7 @@ int radeon_object_kmap(struct radeon_object *robj, void **ptr)
        if (ptr) {
                *ptr = robj->kptr;
        }
+       radeon_object_check_tiling(robj, 0, 0);
        return 0;
 }
 
@@ -200,6 +201,7 @@ void radeon_object_kunmap(struct radeon_object *robj)
        }
        robj->kptr = NULL;
        spin_unlock(&robj->tobj.lock);
+       radeon_object_check_tiling(robj, 0, 0);
        ttm_bo_kunmap(&robj->kmap);
 }
 
@@ -316,6 +318,25 @@ int radeon_object_wait(struct radeon_object *robj)
        return r;
 }
 
+int radeon_object_busy_domain(struct radeon_object *robj, uint32_t *cur_placement)
+{
+       int r = 0;
+
+       r = radeon_object_reserve(robj, true);
+       if (unlikely(r != 0)) {
+               DRM_ERROR("radeon: failed to reserve object for waiting.\n");
+               return r;
+       }
+       spin_lock(&robj->tobj.lock);
+       *cur_placement = robj->tobj.mem.mem_type;
+       if (robj->tobj.sync_obj) {
+               r = ttm_bo_wait(&robj->tobj, true, true, true);
+       }
+       spin_unlock(&robj->tobj.lock);
+       radeon_object_unreserve(robj);
+       return r;
+}
+
 int radeon_object_evict_vram(struct radeon_device *rdev)
 {
        if (rdev->flags & RADEON_IS_IGP) {
@@ -350,6 +371,14 @@ void radeon_object_force_delete(struct radeon_device *rdev)
 
 int radeon_object_init(struct radeon_device *rdev)
 {
+       /* Add an MTRR for the VRAM */
+       rdev->mc.vram_mtrr = mtrr_add(rdev->mc.aper_base, rdev->mc.aper_size,
+                       MTRR_TYPE_WRCOMB, 1);
+       DRM_INFO("Detected VRAM RAM=%lluM, BAR=%lluM\n",
+               rdev->mc.mc_vram_size >> 20,
+               (unsigned long long)rdev->mc.aper_size >> 20);
+       DRM_INFO("RAM width %dbits %cDR\n",
+                       rdev->mc.vram_width, rdev->mc.vram_is_ddr ? 'D' : 'S');
        return radeon_ttm_init(rdev);
 }