diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2209-drm-amdgpu-free-CSA-in-unified-place.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2209-drm-amdgpu-free-CSA-in-unified-place.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2209-drm-amdgpu-free-CSA-in-unified-place.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2209-drm-amdgpu-free-CSA-in-unified-place.patch new file mode 100644 index 00000000..4904c3f5 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2209-drm-amdgpu-free-CSA-in-unified-place.patch @@ -0,0 +1,89 @@ +From f857da73a227adc4d1abcadaee1bd656850d5064 Mon Sep 17 00:00:00 2001 +From: Monk Liu <Monk.Liu@amd.com> +Date: Tue, 14 Nov 2017 16:52:14 +0800 +Subject: [PATCH 2209/4131] drm/amdgpu:free CSA in unified place +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +instead of doing it in each GFX ip's sw_fini + +Change-Id: Idf0fd500d4fc385cf7a930cc56305070c937bf20 +Signed-off-by: Monk Liu <Monk.Liu@amd.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 6 ++++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 1 + + drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 1 - + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 1 - + 5 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index 9a6a6a2..806ca42 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -1865,6 +1865,7 @@ static int amdgpu_fini(struct amdgpu_device *adev) + if (!adev->ip_blocks[i].status.hw) + continue; + if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) { ++ amdgpu_free_static_csa(adev); + amdgpu_wb_fini(adev); + amdgpu_vram_scratch_fini(adev); + } +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +index 0769cb9..e7dfb7b 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +@@ -47,6 +47,12 @@ int amdgpu_allocate_static_csa(struct amdgpu_device *adev) + return 0; + } + ++void amdgpu_free_static_csa(struct amdgpu_device *adev) { ++ amdgpu_bo_free_kernel(&adev->virt.csa_obj, ++ &adev->virt.csa_vmid0_addr, ++ NULL); ++} ++ + /* + * amdgpu_map_static_csa should be called during amdgpu_vm_init + * it maps virtual address "AMDGPU_VA_RESERVED_SIZE - AMDGPU_CSA_SIZE" +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h +index f77d116..6a83425 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h +@@ -283,6 +283,7 @@ bool amdgpu_virt_mmio_blocked(struct amdgpu_device *adev); + int amdgpu_allocate_static_csa(struct amdgpu_device *adev); + int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm, + struct amdgpu_bo_va **bo_va); ++void amdgpu_free_static_csa(struct amdgpu_device *adev); + void amdgpu_virt_init_setting(struct amdgpu_device *adev); + uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg); + void amdgpu_virt_kiq_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v); +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +index 9791fab..720b0d7 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +@@ -2117,7 +2117,6 @@ static int gfx_v8_0_sw_fini(void *handle) + amdgpu_gfx_compute_mqd_sw_fini(adev); + amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq); + amdgpu_gfx_kiq_fini(adev); +- amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL); + + gfx_v8_0_mec_fini(adev); + gfx_v8_0_rlc_fini(adev); +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +index c1f90b8..35f4817 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +@@ -1464,7 +1464,6 @@ static int gfx_v9_0_sw_fini(void *handle) + amdgpu_gfx_compute_mqd_sw_fini(adev); + amdgpu_gfx_kiq_free_ring(&adev->gfx.kiq.ring, &adev->gfx.kiq.irq); + amdgpu_gfx_kiq_fini(adev); +- amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL); + + gfx_v9_0_mec_fini(adev); + gfx_v9_0_ngg_fini(adev); +-- +2.7.4 + |