diff options
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_cs.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_gart.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_trace.h | 18 |
4 files changed, 32 insertions, 12 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index ecf2a3960c07..b1f990d0eaa1 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -2710,10 +2710,10 @@ void radeon_vm_fence(struct radeon_device *rdev, | |||
2710 | struct radeon_vm *vm, | 2710 | struct radeon_vm *vm, |
2711 | struct radeon_fence *fence); | 2711 | struct radeon_fence *fence); |
2712 | uint64_t radeon_vm_map_gart(struct radeon_device *rdev, uint64_t addr); | 2712 | uint64_t radeon_vm_map_gart(struct radeon_device *rdev, uint64_t addr); |
2713 | int radeon_vm_bo_update_pte(struct radeon_device *rdev, | 2713 | int radeon_vm_bo_update(struct radeon_device *rdev, |
2714 | struct radeon_vm *vm, | 2714 | struct radeon_vm *vm, |
2715 | struct radeon_bo *bo, | 2715 | struct radeon_bo *bo, |
2716 | struct ttm_mem_reg *mem); | 2716 | struct ttm_mem_reg *mem); |
2717 | void radeon_vm_bo_invalidate(struct radeon_device *rdev, | 2717 | void radeon_vm_bo_invalidate(struct radeon_device *rdev, |
2718 | struct radeon_bo *bo); | 2718 | struct radeon_bo *bo); |
2719 | struct radeon_bo_va *radeon_vm_bo_find(struct radeon_vm *vm, | 2719 | struct radeon_bo_va *radeon_vm_bo_find(struct radeon_vm *vm, |
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index f41594b2eeac..0b366169d64d 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c | |||
@@ -360,13 +360,13 @@ static int radeon_bo_vm_update_pte(struct radeon_cs_parser *parser, | |||
360 | struct radeon_bo *bo; | 360 | struct radeon_bo *bo; |
361 | int r; | 361 | int r; |
362 | 362 | ||
363 | r = radeon_vm_bo_update_pte(rdev, vm, rdev->ring_tmp_bo.bo, &rdev->ring_tmp_bo.bo->tbo.mem); | 363 | r = radeon_vm_bo_update(rdev, vm, rdev->ring_tmp_bo.bo, &rdev->ring_tmp_bo.bo->tbo.mem); |
364 | if (r) { | 364 | if (r) { |
365 | return r; | 365 | return r; |
366 | } | 366 | } |
367 | list_for_each_entry(lobj, &parser->validated, tv.head) { | 367 | list_for_each_entry(lobj, &parser->validated, tv.head) { |
368 | bo = lobj->bo; | 368 | bo = lobj->bo; |
369 | r = radeon_vm_bo_update_pte(parser->rdev, vm, bo, &bo->tbo.mem); | 369 | r = radeon_vm_bo_update(parser->rdev, vm, bo, &bo->tbo.mem); |
370 | if (r) { | 370 | if (r) { |
371 | return r; | 371 | return r; |
372 | } | 372 | } |
diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c index aa8f7782d295..96e440061bdb 100644 --- a/drivers/gpu/drm/radeon/radeon_gart.c +++ b/drivers/gpu/drm/radeon/radeon_gart.c | |||
@@ -1118,7 +1118,7 @@ static void radeon_vm_update_ptes(struct radeon_device *rdev, | |||
1118 | } | 1118 | } |
1119 | 1119 | ||
1120 | /** | 1120 | /** |
1121 | * radeon_vm_bo_update_pte - map a bo into the vm page table | 1121 | * radeon_vm_bo_update - map a bo into the vm page table |
1122 | * | 1122 | * |
1123 | * @rdev: radeon_device pointer | 1123 | * @rdev: radeon_device pointer |
1124 | * @vm: requested vm | 1124 | * @vm: requested vm |
@@ -1130,10 +1130,10 @@ static void radeon_vm_update_ptes(struct radeon_device *rdev, | |||
1130 | * | 1130 | * |
1131 | * Object have to be reserved & global and local mutex must be locked! | 1131 | * Object have to be reserved & global and local mutex must be locked! |
1132 | */ | 1132 | */ |
1133 | int radeon_vm_bo_update_pte(struct radeon_device *rdev, | 1133 | int radeon_vm_bo_update(struct radeon_device *rdev, |
1134 | struct radeon_vm *vm, | 1134 | struct radeon_vm *vm, |
1135 | struct radeon_bo *bo, | 1135 | struct radeon_bo *bo, |
1136 | struct ttm_mem_reg *mem) | 1136 | struct ttm_mem_reg *mem) |
1137 | { | 1137 | { |
1138 | struct radeon_ib ib; | 1138 | struct radeon_ib ib; |
1139 | struct radeon_bo_va *bo_va; | 1139 | struct radeon_bo_va *bo_va; |
@@ -1178,6 +1178,8 @@ int radeon_vm_bo_update_pte(struct radeon_device *rdev, | |||
1178 | bo_va->valid = false; | 1178 | bo_va->valid = false; |
1179 | } | 1179 | } |
1180 | 1180 | ||
1181 | trace_radeon_vm_bo_update(bo_va); | ||
1182 | |||
1181 | nptes = radeon_bo_ngpu_pages(bo); | 1183 | nptes = radeon_bo_ngpu_pages(bo); |
1182 | 1184 | ||
1183 | /* assume two extra pdes in case the mapping overlaps the borders */ | 1185 | /* assume two extra pdes in case the mapping overlaps the borders */ |
@@ -1259,7 +1261,7 @@ int radeon_vm_bo_rmv(struct radeon_device *rdev, | |||
1259 | mutex_lock(&rdev->vm_manager.lock); | 1261 | mutex_lock(&rdev->vm_manager.lock); |
1260 | mutex_lock(&bo_va->vm->mutex); | 1262 | mutex_lock(&bo_va->vm->mutex); |
1261 | if (bo_va->soffset) { | 1263 | if (bo_va->soffset) { |
1262 | r = radeon_vm_bo_update_pte(rdev, bo_va->vm, bo_va->bo, NULL); | 1264 | r = radeon_vm_bo_update(rdev, bo_va->vm, bo_va->bo, NULL); |
1263 | } | 1265 | } |
1264 | mutex_unlock(&rdev->vm_manager.lock); | 1266 | mutex_unlock(&rdev->vm_manager.lock); |
1265 | list_del(&bo_va->vm_list); | 1267 | list_del(&bo_va->vm_list); |
diff --git a/drivers/gpu/drm/radeon/radeon_trace.h b/drivers/gpu/drm/radeon/radeon_trace.h index 8c13aeca59c9..0473257d4078 100644 --- a/drivers/gpu/drm/radeon/radeon_trace.h +++ b/drivers/gpu/drm/radeon/radeon_trace.h | |||
@@ -62,6 +62,24 @@ TRACE_EVENT(radeon_vm_grab_id, | |||
62 | TP_printk("vmid=%u, ring=%u", __entry->vmid, __entry->ring) | 62 | TP_printk("vmid=%u, ring=%u", __entry->vmid, __entry->ring) |
63 | ); | 63 | ); |
64 | 64 | ||
65 | TRACE_EVENT(radeon_vm_bo_update, | ||
66 | TP_PROTO(struct radeon_bo_va *bo_va), | ||
67 | TP_ARGS(bo_va), | ||
68 | TP_STRUCT__entry( | ||
69 | __field(u64, soffset) | ||
70 | __field(u64, eoffset) | ||
71 | __field(u32, flags) | ||
72 | ), | ||
73 | |||
74 | TP_fast_assign( | ||
75 | __entry->soffset = bo_va->soffset; | ||
76 | __entry->eoffset = bo_va->eoffset; | ||
77 | __entry->flags = bo_va->flags; | ||
78 | ), | ||
79 | TP_printk("soffs=%010llx, eoffs=%010llx, flags=%08x", | ||
80 | __entry->soffset, __entry->eoffset, __entry->flags) | ||
81 | ); | ||
82 | |||
65 | TRACE_EVENT(radeon_vm_set_page, | 83 | TRACE_EVENT(radeon_vm_set_page, |
66 | TP_PROTO(uint64_t pe, uint64_t addr, unsigned count, | 84 | TP_PROTO(uint64_t pe, uint64_t addr, unsigned count, |
67 | uint32_t incr, uint32_t flags), | 85 | uint32_t incr, uint32_t flags), |