diff options
author | Christian König <deathsimple@vodafone.de> | 2012-10-09 07:31:19 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2012-10-15 13:21:01 -0400 |
commit | 13e55c38f8ba4bb15ff9b51e2c5e7801c0f29526 (patch) | |
tree | db7d32c985655841ede2fa940312a1113a2f2e3c /drivers | |
parent | d72d43cfc5847c176edabc72e6431ba691322c98 (diff) |
drm/radeon: separate pt alloc from lru add
Make it possible to allocate a persistent page table.
Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_cs.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_gart.c | 20 |
3 files changed, 18 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 54cf9b594ca6..8c42d54c2e26 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -1851,6 +1851,7 @@ void radeon_vm_manager_fini(struct radeon_device *rdev); | |||
1851 | void radeon_vm_init(struct radeon_device *rdev, struct radeon_vm *vm); | 1851 | void radeon_vm_init(struct radeon_device *rdev, struct radeon_vm *vm); |
1852 | void radeon_vm_fini(struct radeon_device *rdev, struct radeon_vm *vm); | 1852 | void radeon_vm_fini(struct radeon_device *rdev, struct radeon_vm *vm); |
1853 | int radeon_vm_alloc_pt(struct radeon_device *rdev, struct radeon_vm *vm); | 1853 | int radeon_vm_alloc_pt(struct radeon_device *rdev, struct radeon_vm *vm); |
1854 | void radeon_vm_add_to_lru(struct radeon_device *rdev, struct radeon_vm *vm); | ||
1854 | struct radeon_fence *radeon_vm_grab_id(struct radeon_device *rdev, | 1855 | struct radeon_fence *radeon_vm_grab_id(struct radeon_device *rdev, |
1855 | struct radeon_vm *vm, int ring); | 1856 | struct radeon_vm *vm, int ring); |
1856 | void radeon_vm_fence(struct radeon_device *rdev, | 1857 | void radeon_vm_fence(struct radeon_device *rdev, |
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index cb7b7c062fef..41672cc563fb 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c | |||
@@ -478,6 +478,7 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, | |||
478 | } | 478 | } |
479 | 479 | ||
480 | out: | 480 | out: |
481 | radeon_vm_add_to_lru(rdev, vm); | ||
481 | mutex_unlock(&vm->mutex); | 482 | mutex_unlock(&vm->mutex); |
482 | mutex_unlock(&rdev->vm_manager.lock); | 483 | mutex_unlock(&rdev->vm_manager.lock); |
483 | return r; | 484 | return r; |
diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c index 7e21ea32242a..a7677dd1ce98 100644 --- a/drivers/gpu/drm/radeon/radeon_gart.c +++ b/drivers/gpu/drm/radeon/radeon_gart.c | |||
@@ -617,9 +617,6 @@ int radeon_vm_alloc_pt(struct radeon_device *rdev, struct radeon_vm *vm) | |||
617 | } | 617 | } |
618 | 618 | ||
619 | if (vm->page_directory != NULL) { | 619 | if (vm->page_directory != NULL) { |
620 | /* update lru */ | ||
621 | list_del_init(&vm->list); | ||
622 | list_add_tail(&vm->list, &rdev->vm_manager.lru_vm); | ||
623 | return 0; | 620 | return 0; |
624 | } | 621 | } |
625 | 622 | ||
@@ -653,11 +650,26 @@ retry: | |||
653 | return -ENOMEM; | 650 | return -ENOMEM; |
654 | } | 651 | } |
655 | 652 | ||
656 | list_add_tail(&vm->list, &rdev->vm_manager.lru_vm); | ||
657 | return 0; | 653 | return 0; |
658 | } | 654 | } |
659 | 655 | ||
660 | /** | 656 | /** |
657 | * radeon_vm_add_to_lru - add VMs page table to LRU list | ||
658 | * | ||
659 | * @rdev: radeon_device pointer | ||
660 | * @vm: vm to add to LRU | ||
661 | * | ||
662 | * Add the allocated page table to the LRU list (cayman+). | ||
663 | * | ||
664 | * Global mutex must be locked! | ||
665 | */ | ||
666 | void radeon_vm_add_to_lru(struct radeon_device *rdev, struct radeon_vm *vm) | ||
667 | { | ||
668 | list_del_init(&vm->list); | ||
669 | list_add_tail(&vm->list, &rdev->vm_manager.lru_vm); | ||
670 | } | ||
671 | |||
672 | /** | ||
661 | * radeon_vm_grab_id - allocate the next free VMID | 673 | * radeon_vm_grab_id - allocate the next free VMID |
662 | * | 674 | * |
663 | * @rdev: radeon_device pointer | 675 | * @rdev: radeon_device pointer |