diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4095-drm-amdgpu-job-is-secure-iff-CS-is-secure-v5.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4095-drm-amdgpu-job-is-secure-iff-CS-is-secure-v5.patch | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4095-drm-amdgpu-job-is-secure-iff-CS-is-secure-v5.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4095-drm-amdgpu-job-is-secure-iff-CS-is-secure-v5.patch new file mode 100644 index 00000000..18f4afe9 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4095-drm-amdgpu-job-is-secure-iff-CS-is-secure-v5.patch @@ -0,0 +1,78 @@ +From b6f6113276322a90cd327af91f0afe784fd93f3a Mon Sep 17 00:00:00 2001 +From: Huang Rui <ray.huang@amd.com> +Date: Thu, 8 Aug 2019 20:05:15 +0800 +Subject: [PATCH 4095/4256] drm/amdgpu: job is secure iff CS is secure (v5) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Mark a job as secure, if and only if the command +submission flag has the secure flag set. + +v2: fix the null job pointer while in vmid 0 +submission. +v3: Context --> Command submission. +v4: filling cs parser with cs->in.flags +v5: move the job secure flag setting out of amdgpu_cs_submit() + +Signed-off-by: Huang Rui <ray.huang@amd.com> +Signed-off-by: Luben Tuikov <luben.tuikov@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 ++ + drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 4 ++-- + drivers/gpu/drm/amd/amdgpu/amdgpu_job.h | 2 ++ + 3 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +index 34b793b980a1..ba43f3f6467b 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +@@ -230,6 +230,8 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs + if (ret) + goto free_all_kdata; + ++ p->job->secure = cs->in.flags & AMDGPU_CS_FLAGS_SECURE; ++ + if (p->ctx->vram_lost_counter != p->job->vram_lost_counter) { + ret = -ECANCELED; + goto free_all_kdata; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +index d75dc14be086..d121bbdf0ca7 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +@@ -219,7 +219,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs, + if (job && ring->funcs->emit_cntxcntl) { + status |= job->preamble_status; + status |= job->preemption_status; +- amdgpu_ring_emit_cntxcntl(ring, status, false); ++ amdgpu_ring_emit_cntxcntl(ring, status, job->secure); + } + + for (i = 0; i < num_ibs; ++i) { +@@ -238,7 +238,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs, + } + + if (ring->funcs->emit_tmz) +- amdgpu_ring_emit_tmz(ring, false, false); ++ amdgpu_ring_emit_tmz(ring, false, job ? job->secure : false); + + #ifdef CONFIG_X86_64 + if (!(adev->flags & AMD_IS_APU)) +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h +index dc7ee9358dcd..aa0e375062f2 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h +@@ -63,6 +63,8 @@ struct amdgpu_job { + uint64_t uf_addr; + uint64_t uf_sequence; + ++ /* the job is due to a secure command submission */ ++ bool secure; + }; + + int amdgpu_job_alloc(struct amdgpu_device *adev, unsigned num_ibs, +-- +2.17.1 + |