diff options
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 |
3 files changed, 21 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index a3dbbd1fc060..736eb4560fd5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
@@ -80,6 +80,7 @@ extern int amdgpu_deep_color; | |||
80 | extern int amdgpu_vm_size; | 80 | extern int amdgpu_vm_size; |
81 | extern int amdgpu_vm_block_size; | 81 | extern int amdgpu_vm_block_size; |
82 | extern int amdgpu_vm_fault_stop; | 82 | extern int amdgpu_vm_fault_stop; |
83 | extern int amdgpu_vm_debug; | ||
83 | extern int amdgpu_enable_scheduler; | 84 | extern int amdgpu_enable_scheduler; |
84 | extern int amdgpu_sched_jobs; | 85 | extern int amdgpu_sched_jobs; |
85 | extern int amdgpu_sched_hw_submission; | 86 | extern int amdgpu_sched_hw_submission; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 29fc45ce64dd..25012c790f8f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
@@ -567,9 +567,24 @@ static int amdgpu_bo_vm_update_pte(struct amdgpu_cs_parser *p, | |||
567 | if (r) | 567 | if (r) |
568 | return r; | 568 | return r; |
569 | } | 569 | } |
570 | |||
571 | } | ||
572 | |||
573 | r = amdgpu_vm_clear_invalids(adev, vm, &p->ibs[0].sync); | ||
574 | |||
575 | if (amdgpu_vm_debug && p->bo_list) { | ||
576 | /* Invalidate all BOs to test for userspace bugs */ | ||
577 | for (i = 0; i < p->bo_list->num_entries; i++) { | ||
578 | /* ignore duplicates */ | ||
579 | bo = p->bo_list->array[i].robj; | ||
580 | if (!bo) | ||
581 | continue; | ||
582 | |||
583 | amdgpu_vm_bo_invalidate(adev, bo); | ||
584 | } | ||
570 | } | 585 | } |
571 | 586 | ||
572 | return amdgpu_vm_clear_invalids(adev, vm, &p->ibs[0].sync); | 587 | return r; |
573 | } | 588 | } |
574 | 589 | ||
575 | static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev, | 590 | static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev, |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index bec091632194..6134b1ece17f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | |||
@@ -76,6 +76,7 @@ int amdgpu_deep_color = 0; | |||
76 | int amdgpu_vm_size = 8; | 76 | int amdgpu_vm_size = 8; |
77 | int amdgpu_vm_block_size = -1; | 77 | int amdgpu_vm_block_size = -1; |
78 | int amdgpu_vm_fault_stop = 0; | 78 | int amdgpu_vm_fault_stop = 0; |
79 | int amdgpu_vm_debug = 0; | ||
79 | int amdgpu_exp_hw_support = 0; | 80 | int amdgpu_exp_hw_support = 0; |
80 | int amdgpu_enable_scheduler = 1; | 81 | int amdgpu_enable_scheduler = 1; |
81 | int amdgpu_sched_jobs = 16; | 82 | int amdgpu_sched_jobs = 16; |
@@ -145,6 +146,9 @@ module_param_named(vm_block_size, amdgpu_vm_block_size, int, 0444); | |||
145 | MODULE_PARM_DESC(vm_fault_stop, "Stop on VM fault (0 = never (default), 1 = print first, 2 = always)"); | 146 | MODULE_PARM_DESC(vm_fault_stop, "Stop on VM fault (0 = never (default), 1 = print first, 2 = always)"); |
146 | module_param_named(vm_fault_stop, amdgpu_vm_fault_stop, int, 0444); | 147 | module_param_named(vm_fault_stop, amdgpu_vm_fault_stop, int, 0444); |
147 | 148 | ||
149 | MODULE_PARM_DESC(vm_debug, "Debug VM handling (0 = disabled (default), 1 = enabled)"); | ||
150 | module_param_named(vm_debug, amdgpu_vm_debug, int, 0644); | ||
151 | |||
148 | MODULE_PARM_DESC(exp_hw_support, "experimental hw support (1 = enable, 0 = disable (default))"); | 152 | MODULE_PARM_DESC(exp_hw_support, "experimental hw support (1 = enable, 0 = disable (default))"); |
149 | module_param_named(exp_hw_support, amdgpu_exp_hw_support, int, 0444); | 153 | module_param_named(exp_hw_support, amdgpu_exp_hw_support, int, 0444); |
150 | 154 | ||