|
Patrik Jakobsson |
3dac01 |
From c8365dbda056578eebe164bf110816b1a39b4b7f Mon Sep 17 00:00:00 2001
|
|
Patrik Jakobsson |
3dac01 |
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
|
|
Patrik Jakobsson |
3dac01 |
Date: Thu, 30 Sep 2021 11:22:51 +0200
|
|
Patrik Jakobsson |
3dac01 |
Subject: drm/amdgpu: revert "Add autodump debugfs node for gpu reset v8"
|
|
Patrik Jakobsson |
3dac01 |
MIME-Version: 1.0
|
|
Patrik Jakobsson |
3dac01 |
Content-Type: text/plain; charset=UTF-8
|
|
Patrik Jakobsson |
3dac01 |
Content-Transfer-Encoding: 8bit
|
|
Patrik Jakobsson |
3dac01 |
Git-commit: c8365dbda056578eebe164bf110816b1a39b4b7f
|
|
Patrik Jakobsson |
3dac01 |
Patch-mainline: v5.16-rc1
|
|
Patrik Jakobsson |
3dac01 |
References: git-fixes
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
This reverts commit 728e7e0cd61899208e924472b9e641dbeb0775c4.
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
Further discussion reveals that this feature is severely broken
|
|
Patrik Jakobsson |
3dac01 |
and needs to be reverted ASAP.
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
GPU reset can never be delayed by userspace even for debugging or
|
|
Patrik Jakobsson |
3dac01 |
otherwise we can run into in kernel deadlocks.
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
Signed-off-by: Christian König <christian.koenig@amd.com>
|
|
Patrik Jakobsson |
3dac01 |
Acked-by: Alex Deucher <alexander.deucher@amd.com>
|
|
Patrik Jakobsson |
3dac01 |
Acked-by: Nirmoy Das <nirmoy.das@amd.com>
|
|
Patrik Jakobsson |
3dac01 |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
|
Patrik Jakobsson |
3dac01 |
Signed-off-by: Patrik Jakobsson <pjakobsson@suse.de>
|
|
Patrik Jakobsson |
3dac01 |
---
|
|
Patrik Jakobsson |
3dac01 |
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2
|
|
Patrik Jakobsson |
3dac01 |
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 76 ----------------------------
|
|
Patrik Jakobsson |
3dac01 |
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h | 6 --
|
|
Patrik Jakobsson |
3dac01 |
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2
|
|
Patrik Jakobsson |
3dac01 |
4 files changed, 86 deletions(-)
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
|
|
Patrik Jakobsson |
3dac01 |
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
|
|
Patrik Jakobsson |
3dac01 |
@@ -992,8 +992,6 @@ struct amdgpu_device {
|
|
Patrik Jakobsson |
3dac01 |
char product_name[32];
|
|
Patrik Jakobsson |
3dac01 |
char serial[20];
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
- struct amdgpu_autodump autodump;
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
atomic_t throttling_logging_enabled;
|
|
Patrik Jakobsson |
3dac01 |
struct ratelimit_state throttling_logging_rs;
|
|
Patrik Jakobsson |
3dac01 |
};
|
|
Patrik Jakobsson |
3dac01 |
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
|
|
Patrik Jakobsson |
3dac01 |
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
|
|
Patrik Jakobsson |
3dac01 |
@@ -74,82 +74,8 @@ int amdgpu_debugfs_add_files(struct amdg
|
|
Patrik Jakobsson |
3dac01 |
return 0;
|
|
Patrik Jakobsson |
3dac01 |
}
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
-int amdgpu_debugfs_wait_dump(struct amdgpu_device *adev)
|
|
Patrik Jakobsson |
3dac01 |
-{
|
|
Patrik Jakobsson |
3dac01 |
-#if defined(CONFIG_DEBUG_FS)
|
|
Patrik Jakobsson |
3dac01 |
- unsigned long timeout = 600 * HZ;
|
|
Patrik Jakobsson |
3dac01 |
- int ret;
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- wake_up_interruptible(&adev->autodump.gpu_hang);
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- ret = wait_for_completion_interruptible_timeout(&adev->autodump.dumping, timeout);
|
|
Patrik Jakobsson |
3dac01 |
- if (ret == 0) {
|
|
Patrik Jakobsson |
3dac01 |
- pr_err("autodump: timeout, move on to gpu recovery\n");
|
|
Patrik Jakobsson |
3dac01 |
- return -ETIMEDOUT;
|
|
Patrik Jakobsson |
3dac01 |
- }
|
|
Patrik Jakobsson |
3dac01 |
-#endif
|
|
Patrik Jakobsson |
3dac01 |
- return 0;
|
|
Patrik Jakobsson |
3dac01 |
-}
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
#if defined(CONFIG_DEBUG_FS)
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
-static int amdgpu_debugfs_autodump_open(struct inode *inode, struct file *file)
|
|
Patrik Jakobsson |
3dac01 |
-{
|
|
Patrik Jakobsson |
3dac01 |
- struct amdgpu_device *adev = inode->i_private;
|
|
Patrik Jakobsson |
3dac01 |
- int ret;
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- file->private_data = adev;
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- mutex_lock(&adev->lock_reset);
|
|
Patrik Jakobsson |
3dac01 |
- if (adev->autodump.dumping.done) {
|
|
Patrik Jakobsson |
3dac01 |
- reinit_completion(&adev->autodump.dumping);
|
|
Patrik Jakobsson |
3dac01 |
- ret = 0;
|
|
Patrik Jakobsson |
3dac01 |
- } else {
|
|
Patrik Jakobsson |
3dac01 |
- ret = -EBUSY;
|
|
Patrik Jakobsson |
3dac01 |
- }
|
|
Patrik Jakobsson |
3dac01 |
- mutex_unlock(&adev->lock_reset);
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- return ret;
|
|
Patrik Jakobsson |
3dac01 |
-}
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
-static int amdgpu_debugfs_autodump_release(struct inode *inode, struct file *file)
|
|
Patrik Jakobsson |
3dac01 |
-{
|
|
Patrik Jakobsson |
3dac01 |
- struct amdgpu_device *adev = file->private_data;
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- complete_all(&adev->autodump.dumping);
|
|
Patrik Jakobsson |
3dac01 |
- return 0;
|
|
Patrik Jakobsson |
3dac01 |
-}
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
-static unsigned int amdgpu_debugfs_autodump_poll(struct file *file, struct poll_table_struct *poll_table)
|
|
Patrik Jakobsson |
3dac01 |
-{
|
|
Patrik Jakobsson |
3dac01 |
- struct amdgpu_device *adev = file->private_data;
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- poll_wait(file, &adev->autodump.gpu_hang, poll_table);
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- if (adev->in_gpu_reset)
|
|
Patrik Jakobsson |
3dac01 |
- return POLLIN | POLLRDNORM | POLLWRNORM;
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- return 0;
|
|
Patrik Jakobsson |
3dac01 |
-}
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
-static const struct file_operations autodump_debug_fops = {
|
|
Patrik Jakobsson |
3dac01 |
- .owner = THIS_MODULE,
|
|
Patrik Jakobsson |
3dac01 |
- .open = amdgpu_debugfs_autodump_open,
|
|
Patrik Jakobsson |
3dac01 |
- .poll = amdgpu_debugfs_autodump_poll,
|
|
Patrik Jakobsson |
3dac01 |
- .release = amdgpu_debugfs_autodump_release,
|
|
Patrik Jakobsson |
3dac01 |
-};
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
-static void amdgpu_debugfs_autodump_init(struct amdgpu_device *adev)
|
|
Patrik Jakobsson |
3dac01 |
-{
|
|
Patrik Jakobsson |
3dac01 |
- init_completion(&adev->autodump.dumping);
|
|
Patrik Jakobsson |
3dac01 |
- complete_all(&adev->autodump.dumping);
|
|
Patrik Jakobsson |
3dac01 |
- init_waitqueue_head(&adev->autodump.gpu_hang);
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
- debugfs_create_file("amdgpu_autodump", 0600,
|
|
Patrik Jakobsson |
3dac01 |
- adev->ddev->primary->debugfs_root,
|
|
Patrik Jakobsson |
3dac01 |
- adev, &autodump_debug_fops);
|
|
Patrik Jakobsson |
3dac01 |
-}
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
/**
|
|
Patrik Jakobsson |
3dac01 |
* amdgpu_debugfs_process_reg_op - Handle MMIO register reads/writes
|
|
Patrik Jakobsson |
3dac01 |
*
|
|
Patrik Jakobsson |
3dac01 |
@@ -1621,8 +1547,6 @@ int amdgpu_debugfs_init(struct amdgpu_de
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
amdgpu_ras_debugfs_create_all(adev);
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
- amdgpu_debugfs_autodump_init(adev);
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_list,
|
|
Patrik Jakobsson |
3dac01 |
ARRAY_SIZE(amdgpu_debugfs_list));
|
|
Patrik Jakobsson |
3dac01 |
}
|
|
Patrik Jakobsson |
3dac01 |
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h
|
|
Patrik Jakobsson |
3dac01 |
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h
|
|
Patrik Jakobsson |
3dac01 |
@@ -31,11 +31,6 @@ struct amdgpu_debugfs {
|
|
Patrik Jakobsson |
3dac01 |
unsigned num_files;
|
|
Patrik Jakobsson |
3dac01 |
};
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
-struct amdgpu_autodump {
|
|
Patrik Jakobsson |
3dac01 |
- struct completion dumping;
|
|
Patrik Jakobsson |
3dac01 |
- struct wait_queue_head gpu_hang;
|
|
Patrik Jakobsson |
3dac01 |
-};
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
int amdgpu_debugfs_regs_init(struct amdgpu_device *adev);
|
|
Patrik Jakobsson |
3dac01 |
int amdgpu_debugfs_init(struct amdgpu_device *adev);
|
|
Patrik Jakobsson |
3dac01 |
void amdgpu_debugfs_fini(struct amdgpu_device *adev);
|
|
Patrik Jakobsson |
3dac01 |
@@ -45,4 +40,3 @@ int amdgpu_debugfs_add_files(struct amdg
|
|
Patrik Jakobsson |
3dac01 |
int amdgpu_debugfs_fence_init(struct amdgpu_device *adev);
|
|
Patrik Jakobsson |
3dac01 |
int amdgpu_debugfs_firmware_init(struct amdgpu_device *adev);
|
|
Patrik Jakobsson |
3dac01 |
int amdgpu_debugfs_gem_init(struct amdgpu_device *adev);
|
|
Patrik Jakobsson |
3dac01 |
-int amdgpu_debugfs_wait_dump(struct amdgpu_device *adev);
|
|
Patrik Jakobsson |
3dac01 |
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
|
|
Patrik Jakobsson |
3dac01 |
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
|
|
Patrik Jakobsson |
3dac01 |
@@ -3963,8 +3963,6 @@ static int amdgpu_device_pre_asic_reset(
|
|
Patrik Jakobsson |
3dac01 |
int i, r = 0;
|
|
Patrik Jakobsson |
3dac01 |
bool need_full_reset = *need_full_reset_arg;
|
|
Patrik Jakobsson |
3dac01 |
|
|
Patrik Jakobsson |
3dac01 |
- amdgpu_debugfs_wait_dump(adev);
|
|
Patrik Jakobsson |
3dac01 |
-
|
|
Patrik Jakobsson |
3dac01 |
/* block all schedulers and reset given job's ring */
|
|
Patrik Jakobsson |
3dac01 |
for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
|
|
Patrik Jakobsson |
3dac01 |
struct amdgpu_ring *ring = adev->rings[i];
|