aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_job.c11
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 412fc2f39fa5..9bf72b24495c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -2401,5 +2401,4 @@ amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,
2401 uint64_t addr, struct amdgpu_bo **bo); 2401 uint64_t addr, struct amdgpu_bo **bo);
2402 2402
2403#include "amdgpu_object.h" 2403#include "amdgpu_object.h"
2404
2405#endif 2404#endif
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index eb0f7890401a..23468088a995 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -28,6 +28,12 @@
28#include "amdgpu.h" 28#include "amdgpu.h"
29#include "amdgpu_trace.h" 29#include "amdgpu_trace.h"
30 30
31static void amdgpu_job_free_handler(struct work_struct *ws)
32{
33 struct amdgpu_job *job = container_of(ws, struct amdgpu_job, base.work_free_job);
34 kfree(job);
35}
36
31int amdgpu_job_alloc(struct amdgpu_device *adev, unsigned num_ibs, 37int amdgpu_job_alloc(struct amdgpu_device *adev, unsigned num_ibs,
32 struct amdgpu_job **job) 38 struct amdgpu_job **job)
33{ 39{
@@ -45,6 +51,7 @@ int amdgpu_job_alloc(struct amdgpu_device *adev, unsigned num_ibs,
45 (*job)->adev = adev; 51 (*job)->adev = adev;
46 (*job)->ibs = (void *)&(*job)[1]; 52 (*job)->ibs = (void *)&(*job)[1];
47 (*job)->num_ibs = num_ibs; 53 (*job)->num_ibs = num_ibs;
54 INIT_WORK(&(*job)->base.work_free_job, amdgpu_job_free_handler);
48 55
49 amdgpu_sync_create(&(*job)->sync); 56 amdgpu_sync_create(&(*job)->sync);
50 57
@@ -80,7 +87,9 @@ void amdgpu_job_free(struct amdgpu_job *job)
80 87
81 amdgpu_bo_unref(&job->uf.bo); 88 amdgpu_bo_unref(&job->uf.bo);
82 amdgpu_sync_free(&job->sync); 89 amdgpu_sync_free(&job->sync);
83 kfree(job); 90
91 if (!job->base.use_sched)
92 kfree(job);
84} 93}
85 94
86int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring, 95int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring,