diff options
author | Christian König <christian.koenig@amd.com> | 2014-02-20 13:33:15 -0500 |
---|---|---|
committer | Christian König <christian.koenig@amd.com> | 2014-03-03 05:26:27 -0500 |
commit | 529364e05bc093dc41b0c9e67e94ac82442c1b35 (patch) | |
tree | b1b200ae02732a9094f306c2d5e50e47d54c25e9 | |
parent | 6d2f2944e95e504a7d33385eeeb9bb7fcca72592 (diff) |
drm/radeon: remove global vm lock
Not needed any more.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_cs.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_device.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_ring.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_vm.c | 10 |
5 files changed, 11 insertions, 14 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index c31e3c2c1b3a..cd6a48099547 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -884,7 +884,6 @@ struct radeon_vm { | |||
884 | }; | 884 | }; |
885 | 885 | ||
886 | struct radeon_vm_manager { | 886 | struct radeon_vm_manager { |
887 | struct mutex lock; | ||
888 | struct radeon_fence *active[RADEON_NUM_VM]; | 887 | struct radeon_fence *active[RADEON_NUM_VM]; |
889 | uint32_t max_pfn; | 888 | uint32_t max_pfn; |
890 | /* number of VMIDs */ | 889 | /* number of VMIDs */ |
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index 420c28dd6a1c..0570e7675fd3 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c | |||
@@ -502,7 +502,6 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, | |||
502 | if (parser->ring == R600_RING_TYPE_UVD_INDEX) | 502 | if (parser->ring == R600_RING_TYPE_UVD_INDEX) |
503 | radeon_uvd_note_usage(rdev); | 503 | radeon_uvd_note_usage(rdev); |
504 | 504 | ||
505 | mutex_lock(&rdev->vm_manager.lock); | ||
506 | mutex_lock(&vm->mutex); | 505 | mutex_lock(&vm->mutex); |
507 | r = radeon_bo_vm_update_pte(parser, vm); | 506 | r = radeon_bo_vm_update_pte(parser, vm); |
508 | if (r) { | 507 | if (r) { |
@@ -510,8 +509,6 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, | |||
510 | } | 509 | } |
511 | radeon_cs_sync_rings(parser); | 510 | radeon_cs_sync_rings(parser); |
512 | radeon_semaphore_sync_to(parser->ib.semaphore, vm->fence); | 511 | radeon_semaphore_sync_to(parser->ib.semaphore, vm->fence); |
513 | radeon_semaphore_sync_to(parser->ib.semaphore, | ||
514 | radeon_vm_grab_id(rdev, vm, parser->ring)); | ||
515 | 512 | ||
516 | if ((rdev->family >= CHIP_TAHITI) && | 513 | if ((rdev->family >= CHIP_TAHITI) && |
517 | (parser->chunk_const_ib_idx != -1)) { | 514 | (parser->chunk_const_ib_idx != -1)) { |
@@ -522,7 +519,6 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev, | |||
522 | 519 | ||
523 | out: | 520 | out: |
524 | mutex_unlock(&vm->mutex); | 521 | mutex_unlock(&vm->mutex); |
525 | mutex_unlock(&rdev->vm_manager.lock); | ||
526 | return r; | 522 | return r; |
527 | } | 523 | } |
528 | 524 | ||
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index e58dbabd7d7d..7db44de90d6c 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c | |||
@@ -1191,8 +1191,7 @@ int radeon_device_init(struct radeon_device *rdev, | |||
1191 | r = radeon_gem_init(rdev); | 1191 | r = radeon_gem_init(rdev); |
1192 | if (r) | 1192 | if (r) |
1193 | return r; | 1193 | return r; |
1194 | /* initialize vm here */ | 1194 | |
1195 | mutex_init(&rdev->vm_manager.lock); | ||
1196 | /* Adjust VM size here. | 1195 | /* Adjust VM size here. |
1197 | * Currently set to 4GB ((1 << 20) 4k pages). | 1196 | * Currently set to 4GB ((1 << 20) 4k pages). |
1198 | * Max GPUVM size for cayman and SI is 40 bits. | 1197 | * Max GPUVM size for cayman and SI is 40 bits. |
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c index 665591a7faad..5321e249021f 100644 --- a/drivers/gpu/drm/radeon/radeon_ring.c +++ b/drivers/gpu/drm/radeon/radeon_ring.c | |||
@@ -145,6 +145,13 @@ int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib, | |||
145 | return r; | 145 | return r; |
146 | } | 146 | } |
147 | 147 | ||
148 | /* grab a vm id if necessary */ | ||
149 | if (ib->vm) { | ||
150 | struct radeon_fence *vm_id_fence; | ||
151 | vm_id_fence = radeon_vm_grab_id(rdev, ib->vm, ib->ring); | ||
152 | radeon_semaphore_sync_to(ib->semaphore, vm_id_fence); | ||
153 | } | ||
154 | |||
148 | /* sync with other rings */ | 155 | /* sync with other rings */ |
149 | r = radeon_semaphore_sync_rings(rdev, ib->semaphore, ib->ring); | 156 | r = radeon_semaphore_sync_rings(rdev, ib->semaphore, ib->ring); |
150 | if (r) { | 157 | if (r) { |
diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c index 44b6918a87ba..81d91b513ce1 100644 --- a/drivers/gpu/drm/radeon/radeon_vm.c +++ b/drivers/gpu/drm/radeon/radeon_vm.c | |||
@@ -110,12 +110,10 @@ void radeon_vm_manager_fini(struct radeon_device *rdev) | |||
110 | if (!rdev->vm_manager.enabled) | 110 | if (!rdev->vm_manager.enabled) |
111 | return; | 111 | return; |
112 | 112 | ||
113 | mutex_lock(&rdev->vm_manager.lock); | ||
114 | for (i = 0; i < RADEON_NUM_VM; ++i) | 113 | for (i = 0; i < RADEON_NUM_VM; ++i) |
115 | radeon_fence_unref(&rdev->vm_manager.active[i]); | 114 | radeon_fence_unref(&rdev->vm_manager.active[i]); |
116 | radeon_asic_vm_fini(rdev); | 115 | radeon_asic_vm_fini(rdev); |
117 | rdev->vm_manager.enabled = false; | 116 | rdev->vm_manager.enabled = false; |
118 | mutex_unlock(&rdev->vm_manager.lock); | ||
119 | } | 117 | } |
120 | 118 | ||
121 | /** | 119 | /** |
@@ -734,7 +732,7 @@ static void radeon_vm_update_ptes(struct radeon_device *rdev, | |||
734 | * Fill in the page table entries for @bo (cayman+). | 732 | * Fill in the page table entries for @bo (cayman+). |
735 | * Returns 0 for success, -EINVAL for failure. | 733 | * Returns 0 for success, -EINVAL for failure. |
736 | * | 734 | * |
737 | * Object have to be reserved & global and local mutex must be locked! | 735 | * Object have to be reserved and mutex must be locked! |
738 | */ | 736 | */ |
739 | int radeon_vm_bo_update(struct radeon_device *rdev, | 737 | int radeon_vm_bo_update(struct radeon_device *rdev, |
740 | struct radeon_vm *vm, | 738 | struct radeon_vm *vm, |
@@ -842,12 +840,10 @@ int radeon_vm_bo_rmv(struct radeon_device *rdev, | |||
842 | { | 840 | { |
843 | int r = 0; | 841 | int r = 0; |
844 | 842 | ||
845 | mutex_lock(&rdev->vm_manager.lock); | ||
846 | mutex_lock(&bo_va->vm->mutex); | 843 | mutex_lock(&bo_va->vm->mutex); |
847 | if (bo_va->soffset) { | 844 | if (bo_va->soffset) |
848 | r = radeon_vm_bo_update(rdev, bo_va->vm, bo_va->bo, NULL); | 845 | r = radeon_vm_bo_update(rdev, bo_va->vm, bo_va->bo, NULL); |
849 | } | 846 | |
850 | mutex_unlock(&rdev->vm_manager.lock); | ||
851 | list_del(&bo_va->vm_list); | 847 | list_del(&bo_va->vm_list); |
852 | mutex_unlock(&bo_va->vm->mutex); | 848 | mutex_unlock(&bo_va->vm->mutex); |
853 | list_del(&bo_va->bo_list); | 849 | list_del(&bo_va->bo_list); |