Message ID | 20220328040536.4121797-1-lizhenneng@kylinos.cn (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/amdgpu: resolve s3 hang for r7340 | expand |
Dear Zhenneng, Thank you for your patch. Am 28.03.22 um 06:05 schrieb Zhenneng Li: > This is a workaround for s3 hang for r7340(amdgpu). Is it hanging when resuming from S3? Maybe also use the line below for the commit message summary: drm/amdgpu: Add 1 ms delay to init handler to fix s3 resume hang Also, please add a space before the ( in “r7340(amdgpu)”. > When we test s3 with r7340 on arm64 platform, graphics card will hang up, > the error message are as follows: > Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.599374][ 7] [ T291] amdgpu 0000:02:00.0: fb0: amdgpudrmfb frame buffer device > Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.612869][ 7] [ T291] [drm:amdgpu_device_ip_late_init [amdgpu]] *ERROR* late_init of IP block <si_dpm> failed -22 > Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.623392][ 7] [ T291] amdgpu 0000:02:00.0: amdgpu_device_ip_late_init failed > Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.630696][ 7] [ T291] amdgpu 0000:02:00.0: Fatal error during GPU init > Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.637477][ 7] [ T291] [drm] amdgpu: finishing device. The prefix in the beginning is not really needed. Only the stuff after `kernel: `. Maybe also add the output of `lspci -nn -s …` for that r7340 device. > Change-Id: I5048b3894c0ca9faf2f4847ddab61f9eb17b4823 Without the Gerrit instance this belongs to, the Change-Id is of no use in the public. > Signed-off-by: Zhenneng Li <lizhenneng@kylinos.cn> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 3987ecb24ef4..1eced991b5b2 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -2903,6 +2903,8 @@ static void amdgpu_device_delayed_init_work_handler(struct work_struct *work) > container_of(work, struct amdgpu_device, delayed_init_work.work); > int r; > > + mdelay(1); > + Wow, I wonder how long it took you to find that workaround. > r = amdgpu_ib_ring_tests(adev); > if (r) > DRM_ERROR("ib ring test failed (%d).\n", r); Kind regards, Paul
[Cc: -Jack Zhang (invalid address) Am 28.03.22 um 09:36 schrieb Paul Menzel: > Dear Zhenneng, > > > Thank you for your patch. > > Am 28.03.22 um 06:05 schrieb Zhenneng Li: >> This is a workaround for s3 hang for r7340(amdgpu). > > Is it hanging when resuming from S3? Maybe also use the line below for > the commit message summary: > > drm/amdgpu: Add 1 ms delay to init handler to fix s3 resume hang > > Also, please add a space before the ( in “r7340(amdgpu)”. > >> When we test s3 with r7340 on arm64 platform, graphics card will hang up, >> the error message are as follows: >> Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.599374][ 7] [ T291] amdgpu 0000:02:00.0: fb0: amdgpudrmfb frame buffer device >> Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.612869][ 7] [ T291] [drm:amdgpu_device_ip_late_init [amdgpu]] *ERROR* late_init of IP block <si_dpm> failed -22 >> Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.623392][ 7] [ T291] amdgpu 0000:02:00.0: amdgpu_device_ip_late_init failed >> Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.630696][ 7] [ T291] amdgpu 0000:02:00.0: Fatal error during GPU init >> Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.637477][ 7] [ T291] [drm] amdgpu: finishing device. > > The prefix in the beginning is not really needed. Only the stuff after > `kernel: `. > > Maybe also add the output of `lspci -nn -s …` for that r7340 device. > >> Change-Id: I5048b3894c0ca9faf2f4847ddab61f9eb17b4823 > > Without the Gerrit instance this belongs to, the Change-Id is of no use > in the public. > >> Signed-off-by: Zhenneng Li <lizhenneng@kylinos.cn> >> --- >> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c >> index 3987ecb24ef4..1eced991b5b2 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c >> @@ -2903,6 +2903,8 @@ static void >> amdgpu_device_delayed_init_work_handler(struct work_struct *work) >> container_of(work, struct amdgpu_device, delayed_init_work.work); >> int r; >> + mdelay(1); >> + > > Wow, I wonder how long it took you to find that workaround. > >> r = amdgpu_ib_ring_tests(adev); >> if (r) >> DRM_ERROR("ib ring test failed (%d).\n", r); > > > Kind regards, > > Paul
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 3987ecb24ef4..1eced991b5b2 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -2903,6 +2903,8 @@ static void amdgpu_device_delayed_init_work_handler(struct work_struct *work) container_of(work, struct amdgpu_device, delayed_init_work.work); int r; + mdelay(1); + r = amdgpu_ib_ring_tests(adev); if (r) DRM_ERROR("ib ring test failed (%d).\n", r);
This is a workaround for s3 hang for r7340(amdgpu). When we test s3 with r7340 on arm64 platform, graphics card will hang up, the error message are as follows: Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.599374][ 7] [ T291] amdgpu 0000:02:00.0: fb0: amdgpudrmfb frame buffer device Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.612869][ 7] [ T291] [drm:amdgpu_device_ip_late_init [amdgpu]] *ERROR* late_init of IP block <si_dpm> failed -22 Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.623392][ 7] [ T291] amdgpu 0000:02:00.0: amdgpu_device_ip_late_init failed Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.630696][ 7] [ T291] amdgpu 0000:02:00.0: Fatal error during GPU init Mar 4 01:14:11 greatwall-GW-XXXXXX-XXX kernel: [ 1.637477][ 7] [ T291] [drm] amdgpu: finishing device. Change-Id: I5048b3894c0ca9faf2f4847ddab61f9eb17b4823 Signed-off-by: Zhenneng Li <lizhenneng@kylinos.cn> --- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++ 1 file changed, 2 insertions(+)