diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2879-drm-amdkfd-Consistently-apply-noretry-setting.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2879-drm-amdkfd-Consistently-apply-noretry-setting.patch | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2879-drm-amdkfd-Consistently-apply-noretry-setting.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2879-drm-amdkfd-Consistently-apply-noretry-setting.patch new file mode 100644 index 00000000..cfc9d4c6 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2879-drm-amdkfd-Consistently-apply-noretry-setting.patch @@ -0,0 +1,185 @@ +From a0853dc3f637b57b0588c82387e4eb6de3f3181e Mon Sep 17 00:00:00 2001 +From: Felix Kuehling <Felix.Kuehling@amd.com> +Date: Fri, 21 Jun 2019 19:50:03 -0400 +Subject: [PATCH 2879/2940] drm/amdkfd: Consistently apply noretry setting + +Apply the same setting to SH_MEM_CONFIG and VM_CONTEXT1_CNTL. This +makes the noretry param no longer KFD-specific. On GFX10 I'm not +changing SH_MEM_CONFIG in this commit because GFX10 has different +retry behaviour in the SQ and I don't have a way to test it at the +moment. + +Change-Id: I4282f6f1963ebcee7cc2a89909d720d91d0e28fd +Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> +Reviewed-by: Shaoyun.liu <Shaoyun.Liu@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 16 +++++----------- + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 4 ++-- + drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | 3 ++- + drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.c | 3 ++- + drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c | 3 ++- + drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c | 3 ++- + .../drm/amd/amdkfd/kfd_device_queue_manager_v9.c | 2 +- + drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 2 +- + 9 files changed, 18 insertions(+), 19 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index 11287a5ffc88..6668e8ae4685 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -168,6 +168,7 @@ extern int amdgpu_async_gfx_ring; + extern int amdgpu_mcbp; + extern int amdgpu_discovery; + extern int amdgpu_mes; ++extern int amdgpu_noretry; + + #ifdef CONFIG_DRM_AMDGPU_SI + extern int amdgpu_si_support; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +index 459342449a3b..6c30b7f4dfe8 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +@@ -145,6 +145,7 @@ int amdgpu_async_gfx_ring = 1; + int amdgpu_mcbp = 0; + int amdgpu_discovery = -1; + int amdgpu_mes = 0; ++int amdgpu_noretry; + + struct amdgpu_mgpu_info mgpu_info = { + .mutex = __MUTEX_INITIALIZER(mgpu_info.mutex), +@@ -620,6 +621,10 @@ MODULE_PARM_DESC(mes, + "Enable Micro Engine Scheduler (0 = disabled (default), 1 = enabled)"); + module_param_named(mes, amdgpu_mes, int, 0444); + ++MODULE_PARM_DESC(noretry, ++ "Disable retry faults (0 = retry enabled (default), 1 = retry disabled)"); ++module_param_named(noretry, amdgpu_noretry, int, 0644); ++ + #ifdef CONFIG_HSA_AMD + /** + * DOC: sched_policy (int) +@@ -695,17 +700,6 @@ module_param(ignore_crat, int, 0444); + MODULE_PARM_DESC(ignore_crat, + "Ignore CRAT table during KFD initialization (0 = use CRAT (default), 1 = ignore CRAT)"); + +-/** +- * DOC: noretry (int) +- * This parameter sets sh_mem_config.retry_disable. Default value, 1, disable retry. +- * Setting 0 enables retry. +- * Retry is needed for recoverable page faults. +- */ +-int noretry = 1; +-module_param(noretry, int, 0644); +-MODULE_PARM_DESC(noretry, +- "Set sh_mem_config.retry_disable on Vega10 (1 = retry disabled (default), 0 = retry enabled)"); +- + /** + * DOC: halt_if_hws_hang (int) + * Halt if HWS hang is detected. Default value, 0, disables the halt on hang. +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +index e6fc6286498c..06dcf8a7d3b2 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +@@ -1939,14 +1939,14 @@ static void gfx_v9_0_constants_init(struct amdgpu_device *adev) + tmp = REG_SET_FIELD(0, SH_MEM_CONFIG, ALIGNMENT_MODE, + SH_MEM_ALIGNMENT_MODE_UNALIGNED); + tmp = REG_SET_FIELD(tmp, SH_MEM_CONFIG, RETRY_DISABLE, +- 1); ++ !!amdgpu_noretry); + WREG32_SOC15_RLC(GC, 0, mmSH_MEM_CONFIG, tmp); + WREG32_SOC15_RLC(GC, 0, mmSH_MEM_BASES, 0); + } else { + tmp = REG_SET_FIELD(0, SH_MEM_CONFIG, ALIGNMENT_MODE, + SH_MEM_ALIGNMENT_MODE_UNALIGNED); + tmp = REG_SET_FIELD(tmp, SH_MEM_CONFIG, RETRY_DISABLE, +- 1); ++ !!amdgpu_noretry); + WREG32_SOC15_RLC(GC, 0, mmSH_MEM_CONFIG, tmp); + tmp = REG_SET_FIELD(0, SH_MEM_BASES, PRIVATE_BASE, + (adev->gmc.private_aperture_start >> 48)); +diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c +index 9ffda0b3573e..5466b0c3d2f6 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c +@@ -236,7 +236,8 @@ static void gfxhub_v1_0_setup_vmid_config(struct amdgpu_device *adev) + block_size); + /* Send no-retry XNACK on fault to suppress VM fault storm. */ + tmp = REG_SET_FIELD(tmp, VM_CONTEXT1_CNTL, +- RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0); ++ RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, ++ !amdgpu_noretry); + WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_CNTL, i, tmp); + WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32, i*2, 0); + WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32, i*2, 0); +diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.c +index b7de60a15623..d605b4963f8a 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.c +@@ -215,7 +215,8 @@ static void gfxhub_v2_0_setup_vmid_config(struct amdgpu_device *adev) + adev->vm_manager.block_size - 9); + /* Send no-retry XNACK on fault to suppress VM fault storm. */ + tmp = REG_SET_FIELD(tmp, GCVM_CONTEXT1_CNTL, +- RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0); ++ RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, ++ !amdgpu_noretry); + WREG32_SOC15_OFFSET(GC, 0, mmGCVM_CONTEXT1_CNTL, i, tmp); + WREG32_SOC15_OFFSET(GC, 0, mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32, i*2, 0); + WREG32_SOC15_OFFSET(GC, 0, mmGCVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32, i*2, 0); +diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c +index 34bd6606ba94..59ea53900ca9 100644 +--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c +@@ -265,7 +265,8 @@ static void mmhub_v1_0_setup_vmid_config(struct amdgpu_device *adev) + block_size); + /* Send no-retry XNACK on fault to suppress VM fault storm. */ + tmp = REG_SET_FIELD(tmp, VM_CONTEXT1_CNTL, +- RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0); ++ RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, ++ !amdgpu_noretry); + WREG32_SOC15_OFFSET(MMHUB, 0, mmVM_CONTEXT1_CNTL, i, tmp); + WREG32_SOC15_OFFSET(MMHUB, 0, mmVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32, i*2, 0); + WREG32_SOC15_OFFSET(MMHUB, 0, mmVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32, i*2, 0); +diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c +index 1a20c3a0f5a3..a5c7ed1f37eb 100644 +--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c +@@ -205,7 +205,8 @@ static void mmhub_v2_0_setup_vmid_config(struct amdgpu_device *adev) + adev->vm_manager.block_size - 9); + /* Send no-retry XNACK on fault to suppress VM fault storm. */ + tmp = REG_SET_FIELD(tmp, MMVM_CONTEXT1_CNTL, +- RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0); ++ RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, ++ !amdgpu_noretry); + WREG32_SOC15_OFFSET(MMHUB, 0, mmMMVM_CONTEXT1_CNTL, i, tmp); + WREG32_SOC15_OFFSET(MMHUB, 0, mmMMVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32, i*2, 0); + WREG32_SOC15_OFFSET(MMHUB, 0, mmMMVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32, i*2, 0); +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_v9.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_v9.c +index e9fe39382371..95a82ac455f2 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_v9.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_v9.c +@@ -61,7 +61,7 @@ static int update_qpd_v9(struct device_queue_manager *dqm, + qpd->sh_mem_config = + SH_MEM_ALIGNMENT_MODE_UNALIGNED << + SH_MEM_CONFIG__ALIGNMENT_MODE__SHIFT; +- if (noretry && ++ if (amdgpu_noretry && + !dqm->dev->device_info->needs_iommu_device) + qpd->sh_mem_config |= + 1 << SH_MEM_CONFIG__RETRY_DISABLE__SHIFT; +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +index b227f3b2ba9c..a8fe46c22c7d 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +@@ -162,7 +162,7 @@ extern int ignore_crat; + /* + * Set sh_mem_config.retry_disable on Vega10 + */ +-extern int noretry; ++extern int amdgpu_noretry; + + /* + * Enable privileged mode for all CP queues including user queues +-- +2.17.1 + |