* [PATCH 0/2] Add pagefault support for devcoredump @ 2024-03-07 16:59 Sunil Khatri 2024-03-07 16:59 ` [PATCH 1/2] drm/amdgpu: add recent pagefault info in vm_manager Sunil Khatri 2024-03-07 16:59 ` [PATCH 2/2] drm/amdgpu: add vm fault information to devcoredump Sunil Khatri 0 siblings, 2 replies; 6+ messages in thread From: Sunil Khatri @ 2024-03-07 16:59 UTC (permalink / raw) To: Alex Deucher, Christian König, Shashank Sharma Cc: amd-gfx, dri-devel, linux-kernel, Mukul Joshi, Arunpravin Paneer Selvam, Sunil Khatri Add support of devcoredump from global object of amdgpu_device Sunil Khatri (2): drm/amdgpu: add recent pagefault info in vm_manager drm/amdgpu: add vm fault information to devcoredump drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c | 14 +++++++++++++- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 8 ++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] drm/amdgpu: add recent pagefault info in vm_manager 2024-03-07 16:59 [PATCH 0/2] Add pagefault support for devcoredump Sunil Khatri @ 2024-03-07 16:59 ` Sunil Khatri 2024-03-07 16:59 ` [PATCH 2/2] drm/amdgpu: add vm fault information to devcoredump Sunil Khatri 1 sibling, 0 replies; 6+ messages in thread From: Sunil Khatri @ 2024-03-07 16:59 UTC (permalink / raw) To: Alex Deucher, Christian König, Shashank Sharma Cc: amd-gfx, dri-devel, linux-kernel, Mukul Joshi, Arunpravin Paneer Selvam, Sunil Khatri Currently page fault information is stored per vm and which could be freed or stale during reset. Add it pagefault information in the vm_manager which is a global space for vm's and remains valid across. Signed-off-by: Sunil Khatri <sunil.khatri@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 8 ++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 4299ce386322..81fb3465e197 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -2924,6 +2924,14 @@ void amdgpu_vm_update_fault_cache(struct amdgpu_device *adev, if (vm && status) { vm->fault_info.addr = addr; vm->fault_info.status = status; + /* + * Update the fault information globally for later usage + * when vm could be stale or freed. + */ + adev->vm_manager.fault_info.addr = addr; + adev->vm_manager.fault_info.vmhub = vmhub; + adev->vm_manager.fault_info.status = status; + if (AMDGPU_IS_GFXHUB(vmhub)) { vm->fault_info.vmhub = AMDGPU_VMHUB_TYPE_GFX; vm->fault_info.vmhub |= diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h index 047ec1930d12..8efa8422f4f7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h @@ -422,6 +422,8 @@ struct amdgpu_vm_manager { * look up VM of a page fault */ struct xarray pasids; + /* Global registration of recent page fault information */ + struct amdgpu_vm_fault_info fault_info; }; struct amdgpu_bo_va_mapping; -- 2.34.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] drm/amdgpu: add vm fault information to devcoredump 2024-03-07 16:59 [PATCH 0/2] Add pagefault support for devcoredump Sunil Khatri 2024-03-07 16:59 ` [PATCH 1/2] drm/amdgpu: add recent pagefault info in vm_manager Sunil Khatri @ 2024-03-07 16:59 ` Sunil Khatri 2024-03-07 19:14 ` Alex Deucher 1 sibling, 1 reply; 6+ messages in thread From: Sunil Khatri @ 2024-03-07 16:59 UTC (permalink / raw) To: Alex Deucher, Christian König, Shashank Sharma Cc: amd-gfx, dri-devel, linux-kernel, Mukul Joshi, Arunpravin Paneer Selvam, Sunil Khatri Add page fault information to the devcoredump. Output of devcoredump: **** AMDGPU Device Coredump **** version: 1 kernel: 6.7.0-amd-staging-drm-next module: amdgpu time: 29.725011811 process_name: soft_recovery_p PID: 1720 Ring timed out details IP Type: 0 Ring Name: gfx_0.0.0 [gfxhub] Page fault observed Faulty page starting at address 0x0000000000000000 Protection fault status register:0x301031 VRAM is lost due to GPU reset! Signed-off-by: Sunil Khatri <sunil.khatri@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c index 147100c27c2d..dd39e614d907 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c @@ -203,8 +203,20 @@ amdgpu_devcoredump_read(char *buffer, loff_t offset, size_t count, coredump->ring->name); } + if (coredump->adev) { + struct amdgpu_vm_fault_info *fault_info = + &coredump->adev->vm_manager.fault_info; + + drm_printf(&p, "\n[%s] Page fault observed\n", + fault_info->vmhub ? "mmhub" : "gfxhub"); + drm_printf(&p, "Faulty page starting at address 0x%016llx\n", + fault_info->addr); + drm_printf(&p, "Protection fault status register:0x%x\n", + fault_info->status); + } + if (coredump->reset_vram_lost) - drm_printf(&p, "VRAM is lost due to GPU reset!\n"); + drm_printf(&p, "\nVRAM is lost due to GPU reset!\n"); if (coredump->adev->reset_info.num_regs) { drm_printf(&p, "AMDGPU register dumps:\nOffset: Value:\n"); -- 2.34.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] drm/amdgpu: add vm fault information to devcoredump 2024-03-07 16:59 ` [PATCH 2/2] drm/amdgpu: add vm fault information to devcoredump Sunil Khatri @ 2024-03-07 19:14 ` Alex Deucher 2024-03-07 20:42 ` Khatri, Sunil 0 siblings, 1 reply; 6+ messages in thread From: Alex Deucher @ 2024-03-07 19:14 UTC (permalink / raw) To: Sunil Khatri Cc: Alex Deucher, Christian König, Shashank Sharma, amd-gfx, dri-devel, linux-kernel, Mukul Joshi, Arunpravin Paneer Selvam On Thu, Mar 7, 2024 at 12:00 PM Sunil Khatri <sunil.khatri@amd.com> wrote: > > Add page fault information to the devcoredump. > > Output of devcoredump: > **** AMDGPU Device Coredump **** > version: 1 > kernel: 6.7.0-amd-staging-drm-next > module: amdgpu > time: 29.725011811 > process_name: soft_recovery_p PID: 1720 > > Ring timed out details > IP Type: 0 Ring Name: gfx_0.0.0 > > [gfxhub] Page fault observed > Faulty page starting at address 0x0000000000000000 Do you want a : before the address for consistency? > Protection fault status register:0x301031 How about a space after the : for consistency? For parsability, it may make more sense to just have a list of key value pairs: [GPU page fault] hub: addr: status: [Ring timeout details] IP: ring: name: etc. > > VRAM is lost due to GPU reset! > > Signed-off-by: Sunil Khatri <sunil.khatri@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c > index 147100c27c2d..dd39e614d907 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c > @@ -203,8 +203,20 @@ amdgpu_devcoredump_read(char *buffer, loff_t offset, size_t count, > coredump->ring->name); > } > > + if (coredump->adev) { > + struct amdgpu_vm_fault_info *fault_info = > + &coredump->adev->vm_manager.fault_info; > + > + drm_printf(&p, "\n[%s] Page fault observed\n", > + fault_info->vmhub ? "mmhub" : "gfxhub"); > + drm_printf(&p, "Faulty page starting at address 0x%016llx\n", > + fault_info->addr); > + drm_printf(&p, "Protection fault status register:0x%x\n", > + fault_info->status); > + } > + > if (coredump->reset_vram_lost) > - drm_printf(&p, "VRAM is lost due to GPU reset!\n"); > + drm_printf(&p, "\nVRAM is lost due to GPU reset!\n"); > if (coredump->adev->reset_info.num_regs) { > drm_printf(&p, "AMDGPU register dumps:\nOffset: Value:\n"); > > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] drm/amdgpu: add vm fault information to devcoredump 2024-03-07 19:14 ` Alex Deucher @ 2024-03-07 20:42 ` Khatri, Sunil 2024-03-07 20:45 ` Alex Deucher 0 siblings, 1 reply; 6+ messages in thread From: Khatri, Sunil @ 2024-03-07 20:42 UTC (permalink / raw) To: Alex Deucher, Sunil Khatri Cc: Alex Deucher, Christian König, Shashank Sharma, amd-gfx, dri-devel, linux-kernel, Mukul Joshi, Arunpravin Paneer Selvam On 3/8/2024 12:44 AM, Alex Deucher wrote: > On Thu, Mar 7, 2024 at 12:00 PM Sunil Khatri <sunil.khatri@amd.com> wrote: >> Add page fault information to the devcoredump. >> >> Output of devcoredump: >> **** AMDGPU Device Coredump **** >> version: 1 >> kernel: 6.7.0-amd-staging-drm-next >> module: amdgpu >> time: 29.725011811 >> process_name: soft_recovery_p PID: 1720 >> >> Ring timed out details >> IP Type: 0 Ring Name: gfx_0.0.0 >> >> [gfxhub] Page fault observed >> Faulty page starting at address 0x0000000000000000 > Do you want a : before the address for consistency? sure. > >> Protection fault status register:0x301031 > How about a space after the : for consistency? > > For parsability, it may make more sense to just have a list of key value pairs: > [GPU page fault] > hub: > addr: > status: > [Ring timeout details] > IP: > ring: > name: > > etc. Sure i agree but till now i was capturing information like we shared in dmesg which is user readable. But surely one we have enough data i could arrange all in key: value pairs like you suggest in a patch later if that works ? > >> VRAM is lost due to GPU reset! >> >> Signed-off-by: Sunil Khatri <sunil.khatri@amd.com> >> --- >> drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c | 14 +++++++++++++- >> 1 file changed, 13 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c >> index 147100c27c2d..dd39e614d907 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c >> @@ -203,8 +203,20 @@ amdgpu_devcoredump_read(char *buffer, loff_t offset, size_t count, >> coredump->ring->name); >> } >> >> + if (coredump->adev) { >> + struct amdgpu_vm_fault_info *fault_info = >> + &coredump->adev->vm_manager.fault_info; >> + >> + drm_printf(&p, "\n[%s] Page fault observed\n", >> + fault_info->vmhub ? "mmhub" : "gfxhub"); >> + drm_printf(&p, "Faulty page starting at address 0x%016llx\n", >> + fault_info->addr); >> + drm_printf(&p, "Protection fault status register:0x%x\n", >> + fault_info->status); >> + } >> + >> if (coredump->reset_vram_lost) >> - drm_printf(&p, "VRAM is lost due to GPU reset!\n"); >> + drm_printf(&p, "\nVRAM is lost due to GPU reset!\n"); >> if (coredump->adev->reset_info.num_regs) { >> drm_printf(&p, "AMDGPU register dumps:\nOffset: Value:\n"); >> >> -- >> 2.34.1 >> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] drm/amdgpu: add vm fault information to devcoredump 2024-03-07 20:42 ` Khatri, Sunil @ 2024-03-07 20:45 ` Alex Deucher 0 siblings, 0 replies; 6+ messages in thread From: Alex Deucher @ 2024-03-07 20:45 UTC (permalink / raw) To: Khatri, Sunil Cc: Sunil Khatri, Alex Deucher, Christian König, Shashank Sharma, amd-gfx, dri-devel, linux-kernel, Mukul Joshi, Arunpravin Paneer Selvam On Thu, Mar 7, 2024 at 3:42 PM Khatri, Sunil <sukhatri@amd.com> wrote: > > > On 3/8/2024 12:44 AM, Alex Deucher wrote: > > On Thu, Mar 7, 2024 at 12:00 PM Sunil Khatri <sunil.khatri@amd.com> wrote: > >> Add page fault information to the devcoredump. > >> > >> Output of devcoredump: > >> **** AMDGPU Device Coredump **** > >> version: 1 > >> kernel: 6.7.0-amd-staging-drm-next > >> module: amdgpu > >> time: 29.725011811 > >> process_name: soft_recovery_p PID: 1720 > >> > >> Ring timed out details > >> IP Type: 0 Ring Name: gfx_0.0.0 > >> > >> [gfxhub] Page fault observed > >> Faulty page starting at address 0x0000000000000000 > > Do you want a : before the address for consistency? > sure. > > > >> Protection fault status register:0x301031 > > How about a space after the : for consistency? > > > > For parsability, it may make more sense to just have a list of key value pairs: > > [GPU page fault] > > hub: > > addr: > > status: > > [Ring timeout details] > > IP: > > ring: > > name: > > > > etc. > > Sure i agree but till now i was capturing information like we shared in > dmesg which is user readable. But surely one we have enough data i could > arrange all in key: value pairs like you suggest in a patch later if > that works ? Sure. Alex > > > > >> VRAM is lost due to GPU reset! > >> > >> Signed-off-by: Sunil Khatri <sunil.khatri@amd.com> > >> --- > >> drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c | 14 +++++++++++++- > >> 1 file changed, 13 insertions(+), 1 deletion(-) > >> > >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c > >> index 147100c27c2d..dd39e614d907 100644 > >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c > >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c > >> @@ -203,8 +203,20 @@ amdgpu_devcoredump_read(char *buffer, loff_t offset, size_t count, > >> coredump->ring->name); > >> } > >> > >> + if (coredump->adev) { > >> + struct amdgpu_vm_fault_info *fault_info = > >> + &coredump->adev->vm_manager.fault_info; > >> + > >> + drm_printf(&p, "\n[%s] Page fault observed\n", > >> + fault_info->vmhub ? "mmhub" : "gfxhub"); > >> + drm_printf(&p, "Faulty page starting at address 0x%016llx\n", > >> + fault_info->addr); > >> + drm_printf(&p, "Protection fault status register:0x%x\n", > >> + fault_info->status); > >> + } > >> + > >> if (coredump->reset_vram_lost) > >> - drm_printf(&p, "VRAM is lost due to GPU reset!\n"); > >> + drm_printf(&p, "\nVRAM is lost due to GPU reset!\n"); > >> if (coredump->adev->reset_info.num_regs) { > >> drm_printf(&p, "AMDGPU register dumps:\nOffset: Value:\n"); > >> > >> -- > >> 2.34.1 > >> ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-03-07 20:45 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-03-07 16:59 [PATCH 0/2] Add pagefault support for devcoredump Sunil Khatri 2024-03-07 16:59 ` [PATCH 1/2] drm/amdgpu: add recent pagefault info in vm_manager Sunil Khatri 2024-03-07 16:59 ` [PATCH 2/2] drm/amdgpu: add vm fault information to devcoredump Sunil Khatri 2024-03-07 19:14 ` Alex Deucher 2024-03-07 20:42 ` Khatri, Sunil 2024-03-07 20:45 ` Alex Deucher
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®