mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
drm/radeon: allow selection of alignment in the sub-allocator
There are cases where we need more than 4k alignment. No functional change with this commit. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
9cc2e0e9f1
commit
6c4f978b35
5 changed files with 8 additions and 4 deletions
|
@ -455,6 +455,7 @@ struct radeon_sa_manager {
|
||||||
uint64_t gpu_addr;
|
uint64_t gpu_addr;
|
||||||
void *cpu_ptr;
|
void *cpu_ptr;
|
||||||
uint32_t domain;
|
uint32_t domain;
|
||||||
|
uint32_t align;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct radeon_sa_bo;
|
struct radeon_sa_bo;
|
||||||
|
|
|
@ -467,6 +467,7 @@ int radeon_vm_manager_init(struct radeon_device *rdev)
|
||||||
size *= 2;
|
size *= 2;
|
||||||
r = radeon_sa_bo_manager_init(rdev, &rdev->vm_manager.sa_manager,
|
r = radeon_sa_bo_manager_init(rdev, &rdev->vm_manager.sa_manager,
|
||||||
RADEON_GPU_PAGE_ALIGN(size),
|
RADEON_GPU_PAGE_ALIGN(size),
|
||||||
|
RADEON_GPU_PAGE_SIZE,
|
||||||
RADEON_GEM_DOMAIN_VRAM);
|
RADEON_GEM_DOMAIN_VRAM);
|
||||||
if (r) {
|
if (r) {
|
||||||
dev_err(rdev->dev, "failed to allocate vm bo (%dKB)\n",
|
dev_err(rdev->dev, "failed to allocate vm bo (%dKB)\n",
|
||||||
|
|
|
@ -174,7 +174,7 @@ static inline void * radeon_sa_bo_cpu_addr(struct radeon_sa_bo *sa_bo)
|
||||||
|
|
||||||
extern int radeon_sa_bo_manager_init(struct radeon_device *rdev,
|
extern int radeon_sa_bo_manager_init(struct radeon_device *rdev,
|
||||||
struct radeon_sa_manager *sa_manager,
|
struct radeon_sa_manager *sa_manager,
|
||||||
unsigned size, u32 domain);
|
unsigned size, u32 align, u32 domain);
|
||||||
extern void radeon_sa_bo_manager_fini(struct radeon_device *rdev,
|
extern void radeon_sa_bo_manager_fini(struct radeon_device *rdev,
|
||||||
struct radeon_sa_manager *sa_manager);
|
struct radeon_sa_manager *sa_manager);
|
||||||
extern int radeon_sa_bo_manager_start(struct radeon_device *rdev,
|
extern int radeon_sa_bo_manager_start(struct radeon_device *rdev,
|
||||||
|
|
|
@ -224,6 +224,7 @@ int radeon_ib_pool_init(struct radeon_device *rdev)
|
||||||
}
|
}
|
||||||
r = radeon_sa_bo_manager_init(rdev, &rdev->ring_tmp_bo,
|
r = radeon_sa_bo_manager_init(rdev, &rdev->ring_tmp_bo,
|
||||||
RADEON_IB_POOL_SIZE*64*1024,
|
RADEON_IB_POOL_SIZE*64*1024,
|
||||||
|
RADEON_GPU_PAGE_SIZE,
|
||||||
RADEON_GEM_DOMAIN_GTT);
|
RADEON_GEM_DOMAIN_GTT);
|
||||||
if (r) {
|
if (r) {
|
||||||
return r;
|
return r;
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void radeon_sa_bo_try_free(struct radeon_sa_manager *sa_manager);
|
||||||
|
|
||||||
int radeon_sa_bo_manager_init(struct radeon_device *rdev,
|
int radeon_sa_bo_manager_init(struct radeon_device *rdev,
|
||||||
struct radeon_sa_manager *sa_manager,
|
struct radeon_sa_manager *sa_manager,
|
||||||
unsigned size, u32 domain)
|
unsigned size, u32 align, u32 domain)
|
||||||
{
|
{
|
||||||
int i, r;
|
int i, r;
|
||||||
|
|
||||||
|
@ -57,13 +57,14 @@ int radeon_sa_bo_manager_init(struct radeon_device *rdev,
|
||||||
sa_manager->bo = NULL;
|
sa_manager->bo = NULL;
|
||||||
sa_manager->size = size;
|
sa_manager->size = size;
|
||||||
sa_manager->domain = domain;
|
sa_manager->domain = domain;
|
||||||
|
sa_manager->align = align;
|
||||||
sa_manager->hole = &sa_manager->olist;
|
sa_manager->hole = &sa_manager->olist;
|
||||||
INIT_LIST_HEAD(&sa_manager->olist);
|
INIT_LIST_HEAD(&sa_manager->olist);
|
||||||
for (i = 0; i < RADEON_NUM_RINGS; ++i) {
|
for (i = 0; i < RADEON_NUM_RINGS; ++i) {
|
||||||
INIT_LIST_HEAD(&sa_manager->flist[i]);
|
INIT_LIST_HEAD(&sa_manager->flist[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
r = radeon_bo_create(rdev, size, RADEON_GPU_PAGE_SIZE, true,
|
r = radeon_bo_create(rdev, size, align, true,
|
||||||
domain, NULL, &sa_manager->bo);
|
domain, NULL, &sa_manager->bo);
|
||||||
if (r) {
|
if (r) {
|
||||||
dev_err(rdev->dev, "(%d) failed to allocate bo for manager\n", r);
|
dev_err(rdev->dev, "(%d) failed to allocate bo for manager\n", r);
|
||||||
|
@ -317,7 +318,7 @@ int radeon_sa_bo_new(struct radeon_device *rdev,
|
||||||
unsigned tries[RADEON_NUM_RINGS];
|
unsigned tries[RADEON_NUM_RINGS];
|
||||||
int i, r;
|
int i, r;
|
||||||
|
|
||||||
BUG_ON(align > RADEON_GPU_PAGE_SIZE);
|
BUG_ON(align > sa_manager->align);
|
||||||
BUG_ON(size > sa_manager->size);
|
BUG_ON(size > sa_manager->size);
|
||||||
|
|
||||||
*sa_bo = kmalloc(sizeof(struct radeon_sa_bo), GFP_KERNEL);
|
*sa_bo = kmalloc(sizeof(struct radeon_sa_bo), GFP_KERNEL);
|
||||||
|
|
Loading…
Add table
Reference in a new issue