aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2962-drm-amdgpu-Simplify-amdgpu_lockup_timeout-usage.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2962-drm-amdgpu-Simplify-amdgpu_lockup_timeout-usage.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2962-drm-amdgpu-Simplify-amdgpu_lockup_timeout-usage.patch136
1 files changed, 136 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2962-drm-amdgpu-Simplify-amdgpu_lockup_timeout-usage.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2962-drm-amdgpu-Simplify-amdgpu_lockup_timeout-usage.patch
new file mode 100644
index 00000000..16871423
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2962-drm-amdgpu-Simplify-amdgpu_lockup_timeout-usage.patch
@@ -0,0 +1,136 @@
+From 76c57d031de438fdd2cee99259169b000fe19413 Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Date: Wed, 13 Dec 2017 14:36:53 -0500
+Subject: [PATCH 2962/4131] drm/amdgpu: Simplify amdgpu_lockup_timeout usage.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+With introduction of amdgpu_gpu_recovery we don't need any more
+to rely on amdgpu_lockup_timeout == 0 for disabling GPU reset.
+
+Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+
+ Conflicts:
+ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+
+Change-Id: I432608e82e48efd896429b75dd452643fa1693c3
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 ++++++-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 ++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 14 +-------------
+ drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | 2 +-
+ drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c | 2 +-
+ 5 files changed, 11 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+index 285aa9f..395fed1 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+@@ -1258,6 +1258,11 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev)
+ }
+ /* Max DGMA size is 96M Bytes */
+ amdgpu_direct_gma_size = min(amdgpu_direct_gma_size, 96);
++
++ if (amdgpu_lockup_timeout == 0) {
++ dev_warn(adev->dev, "lockup_timeout msut be > 0, adjusting to 10000\n");
++ amdgpu_lockup_timeout = 10000;
++ }
+ }
+
+ /**
+@@ -2857,7 +2862,7 @@ bool amdgpu_need_backup(struct amdgpu_device *adev)
+ if (adev->flags & AMD_IS_APU)
+ return false;
+
+- return amdgpu_lockup_timeout > 0 ? true : false;
++ return amdgpu_gpu_recovery;
+ }
+
+ static int amdgpu_recover_vram_from_shadow(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 710e33e..c4ec022 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+@@ -90,7 +90,7 @@ int amdgpu_disp_priority = 0;
+ int amdgpu_hw_i2c = 0;
+ int amdgpu_pcie_gen2 = -1;
+ int amdgpu_msi = -1;
+-int amdgpu_lockup_timeout = 0;
++int amdgpu_lockup_timeout = 10000;
+ int amdgpu_dpm = -1;
+ int amdgpu_fw_load_type = -1;
+ int amdgpu_aspm = -1;
+@@ -167,7 +167,7 @@ module_param_named(pcie_gen2, amdgpu_pcie_gen2, int, 0444);
+ MODULE_PARM_DESC(msi, "MSI support (1 = enable, 0 = disable, -1 = auto)");
+ module_param_named(msi, amdgpu_msi, int, 0444);
+
+-MODULE_PARM_DESC(lockup_timeout, "GPU lockup timeout in ms (default 0 = disable)");
++MODULE_PARM_DESC(lockup_timeout, "GPU lockup timeout in ms > 0 (default 10000)");
+ module_param_named(lockup_timeout, amdgpu_lockup_timeout, int, 0444);
+
+ MODULE_PARM_DESC(dpm, "DPM support (1 = enable, 0 = disable, -1 = auto)");
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+index 8e5d055..6cf1a2e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+@@ -409,7 +409,6 @@ int amdgpu_fence_driver_start_ring(struct amdgpu_ring *ring,
+ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
+ unsigned num_hw_submission)
+ {
+- long timeout;
+ int r;
+
+ /* Check that num_hw_submission is a power of two */
+@@ -434,20 +433,9 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
+
+ /* No need to setup the GPU scheduler for KIQ ring */
+ if (ring->funcs->type != AMDGPU_RING_TYPE_KIQ) {
+- timeout = msecs_to_jiffies(amdgpu_lockup_timeout);
+- if (timeout == 0) {
+- /*
+- * FIXME:
+- * Delayed workqueue cannot use it directly,
+- * so the scheduler will not use delayed workqueue if
+- * MAX_SCHEDULE_TIMEOUT is set.
+- * Currently keep it simple and silly.
+- */
+- timeout = MAX_SCHEDULE_TIMEOUT;
+- }
+ r = drm_sched_init(&ring->sched, &amdgpu_sched_ops,
+ num_hw_submission, amdgpu_job_hang_limit,
+- timeout, ring->name);
++ msecs_to_jiffies(amdgpu_lockup_timeout), ring->name);
+ if (r) {
+ DRM_ERROR("Failed to create scheduler on ring %s.\n",
+ ring->name);
+diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
+index 7ade56d..43e74ec 100644
+--- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
++++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
+@@ -277,7 +277,7 @@ static int xgpu_ai_mailbox_rcv_irq(struct amdgpu_device *adev,
+ int r;
+
+ /* trigger gpu-reset by hypervisor only if TDR disbaled */
+- if (amdgpu_lockup_timeout == 0) {
++ if (!amdgpu_gpu_recovery) {
+ /* see what event we get */
+ r = xgpu_ai_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION);
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
+index e05823d..da7c261 100644
+--- a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
++++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c
+@@ -545,7 +545,7 @@ static int xgpu_vi_mailbox_rcv_irq(struct amdgpu_device *adev,
+ int r;
+
+ /* trigger gpu-reset by hypervisor only if TDR disbaled */
+- if (amdgpu_lockup_timeout == 0) {
++ if (!amdgpu_gpu_recovery) {
+ /* see what event we get */
+ r = xgpu_vi_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION);
+
+--
+2.7.4
+