* [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump @ 2022-05-26 9:48 Somalapuram Amaranath 2022-05-26 9:48 ` [PATCH v2 2/2] drm/amdgpu: adding device coredump support Somalapuram Amaranath 2022-05-26 9:54 ` [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump Sharma, Shashank 0 siblings, 2 replies; 9+ messages in thread From: Somalapuram Amaranath @ 2022-05-26 9:48 UTC (permalink / raw) To: amd-gfx Cc: alexander.deucher, Somalapuram Amaranath, christian.koenig, shashank.sharma Allocate memory for register value and use the same values for devcoredump. v1 -> V2: Change krealloc_array() to kmalloc_array() Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 7 +++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 76df583663c7..c79d9992b113 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -1042,6 +1042,7 @@ struct amdgpu_device { /* reset dump register */ uint32_t *reset_dump_reg_list; + uint32_t *reset_dump_reg_value; int num_regs; struct amdgpu_reset_domain *reset_domain; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c index eedb12f6b8a3..f3ac7912c29c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c @@ -1709,17 +1709,24 @@ static ssize_t amdgpu_reset_dump_register_list_write(struct file *f, i++; } while (len < size); + new = kmalloc_array(i, sizeof(uint32_t), GFP_KERNEL); + if (!new) { + ret = -ENOMEM; + goto error_free; + } ret = down_write_killable(&adev->reset_domain->sem); if (ret) goto error_free; swap(adev->reset_dump_reg_list, tmp); + swap(adev->reset_dump_reg_value, new); adev->num_regs = i; up_write(&adev->reset_domain->sem); ret = size; error_free: kfree(tmp); + kfree(new); return ret; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 4daa0e893965..866b4980a6fa 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -4720,15 +4720,15 @@ int amdgpu_device_pre_asic_reset(struct amdgpu_device *adev, static int amdgpu_reset_reg_dumps(struct amdgpu_device *adev) { - uint32_t reg_value; int i; lockdep_assert_held(&adev->reset_domain->sem); dump_stack(); for (i = 0; i < adev->num_regs; i++) { - reg_value = RREG32(adev->reset_dump_reg_list[i]); - trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], reg_value); + adev->reset_dump_reg_value[i] = RREG32(adev->reset_dump_reg_list[i]); + trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], + adev->reset_dump_reg_value[i]); } return 0; -- 2.32.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/2] drm/amdgpu: adding device coredump support 2022-05-26 9:48 [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump Somalapuram Amaranath @ 2022-05-26 9:48 ` Somalapuram Amaranath 2022-05-26 9:57 ` Sharma, Shashank 2022-05-26 10:26 ` Wang, Yang(Kevin) 2022-05-26 9:54 ` [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump Sharma, Shashank 1 sibling, 2 replies; 9+ messages in thread From: Somalapuram Amaranath @ 2022-05-26 9:48 UTC (permalink / raw) To: amd-gfx Cc: alexander.deucher, Somalapuram Amaranath, christian.koenig, shashank.sharma Added device coredump information: - Kernel version - Module - Time - VRAM status - Guilty process name and PID - GPU register dumps v1 -> v2: Variable name change v1 -> v2: NULL check v1 -> v2: Code alignment v1 -> v2: Adding dummy amdgpu_devcoredump_free v1 -> v2: memset reset_task_info to zero Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 67 ++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index c79d9992b113..25a7b2c74928 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -1044,6 +1044,9 @@ struct amdgpu_device { uint32_t *reset_dump_reg_list; uint32_t *reset_dump_reg_value; int num_regs; + struct amdgpu_task_info reset_task_info; + bool reset_vram_lost; + struct timespec64 reset_time; struct amdgpu_reset_domain *reset_domain; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 866b4980a6fa..ca97afe5be63 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -32,6 +32,8 @@ #include <linux/slab.h> #include <linux/iommu.h> #include <linux/pci.h> +#include <linux/devcoredump.h> +#include <generated/utsrelease.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_probe_helper.h> @@ -4734,6 +4736,62 @@ static int amdgpu_reset_reg_dumps(struct amdgpu_device *adev) return 0; } +#ifdef CONFIG_DEV_COREDUMP +static ssize_t amdgpu_devcoredump_read(char *buffer, loff_t offset, + size_t count, void *data, size_t datalen) +{ + struct drm_printer p; + struct amdgpu_device *adev = data; + struct drm_print_iterator iter; + int i; + + if (adev == NULL) + return 0; + + iter.data = buffer; + iter.offset = 0; + iter.start = offset; + iter.remain = count; + + p = drm_coredump_printer(&iter); + + drm_printf(&p, "**** AMDGPU Device Coredump ****\n"); + drm_printf(&p, "kernel: " UTS_RELEASE "\n"); + drm_printf(&p, "module: " KBUILD_MODNAME "\n"); + drm_printf(&p, "time: %lld.%09ld\n", adev->reset_time.tv_sec, adev->reset_time.tv_nsec); + if (adev->reset_task_info.pid) + drm_printf(&p, "process_name: %s PID: %d\n", + adev->reset_task_info.process_name, + adev->reset_task_info.pid); + + if (adev->reset_vram_lost) + drm_printf(&p, "VRAM is lost due to GPU reset!\n"); + if (adev->num_regs) { + drm_printf(&p, "AMDGPU register dumps:\nOffset: Value:\n"); + + for (i = 0; i < adev->num_regs; i++) + drm_printf(&p, "0x%08x: 0x%08x\n", + adev->reset_dump_reg_list[i], + adev->reset_dump_reg_value[i]); + } + + return count - iter.remain; +} + +static void amdgpu_devcoredump_free(void *data) +{ +} + +static void amdgpu_reset_capture_coredumpm(struct amdgpu_device *adev) +{ + struct drm_device *dev = adev_to_drm(adev); + + ktime_get_ts64(&adev->reset_time); + dev_coredumpm(dev->dev, THIS_MODULE, adev, 0, GFP_KERNEL, + amdgpu_devcoredump_read, amdgpu_devcoredump_free); +} +#endif + int amdgpu_do_asic_reset(struct list_head *device_list_handle, struct amdgpu_reset_context *reset_context) { @@ -4818,6 +4876,15 @@ int amdgpu_do_asic_reset(struct list_head *device_list_handle, goto out; vram_lost = amdgpu_device_check_vram_lost(tmp_adev); +#ifdef CONFIG_DEV_COREDUMP + tmp_adev->reset_vram_lost = vram_lost; + memset(&tmp_adev->reset_task_info, 0, + sizeof(tmp_adev->reset_task_info)); + if (reset_context->job && reset_context->job->vm) + tmp_adev->reset_task_info = + reset_context->job->vm->task_info; + amdgpu_reset_capture_coredumpm(tmp_adev); +#endif if (vram_lost) { DRM_INFO("VRAM is lost due to GPU reset!\n"); amdgpu_inc_vram_lost(tmp_adev); -- 2.32.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] drm/amdgpu: adding device coredump support 2022-05-26 9:48 ` [PATCH v2 2/2] drm/amdgpu: adding device coredump support Somalapuram Amaranath @ 2022-05-26 9:57 ` Sharma, Shashank 2022-05-26 10:26 ` Wang, Yang(Kevin) 1 sibling, 0 replies; 9+ messages in thread From: Sharma, Shashank @ 2022-05-26 9:57 UTC (permalink / raw) To: Somalapuram Amaranath, amd-gfx; +Cc: alexander.deucher, christian.koenig On 5/26/2022 11:48 AM, Somalapuram Amaranath wrote: > Added device coredump information: > - Kernel version > - Module > - Time > - VRAM status > - Guilty process name and PID > - GPU register dumps > v1 -> v2: Variable name change > v1 -> v2: NULL check > v1 -> v2: Code alignment > v1 -> v2: Adding dummy amdgpu_devcoredump_free > v1 -> v2: memset reset_task_info to zero > > Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 + > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 67 ++++++++++++++++++++++ > 2 files changed, 70 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index c79d9992b113..25a7b2c74928 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -1044,6 +1044,9 @@ struct amdgpu_device { > uint32_t *reset_dump_reg_list; > uint32_t *reset_dump_reg_value; > int num_regs; > + struct amdgpu_task_info reset_task_info; > + bool reset_vram_lost; > + struct timespec64 reset_time; > > struct amdgpu_reset_domain *reset_domain; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 866b4980a6fa..ca97afe5be63 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -32,6 +32,8 @@ > #include <linux/slab.h> > #include <linux/iommu.h> > #include <linux/pci.h> > +#include <linux/devcoredump.h> > +#include <generated/utsrelease.h> > > #include <drm/drm_atomic_helper.h> > #include <drm/drm_probe_helper.h> > @@ -4734,6 +4736,62 @@ static int amdgpu_reset_reg_dumps(struct amdgpu_device *adev) > return 0; > } > > +#ifdef CONFIG_DEV_COREDUMP > +static ssize_t amdgpu_devcoredump_read(char *buffer, loff_t offset, > + size_t count, void *data, size_t datalen) > +{ > + struct drm_printer p; > + struct amdgpu_device *adev = data; > + struct drm_print_iterator iter; > + int i; > + > + if (adev == NULL) > + return 0; > + > + iter.data = buffer; > + iter.offset = 0; > + iter.start = offset; > + iter.remain = count; > + > + p = drm_coredump_printer(&iter); > + > + drm_printf(&p, "**** AMDGPU Device Coredump ****\n"); > + drm_printf(&p, "kernel: " UTS_RELEASE "\n"); > + drm_printf(&p, "module: " KBUILD_MODNAME "\n"); > + drm_printf(&p, "time: %lld.%09ld\n", adev->reset_time.tv_sec, adev->reset_time.tv_nsec); > + if (adev->reset_task_info.pid) > + drm_printf(&p, "process_name: %s PID: %d\n", > + adev->reset_task_info.process_name, > + adev->reset_task_info.pid); > + > + if (adev->reset_vram_lost) > + drm_printf(&p, "VRAM is lost due to GPU reset!\n"); > + if (adev->num_regs) { > + drm_printf(&p, "AMDGPU register dumps:\nOffset: Value:\n"); > + > + for (i = 0; i < adev->num_regs; i++) > + drm_printf(&p, "0x%08x: 0x%08x\n", > + adev->reset_dump_reg_list[i], > + adev->reset_dump_reg_value[i]); > + } > + > + return count - iter.remain; > +} > + > +static void amdgpu_devcoredump_free(void *data) > +{ > +} > + > +static void amdgpu_reset_capture_coredumpm(struct amdgpu_device *adev) > +{ > + struct drm_device *dev = adev_to_drm(adev); > + > + ktime_get_ts64(&adev->reset_time); > + dev_coredumpm(dev->dev, THIS_MODULE, adev, 0, GFP_KERNEL, > + amdgpu_devcoredump_read, amdgpu_devcoredump_free); Alignment with line above. > +} > +#endif > + > int amdgpu_do_asic_reset(struct list_head *device_list_handle, > struct amdgpu_reset_context *reset_context) > { > @@ -4818,6 +4876,15 @@ int amdgpu_do_asic_reset(struct list_head *device_list_handle, > goto out; > > vram_lost = amdgpu_device_check_vram_lost(tmp_adev); > +#ifdef CONFIG_DEV_COREDUMP > + tmp_adev->reset_vram_lost = vram_lost; > + memset(&tmp_adev->reset_task_info, 0, > + sizeof(tmp_adev->reset_task_info)); Alignment with the line above. > + if (reset_context->job && reset_context->job->vm) > + tmp_adev->reset_task_info = > + reset_context->job->vm->task_info; > + amdgpu_reset_capture_coredumpm(tmp_adev); > +#endif > if (vram_lost) { > DRM_INFO("VRAM is lost due to GPU reset!\n"); > amdgpu_inc_vram_lost(tmp_adev); With above fixed, feel free to use: Reviewed-by: Shashank Sharma <shashank.sharma@amd.com> - Shashank ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] drm/amdgpu: adding device coredump support 2022-05-26 9:48 ` [PATCH v2 2/2] drm/amdgpu: adding device coredump support Somalapuram Amaranath 2022-05-26 9:57 ` Sharma, Shashank @ 2022-05-26 10:26 ` Wang, Yang(Kevin) 2022-05-31 13:14 ` Somalapuram, Amaranath 1 sibling, 1 reply; 9+ messages in thread From: Wang, Yang(Kevin) @ 2022-05-26 10:26 UTC (permalink / raw) To: Somalapuram, Amaranath, amd-gfx Cc: Deucher, Alexander, Koenig, Christian, Sharma, Shashank [-- Attachment #1: Type: text/plain, Size: 5874 bytes --] [AMD Official Use Only - General] ________________________________ From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> on behalf of Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> Sent: Thursday, May 26, 2022 5:48 PM To: amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org> Cc: Deucher, Alexander <Alexander.Deucher@amd.com>; Somalapuram, Amaranath <Amaranath.Somalapuram@amd.com>; Koenig, Christian <Christian.Koenig@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com> Subject: [PATCH v2 2/2] drm/amdgpu: adding device coredump support Added device coredump information: - Kernel version - Module - Time - VRAM status - Guilty process name and PID - GPU register dumps v1 -> v2: Variable name change v1 -> v2: NULL check v1 -> v2: Code alignment v1 -> v2: Adding dummy amdgpu_devcoredump_free v1 -> v2: memset reset_task_info to zero Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 67 ++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index c79d9992b113..25a7b2c74928 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -1044,6 +1044,9 @@ struct amdgpu_device { uint32_t *reset_dump_reg_list; uint32_t *reset_dump_reg_value; int num_regs; + struct amdgpu_task_info reset_task_info; + bool reset_vram_lost; + struct timespec64 reset_time; [kevin]: the CONFIG_DEV_COREDUMP check is needed for above variable to avoid compiler warning when coredump feautre is not enabled. struct amdgpu_reset_domain *reset_domain; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 866b4980a6fa..ca97afe5be63 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -32,6 +32,8 @@ #include <linux/slab.h> #include <linux/iommu.h> #include <linux/pci.h> +#include <linux/devcoredump.h> +#include <generated/utsrelease.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_probe_helper.h> @@ -4734,6 +4736,62 @@ static int amdgpu_reset_reg_dumps(struct amdgpu_device *adev) return 0; } +#ifdef CONFIG_DEV_COREDUMP +static ssize_t amdgpu_devcoredump_read(char *buffer, loff_t offset, + size_t count, void *data, size_t datalen) +{ + struct drm_printer p; + struct amdgpu_device *adev = data; + struct drm_print_iterator iter; + int i; + + if (adev == NULL) + return 0; [kevin]: this check is not needed, because this private data is passed by our driver as below: dev_coredumpm(dev->dev, THIS_MODULE, adev, 0, GFP_KERNEL, amdgpu_devcoredump_read, amdgpu_devcoredump_free); + + iter.data = buffer; + iter.offset = 0; + iter.start = offset; + iter.remain = count; + + p = drm_coredump_printer(&iter); + + drm_printf(&p, "**** AMDGPU Device Coredump ****\n"); + drm_printf(&p, "kernel: " UTS_RELEASE "\n"); + drm_printf(&p, "module: " KBUILD_MODNAME "\n"); + drm_printf(&p, "time: %lld.%09ld\n", adev->reset_time.tv_sec, adev->reset_time.tv_nsec); + if (adev->reset_task_info.pid) + drm_printf(&p, "process_name: %s PID: %d\n", + adev->reset_task_info.process_name, + adev->reset_task_info.pid); + + if (adev->reset_vram_lost) + drm_printf(&p, "VRAM is lost due to GPU reset!\n"); + if (adev->num_regs) { + drm_printf(&p, "AMDGPU register dumps:\nOffset: Value:\n"); + + for (i = 0; i < adev->num_regs; i++) + drm_printf(&p, "0x%08x: 0x%08x\n", + adev->reset_dump_reg_list[i], + adev->reset_dump_reg_value[i]); + } + + return count - iter.remain; +} + +static void amdgpu_devcoredump_free(void *data) +{ +} + +static void amdgpu_reset_capture_coredumpm(struct amdgpu_device *adev) +{ + struct drm_device *dev = adev_to_drm(adev); + + ktime_get_ts64(&adev->reset_time); + dev_coredumpm(dev->dev, THIS_MODULE, adev, 0, GFP_KERNEL, + amdgpu_devcoredump_read, amdgpu_devcoredump_free); +} +#endif + int amdgpu_do_asic_reset(struct list_head *device_list_handle, struct amdgpu_reset_context *reset_context) { @@ -4818,6 +4876,15 @@ int amdgpu_do_asic_reset(struct list_head *device_list_handle, goto out; vram_lost = amdgpu_device_check_vram_lost(tmp_adev); +#ifdef CONFIG_DEV_COREDUMP + tmp_adev->reset_vram_lost = vram_lost; + memset(&tmp_adev->reset_task_info, 0, + sizeof(tmp_adev->reset_task_info)); + if (reset_context->job && reset_context->job->vm) + tmp_adev->reset_task_info = + reset_context->job->vm->task_info; + amdgpu_reset_capture_coredumpm(tmp_adev); +#endif if (vram_lost) { DRM_INFO("VRAM is lost due to GPU reset!\n"); amdgpu_inc_vram_lost(tmp_adev); -- 2.32.0 [-- Attachment #2: Type: text/html, Size: 13768 bytes --] ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] drm/amdgpu: adding device coredump support 2022-05-26 10:26 ` Wang, Yang(Kevin) @ 2022-05-31 13:14 ` Somalapuram, Amaranath 0 siblings, 0 replies; 9+ messages in thread From: Somalapuram, Amaranath @ 2022-05-31 13:14 UTC (permalink / raw) To: Wang, Yang(Kevin), Somalapuram, Amaranath, amd-gfx Cc: Deucher, Alexander, Koenig, Christian, Sharma, Shashank [-- Attachment #1: Type: text/plain, Size: 6474 bytes --] On 5/26/2022 3:56 PM, Wang, Yang(Kevin) wrote: > > [AMD Official Use Only - General] > > > > > ------------------------------------------------------------------------ > *From:* amd-gfx <amd-gfx-bounces@lists.freedesktop.org> on behalf of > Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> > *Sent:* Thursday, May 26, 2022 5:48 PM > *To:* amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org> > *Cc:* Deucher, Alexander <Alexander.Deucher@amd.com>; Somalapuram, > Amaranath <Amaranath.Somalapuram@amd.com>; Koenig, Christian > <Christian.Koenig@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com> > *Subject:* [PATCH v2 2/2] drm/amdgpu: adding device coredump support > Added device coredump information: > - Kernel version > - Module > - Time > - VRAM status > - Guilty process name and PID > - GPU register dumps > v1 -> v2: Variable name change > v1 -> v2: NULL check > v1 -> v2: Code alignment > v1 -> v2: Adding dummy amdgpu_devcoredump_free > v1 -> v2: memset reset_task_info to zero > > Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 + > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 67 ++++++++++++++++++++++ > 2 files changed, 70 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index c79d9992b113..25a7b2c74928 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -1044,6 +1044,9 @@ struct amdgpu_device { > uint32_t *reset_dump_reg_list; > uint32_t *reset_dump_reg_value; > int num_regs; > + struct amdgpu_task_info reset_task_info; > + bool reset_vram_lost; > + struct timespec64 reset_time; > > [kevin]: > the CONFIG_DEV_COREDUMP check is needed for above variable to avoid > compiler warning when coredump feautre is not enabled. > Agreed. > struct amdgpu_reset_domain *reset_domain; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 866b4980a6fa..ca97afe5be63 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -32,6 +32,8 @@ > #include <linux/slab.h> > #include <linux/iommu.h> > #include <linux/pci.h> > +#include <linux/devcoredump.h> > +#include <generated/utsrelease.h> > > #include <drm/drm_atomic_helper.h> > #include <drm/drm_probe_helper.h> > @@ -4734,6 +4736,62 @@ static int amdgpu_reset_reg_dumps(struct > amdgpu_device *adev) > return 0; > } > > +#ifdef CONFIG_DEV_COREDUMP > +static ssize_t amdgpu_devcoredump_read(char *buffer, loff_t offset, > + size_t count, void *data, size_t datalen) > +{ > + struct drm_printer p; > + struct amdgpu_device *adev = data; > + struct drm_print_iterator iter; > + int i; > + > + if (adev == NULL) > + return 0; > [kevin]: > this check is not needed, because this private data is passed by our > driver as below: > In my testing if the reset is unsuccessful amdgpu_devcoredump_read will not be called. Shashank: Any inputs on this. Regards, S.Amarnath > dev_coredumpm(dev->dev, THIS_MODULE, adev, 0, GFP_KERNEL, > amdgpu_devcoredump_read, amdgpu_devcoredump_free); > + > + iter.data = buffer; > + iter.offset = 0; > + iter.start = offset; > + iter.remain = count; > + > + p = drm_coredump_printer(&iter); > + > + drm_printf(&p, "**** AMDGPU Device Coredump ****\n"); > + drm_printf(&p, "kernel: " UTS_RELEASE "\n"); > + drm_printf(&p, "module: " KBUILD_MODNAME "\n"); > + drm_printf(&p, "time: %lld.%09ld\n", adev->reset_time.tv_sec, > adev->reset_time.tv_nsec); > + if (adev->reset_task_info.pid) > + drm_printf(&p, "process_name: %s PID: %d\n", > + adev->reset_task_info.process_name, > + adev->reset_task_info.pid); > + > + if (adev->reset_vram_lost) > + drm_printf(&p, "VRAM is lost due to GPU reset!\n"); > + if (adev->num_regs) { > + drm_printf(&p, "AMDGPU register dumps:\nOffset: > Value:\n"); > + > + for (i = 0; i < adev->num_regs; i++) > + drm_printf(&p, "0x%08x: 0x%08x\n", > + adev->reset_dump_reg_list[i], > + adev->reset_dump_reg_value[i]); > + } > + > + return count - iter.remain; > +} > + > +static void amdgpu_devcoredump_free(void *data) > +{ > +} > + > +static void amdgpu_reset_capture_coredumpm(struct amdgpu_device *adev) > +{ > + struct drm_device *dev = adev_to_drm(adev); > + > + ktime_get_ts64(&adev->reset_time); > + dev_coredumpm(dev->dev, THIS_MODULE, adev, 0, GFP_KERNEL, > + amdgpu_devcoredump_read, amdgpu_devcoredump_free); > +} > +#endif > + > int amdgpu_do_asic_reset(struct list_head *device_list_handle, > struct amdgpu_reset_context *reset_context) > { > @@ -4818,6 +4876,15 @@ int amdgpu_do_asic_reset(struct list_head > *device_list_handle, > goto out; > > vram_lost = > amdgpu_device_check_vram_lost(tmp_adev); > +#ifdef CONFIG_DEV_COREDUMP > + tmp_adev->reset_vram_lost = vram_lost; > + memset(&tmp_adev->reset_task_info, 0, > + sizeof(tmp_adev->reset_task_info)); > + if (reset_context->job && > reset_context->job->vm) > + tmp_adev->reset_task_info = > + reset_context->job->vm->task_info; > + amdgpu_reset_capture_coredumpm(tmp_adev); > +#endif > if (vram_lost) { > DRM_INFO("VRAM is lost due to > GPU reset!\n"); > amdgpu_inc_vram_lost(tmp_adev); > -- > 2.32.0 > [-- Attachment #2: Type: text/html, Size: 19292 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump 2022-05-26 9:48 [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump Somalapuram Amaranath 2022-05-26 9:48 ` [PATCH v2 2/2] drm/amdgpu: adding device coredump support Somalapuram Amaranath @ 2022-05-26 9:54 ` Sharma, Shashank 2022-05-31 13:08 ` Somalapuram, Amaranath 1 sibling, 1 reply; 9+ messages in thread From: Sharma, Shashank @ 2022-05-26 9:54 UTC (permalink / raw) To: Somalapuram Amaranath, amd-gfx; +Cc: alexander.deucher, christian.koenig Hey Amar, On 5/26/2022 11:48 AM, Somalapuram Amaranath wrote: > Allocate memory for register value and use the same values for devcoredump. > v1 -> V2: Change krealloc_array() to kmalloc_array() > > Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 7 +++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++--- > 3 files changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index 76df583663c7..c79d9992b113 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -1042,6 +1042,7 @@ struct amdgpu_device { > > /* reset dump register */ > uint32_t *reset_dump_reg_list; > + uint32_t *reset_dump_reg_value; > int num_regs; > > struct amdgpu_reset_domain *reset_domain; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index eedb12f6b8a3..f3ac7912c29c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -1709,17 +1709,24 @@ static ssize_t amdgpu_reset_dump_register_list_write(struct file *f, > i++; > } while (len < size); > > + new = kmalloc_array(i, sizeof(uint32_t), GFP_KERNEL); > + if (!new) { > + ret = -ENOMEM; > + goto error_free; > + } > ret = down_write_killable(&adev->reset_domain->sem); > if (ret) > goto error_free; > > swap(adev->reset_dump_reg_list, tmp); > + swap(adev->reset_dump_reg_value, new); > adev->num_regs = i; > up_write(&adev->reset_domain->sem); > ret = size; > > error_free: > kfree(tmp); > + kfree(new); > return ret; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 4daa0e893965..866b4980a6fa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -4720,15 +4720,15 @@ int amdgpu_device_pre_asic_reset(struct amdgpu_device *adev, > > static int amdgpu_reset_reg_dumps(struct amdgpu_device *adev) > { > - uint32_t reg_value; > int i; > > lockdep_assert_held(&adev->reset_domain->sem); > dump_stack(); > > for (i = 0; i < adev->num_regs; i++) { > - reg_value = RREG32(adev->reset_dump_reg_list[i]); > - trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], reg_value); > + adev->reset_dump_reg_value[i] = RREG32(adev->reset_dump_reg_list[i]); > + trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], > + adev->reset_dump_reg_value[i]); Please fix the alignment with the line above, after that, please feel free to use: Reviewed-by: Shashank Sharma <shashank.sharma@amd.com> - Shashank > } > > return 0; ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump 2022-05-26 9:54 ` [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump Sharma, Shashank @ 2022-05-31 13:08 ` Somalapuram, Amaranath 2022-05-31 13:17 ` Sharma, Shashank 0 siblings, 1 reply; 9+ messages in thread From: Somalapuram, Amaranath @ 2022-05-31 13:08 UTC (permalink / raw) To: Sharma, Shashank, Somalapuram Amaranath, amd-gfx Cc: alexander.deucher, christian.koenig [-- Attachment #1: Type: text/plain, Size: 3537 bytes --] On 5/26/2022 3:24 PM, Sharma, Shashank wrote: > Hey Amar, > > On 5/26/2022 11:48 AM, Somalapuram Amaranath wrote: >> Allocate memory for register value and use the same values for >> devcoredump. >> v1 -> V2: Change krealloc_array() to kmalloc_array() >> >> Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> >> --- >> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + >> drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 7 +++++++ >> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++--- >> 3 files changed, 11 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h >> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h >> index 76df583663c7..c79d9992b113 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h >> @@ -1042,6 +1042,7 @@ struct amdgpu_device { >> /* reset dump register */ >> uint32_t *reset_dump_reg_list; >> + uint32_t *reset_dump_reg_value; >> int num_regs; >> struct amdgpu_reset_domain *reset_domain; >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c >> index eedb12f6b8a3..f3ac7912c29c 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c >> @@ -1709,17 +1709,24 @@ static ssize_t >> amdgpu_reset_dump_register_list_write(struct file *f, >> i++; >> } while (len < size); >> + new = kmalloc_array(i, sizeof(uint32_t), GFP_KERNEL); >> + if (!new) { >> + ret = -ENOMEM; >> + goto error_free; >> + } >> ret = down_write_killable(&adev->reset_domain->sem); >> if (ret) >> goto error_free; >> swap(adev->reset_dump_reg_list, tmp); >> + swap(adev->reset_dump_reg_value, new); >> adev->num_regs = i; >> up_write(&adev->reset_domain->sem); >> ret = size; >> error_free: >> kfree(tmp); >> + kfree(new); >> return ret; >> } >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c >> index 4daa0e893965..866b4980a6fa 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c >> @@ -4720,15 +4720,15 @@ int amdgpu_device_pre_asic_reset(struct >> amdgpu_device *adev, >> static int amdgpu_reset_reg_dumps(struct amdgpu_device *adev) >> { >> - uint32_t reg_value; >> int i; >> lockdep_assert_held(&adev->reset_domain->sem); >> dump_stack(); >> for (i = 0; i < adev->num_regs; i++) { >> - reg_value = RREG32(adev->reset_dump_reg_list[i]); >> - trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], reg_value); >> + adev->reset_dump_reg_value[i] = >> RREG32(adev->reset_dump_reg_list[i]); >> + trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], >> + adev->reset_dump_reg_value[i]); Alignment is showing spaces in email. But its 2 tabs in code. Regards, S.Amarnath > Please fix the alignment with the line above, after that, please feel > free to use: > Reviewed-by: Shashank Sharma <shashank.sharma@amd.com> > > - Shashank >> } >> return 0; [-- Attachment #2.1: Type: text/html, Size: 6818 bytes --] [-- Attachment #2.2: imNmJuhYCmZqwnZU.png --] [-- Type: image/png, Size: 10366 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump 2022-05-31 13:08 ` Somalapuram, Amaranath @ 2022-05-31 13:17 ` Sharma, Shashank 2022-05-31 13:24 ` Christian König 0 siblings, 1 reply; 9+ messages in thread From: Sharma, Shashank @ 2022-05-31 13:17 UTC (permalink / raw) To: Somalapuram, Amaranath, amd-gfx; +Cc: Deucher, Alexander, Koenig, Christian [-- Attachment #1.1: Type: text/plain, Size: 3945 bytes --] It’s not correct even in the snapshot 😃. [cid:image001.png@01D87501.96BF5BD0] The *a*dev->reset_dump line should start just below the open brace in the line above “dumps*(*adev->reset”. Check the Linux kernel coding guidelines for extending the line below the open brace. Regards Shashank From: Somalapuram, Amaranath <Amaranath.Somalapuram@amd.com> Sent: Tuesday, May 31, 2022 3:09 PM To: Sharma, Shashank <Shashank.Sharma@amd.com>; Somalapuram, Amaranath <Amaranath.Somalapuram@amd.com>; amd-gfx@lists.freedesktop.org Cc: Koenig, Christian <Christian.Koenig@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com> Subject: Re: [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump On 5/26/2022 3:24 PM, Sharma, Shashank wrote: Hey Amar, On 5/26/2022 11:48 AM, Somalapuram Amaranath wrote: Allocate memory for register value and use the same values for devcoredump. v1 -> V2: Change krealloc_array() to kmalloc_array() Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com><mailto:Amaranath.Somalapuram@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 7 +++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 76df583663c7..c79d9992b113 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -1042,6 +1042,7 @@ struct amdgpu_device { /* reset dump register */ uint32_t *reset_dump_reg_list; + uint32_t *reset_dump_reg_value; int num_regs; struct amdgpu_reset_domain *reset_domain; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c index eedb12f6b8a3..f3ac7912c29c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c @@ -1709,17 +1709,24 @@ static ssize_t amdgpu_reset_dump_register_list_write(struct file *f, i++; } while (len < size); + new = kmalloc_array(i, sizeof(uint32_t), GFP_KERNEL); + if (!new) { + ret = -ENOMEM; + goto error_free; + } ret = down_write_killable(&adev->reset_domain->sem); if (ret) goto error_free; swap(adev->reset_dump_reg_list, tmp); + swap(adev->reset_dump_reg_value, new); adev->num_regs = i; up_write(&adev->reset_domain->sem); ret = size; error_free: kfree(tmp); + kfree(new); return ret; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 4daa0e893965..866b4980a6fa 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -4720,15 +4720,15 @@ int amdgpu_device_pre_asic_reset(struct amdgpu_device *adev, static int amdgpu_reset_reg_dumps(struct amdgpu_device *adev) { - uint32_t reg_value; int i; lockdep_assert_held(&adev->reset_domain->sem); dump_stack(); for (i = 0; i < adev->num_regs; i++) { - reg_value = RREG32(adev->reset_dump_reg_list[i]); - trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], reg_value); + adev->reset_dump_reg_value[i] = RREG32(adev->reset_dump_reg_list[i]); + trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], + adev->reset_dump_reg_value[i]); Alignment is showing spaces in email. But its 2 tabs in code. Regards, S.Amarnath Please fix the alignment with the line above, after that, please feel free to use: Reviewed-by: Shashank Sharma <shashank.sharma@amd.com><mailto:shashank.sharma@amd.com> - Shashank } return 0; [-- Attachment #1.2: Type: text/html, Size: 9080 bytes --] [-- Attachment #2: image001.png --] [-- Type: image/png, Size: 10366 bytes --] ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump 2022-05-31 13:17 ` Sharma, Shashank @ 2022-05-31 13:24 ` Christian König 0 siblings, 0 replies; 9+ messages in thread From: Christian König @ 2022-05-31 13:24 UTC (permalink / raw) To: Sharma, Shashank, Somalapuram, Amaranath, amd-gfx; +Cc: Deucher, Alexander [-- Attachment #1: Type: text/plain, Size: 5071 bytes --] I strongly recommend installing coding style setting for your favorite editor. Those should be available for pretty much every more widely used code editor. Regards, Christian. Am 31.05.22 um 15:17 schrieb Sharma, Shashank: > > It’s not correct even in the snapshot 😃. > > The **a**dev->reset_dump line should start just below the open brace > in the line above “dumps*(*adev->reset”. > > Check the Linux kernel coding guidelines for extending the line below > the open brace. > > Regards > > Shashank > > *From:* Somalapuram, Amaranath <Amaranath.Somalapuram@amd.com> > *Sent:* Tuesday, May 31, 2022 3:09 PM > *To:* Sharma, Shashank <Shashank.Sharma@amd.com>; Somalapuram, > Amaranath <Amaranath.Somalapuram@amd.com>; amd-gfx@lists.freedesktop.org > *Cc:* Koenig, Christian <Christian.Koenig@amd.com>; Deucher, Alexander > <Alexander.Deucher@amd.com> > *Subject:* Re: [PATCH v2 1/2] drm/amdgpu: save the reset dump register > value for devcoredump > > On 5/26/2022 3:24 PM, Sharma, Shashank wrote: > > Hey Amar, > > On 5/26/2022 11:48 AM, Somalapuram Amaranath wrote: > > Allocate memory for register value and use the same values for > devcoredump. > v1 -> V2: Change krealloc_array() to kmalloc_array() > > Signed-off-by: Somalapuram Amaranath > <Amaranath.Somalapuram@amd.com> > <mailto:Amaranath.Somalapuram@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 7 +++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++--- > 3 files changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index 76df583663c7..c79d9992b113 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -1042,6 +1042,7 @@ struct amdgpu_device { > /* reset dump register */ > uint32_t *reset_dump_reg_list; > + uint32_t *reset_dump_reg_value; > int num_regs; > struct amdgpu_reset_domain *reset_domain; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index eedb12f6b8a3..f3ac7912c29c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -1709,17 +1709,24 @@ static ssize_t > amdgpu_reset_dump_register_list_write(struct file *f, > i++; > } while (len < size); > + new = kmalloc_array(i, sizeof(uint32_t), GFP_KERNEL); > + if (!new) { > + ret = -ENOMEM; > + goto error_free; > + } > ret = down_write_killable(&adev->reset_domain->sem); > if (ret) > goto error_free; > swap(adev->reset_dump_reg_list, tmp); > + swap(adev->reset_dump_reg_value, new); > adev->num_regs = i; > up_write(&adev->reset_domain->sem); > ret = size; > error_free: > kfree(tmp); > + kfree(new); > return ret; > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 4daa0e893965..866b4980a6fa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -4720,15 +4720,15 @@ int > amdgpu_device_pre_asic_reset(struct amdgpu_device *adev, > static int amdgpu_reset_reg_dumps(struct amdgpu_device *adev) > { > - uint32_t reg_value; > int i; > lockdep_assert_held(&adev->reset_domain->sem); > dump_stack(); > for (i = 0; i < adev->num_regs; i++) { > - reg_value = RREG32(adev->reset_dump_reg_list[i]); > - trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], > reg_value); > + adev->reset_dump_reg_value[i] = > RREG32(adev->reset_dump_reg_list[i]); > + trace_amdgpu_reset_reg_dumps(adev->reset_dump_reg_list[i], > + adev->reset_dump_reg_value[i]); > > Alignment is showing spaces in email. But its 2 tabs in code. > > > Regards, > S.Amarnath > > Please fix the alignment with the line above, after that, please > feel free to use: > Reviewed-by: Shashank Sharma <shashank.sharma@amd.com> > <mailto:shashank.sharma@amd.com> > > - Shashank > > } > return 0; > [-- Attachment #2.1: Type: text/html, Size: 11383 bytes --] [-- Attachment #2.2: image001.png --] [-- Type: image/png, Size: 10366 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-05-31 13:24 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-05-26 9:48 [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump Somalapuram Amaranath 2022-05-26 9:48 ` [PATCH v2 2/2] drm/amdgpu: adding device coredump support Somalapuram Amaranath 2022-05-26 9:57 ` Sharma, Shashank 2022-05-26 10:26 ` Wang, Yang(Kevin) 2022-05-31 13:14 ` Somalapuram, Amaranath 2022-05-26 9:54 ` [PATCH v2 1/2] drm/amdgpu: save the reset dump register value for devcoredump Sharma, Shashank 2022-05-31 13:08 ` Somalapuram, Amaranath 2022-05-31 13:17 ` Sharma, Shashank 2022-05-31 13:24 ` Christian König
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.