drm/radeon/kms: Convert radeon to new ttm_bo_init
Now bo init use placement structure like bo validation does. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
09855acb1c
commit
1fb107fc46
1 changed files with 9 additions and 30 deletions
|
@ -56,25 +56,6 @@ static void radeon_ttm_bo_destroy(struct ttm_buffer_object *tbo)
|
||||||
kfree(bo);
|
kfree(bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u32 radeon_ttm_flags_from_domain(u32 domain)
|
|
||||||
{
|
|
||||||
u32 flags = 0;
|
|
||||||
|
|
||||||
if (domain & RADEON_GEM_DOMAIN_VRAM) {
|
|
||||||
flags |= TTM_PL_FLAG_VRAM | TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED;
|
|
||||||
}
|
|
||||||
if (domain & RADEON_GEM_DOMAIN_GTT) {
|
|
||||||
flags |= TTM_PL_FLAG_TT | TTM_PL_MASK_CACHING;
|
|
||||||
}
|
|
||||||
if (domain & RADEON_GEM_DOMAIN_CPU) {
|
|
||||||
flags |= TTM_PL_FLAG_SYSTEM | TTM_PL_MASK_CACHING;
|
|
||||||
}
|
|
||||||
if (!flags) {
|
|
||||||
flags |= TTM_PL_FLAG_SYSTEM | TTM_PL_MASK_CACHING;
|
|
||||||
}
|
|
||||||
return flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
|
void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
|
||||||
{
|
{
|
||||||
u32 c = 0;
|
u32 c = 0;
|
||||||
|
@ -100,7 +81,6 @@ int radeon_bo_create(struct radeon_device *rdev, struct drm_gem_object *gobj,
|
||||||
{
|
{
|
||||||
struct radeon_bo *bo;
|
struct radeon_bo *bo;
|
||||||
enum ttm_bo_type type;
|
enum ttm_bo_type type;
|
||||||
u32 flags;
|
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if (unlikely(rdev->mman.bdev.dev_mapping == NULL)) {
|
if (unlikely(rdev->mman.bdev.dev_mapping == NULL)) {
|
||||||
|
@ -120,16 +100,16 @@ int radeon_bo_create(struct radeon_device *rdev, struct drm_gem_object *gobj,
|
||||||
bo->surface_reg = -1;
|
bo->surface_reg = -1;
|
||||||
INIT_LIST_HEAD(&bo->list);
|
INIT_LIST_HEAD(&bo->list);
|
||||||
|
|
||||||
flags = radeon_ttm_flags_from_domain(domain);
|
radeon_ttm_placement_from_domain(bo, domain);
|
||||||
/* Kernel allocation are uninterruptible */
|
/* Kernel allocation are uninterruptible */
|
||||||
r = ttm_buffer_object_init(&rdev->mman.bdev, &bo->tbo, size, type,
|
r = ttm_bo_init(&rdev->mman.bdev, &bo->tbo, size, type,
|
||||||
flags, 0, 0, !kernel, NULL, size,
|
&bo->placement, 0, 0, !kernel, NULL, size,
|
||||||
&radeon_ttm_bo_destroy);
|
&radeon_ttm_bo_destroy);
|
||||||
if (unlikely(r != 0)) {
|
if (unlikely(r != 0)) {
|
||||||
if (r != -ERESTARTSYS)
|
if (r != -ERESTARTSYS)
|
||||||
dev_err(rdev->dev,
|
dev_err(rdev->dev,
|
||||||
"object_init failed for (%ld, 0x%08X)\n",
|
"object_init failed for (%lu, 0x%08X)\n",
|
||||||
size, flags);
|
size, domain);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
*bo_ptr = bo;
|
*bo_ptr = bo;
|
||||||
|
@ -199,7 +179,7 @@ int radeon_bo_pin(struct radeon_bo *bo, u32 domain, u64 *gpu_addr)
|
||||||
radeon_ttm_placement_from_domain(bo, domain);
|
radeon_ttm_placement_from_domain(bo, domain);
|
||||||
for (i = 0; i < bo->placement.num_placement; i++)
|
for (i = 0; i < bo->placement.num_placement; i++)
|
||||||
bo->placements[i] |= TTM_PL_FLAG_NO_EVICT;
|
bo->placements[i] |= TTM_PL_FLAG_NO_EVICT;
|
||||||
r = ttm_buffer_object_validate(&bo->tbo, &bo->placement, false, false);
|
r = ttm_bo_validate(&bo->tbo, &bo->placement, false, false);
|
||||||
if (likely(r == 0)) {
|
if (likely(r == 0)) {
|
||||||
bo->pin_count = 1;
|
bo->pin_count = 1;
|
||||||
if (gpu_addr != NULL)
|
if (gpu_addr != NULL)
|
||||||
|
@ -223,7 +203,7 @@ int radeon_bo_unpin(struct radeon_bo *bo)
|
||||||
return 0;
|
return 0;
|
||||||
for (i = 0; i < bo->placement.num_placement; i++)
|
for (i = 0; i < bo->placement.num_placement; i++)
|
||||||
bo->placements[i] &= ~TTM_PL_FLAG_NO_EVICT;
|
bo->placements[i] &= ~TTM_PL_FLAG_NO_EVICT;
|
||||||
r = ttm_buffer_object_validate(&bo->tbo, &bo->placement, false, false);
|
r = ttm_bo_validate(&bo->tbo, &bo->placement, false, false);
|
||||||
if (unlikely(r != 0))
|
if (unlikely(r != 0))
|
||||||
dev_err(bo->rdev->dev, "%p validate failed for unpin\n", bo);
|
dev_err(bo->rdev->dev, "%p validate failed for unpin\n", bo);
|
||||||
return r;
|
return r;
|
||||||
|
@ -336,8 +316,7 @@ int radeon_bo_list_validate(struct list_head *head, void *fence)
|
||||||
radeon_ttm_placement_from_domain(bo,
|
radeon_ttm_placement_from_domain(bo,
|
||||||
lobj->rdomain);
|
lobj->rdomain);
|
||||||
}
|
}
|
||||||
r = ttm_buffer_object_validate(&bo->tbo,
|
r = ttm_bo_validate(&bo->tbo, &bo->placement,
|
||||||
&bo->placement,
|
|
||||||
true, false);
|
true, false);
|
||||||
if (unlikely(r))
|
if (unlikely(r))
|
||||||
return r;
|
return r;
|
||||||
|
|
Loading…
Reference in a new issue