Commit 391bfec3 authored by Alex Deucher's avatar Alex Deucher

drm/radeon: remove visible vram size limit on bo allocation (v4)

Now that fallback to gtt is fixed for cpu access, we can
remove this limit.

bug:
https://bugs.freedesktop.org/show_bug.cgi?id=78717

v2: use new gart_pin_size to accurately track available gtt.
v3: fix comment
v4: clarify comment
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
parent 2c6316cb
...@@ -547,7 +547,7 @@ struct radeon_gem { ...@@ -547,7 +547,7 @@ struct radeon_gem {
int radeon_gem_init(struct radeon_device *rdev); int radeon_gem_init(struct radeon_device *rdev);
void radeon_gem_fini(struct radeon_device *rdev); void radeon_gem_fini(struct radeon_device *rdev);
int radeon_gem_object_create(struct radeon_device *rdev, int size, int radeon_gem_object_create(struct radeon_device *rdev, unsigned long size,
int alignment, int initial_domain, int alignment, int initial_domain,
u32 flags, bool discardable, bool kernel, u32 flags, bool discardable, bool kernel,
struct drm_gem_object **obj); struct drm_gem_object **obj);
......
...@@ -40,7 +40,7 @@ void radeon_gem_object_free(struct drm_gem_object *gobj) ...@@ -40,7 +40,7 @@ void radeon_gem_object_free(struct drm_gem_object *gobj)
} }
} }
int radeon_gem_object_create(struct radeon_device *rdev, int size, int radeon_gem_object_create(struct radeon_device *rdev, unsigned long size,
int alignment, int initial_domain, int alignment, int initial_domain,
u32 flags, bool discardable, bool kernel, u32 flags, bool discardable, bool kernel,
struct drm_gem_object **obj) struct drm_gem_object **obj)
...@@ -55,10 +55,12 @@ int radeon_gem_object_create(struct radeon_device *rdev, int size, ...@@ -55,10 +55,12 @@ int radeon_gem_object_create(struct radeon_device *rdev, int size,
alignment = PAGE_SIZE; alignment = PAGE_SIZE;
} }
/* maximun bo size is the minimun btw visible vram and gtt size */ /* Maximum bo size is the unpinned gtt size since we use the gtt to
max_size = min(rdev->mc.visible_vram_size, rdev->mc.gtt_size); * handle vram to system pool migrations.
*/
max_size = rdev->mc.gtt_size - rdev->gart_pin_size;
if (size > max_size) { if (size > max_size) {
DRM_DEBUG("Allocation size %dMb bigger than %ldMb limit\n", DRM_DEBUG("Allocation size %ldMb bigger than %ldMb limit\n",
size >> 20, max_size >> 20); size >> 20, max_size >> 20);
return -ENOMEM; return -ENOMEM;
} }
...@@ -72,7 +74,7 @@ int radeon_gem_object_create(struct radeon_device *rdev, int size, ...@@ -72,7 +74,7 @@ int radeon_gem_object_create(struct radeon_device *rdev, int size,
initial_domain |= RADEON_GEM_DOMAIN_GTT; initial_domain |= RADEON_GEM_DOMAIN_GTT;
goto retry; goto retry;
} }
DRM_ERROR("Failed to allocate GEM object (%d, %d, %u, %d)\n", DRM_ERROR("Failed to allocate GEM object (%ld, %d, %u, %d)\n",
size, initial_domain, alignment, r); size, initial_domain, alignment, r);
} }
return r; return r;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment