Message ID | 20240718030352.654155-1-jammy_huang@aspeedtech.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/ast: Fix black screen after resume | expand |
(Cary, this looks like it fixes the problem you reported.) Hi Jammy Am 18.07.24 um 05:03 schrieb Jammy Huang: > Suspend will disable pcie device. Thus, resume should do full hw > initialization again. > Add some APIs to ast_drm_thaw() before ast_post_gpu() to fix the issue. > > Fixes: 5b71707dd13 ("drm/ast: Enable and unlock device access early during init") > Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Thanks a lot for this fix. Best regards Thomas > --- > drivers/gpu/drm/ast/ast_drv.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c > index f8c49ba68e78..45a9c7bf49c8 100644 > --- a/drivers/gpu/drm/ast/ast_drv.c > +++ b/drivers/gpu/drm/ast/ast_drv.c > @@ -391,6 +391,11 @@ static int ast_drm_freeze(struct drm_device *dev) > > static int ast_drm_thaw(struct drm_device *dev) > { > + struct ast_device *ast = to_ast_device(dev); > + > + ast_enable_vga(ioregs); > + ast_open_key(ioregs); > + ast_enable_mmio(dev, ioregs); > ast_post_gpu(dev); > > return drm_mode_config_helper_resume(dev); > > base-commit: e9d22f7a6655941fc8b2b942ed354ec780936b3e > prerequisite-patch-id: a03a33902f33bcc38091e2cdce9d79f630464c30 > prerequisite-patch-id: 505779a1e2094f2ee2f2a55ad44aac5cd1d5342f
Am 18.07.24 um 08:50 schrieb Thomas Zimmermann: > (Cary, this looks like it fixes the problem you reported.) > > Hi Jammy > > Am 18.07.24 um 05:03 schrieb Jammy Huang: >> Suspend will disable pcie device. Thus, resume should do full hw >> initialization again. >> Add some APIs to ast_drm_thaw() before ast_post_gpu() to fix the issue. >> >> Fixes: 5b71707dd13 ("drm/ast: Enable and unlock device access early >> during init") >> Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com> > > Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> > > Thanks a lot for this fix. > > Best regards > Thomas > >> --- >> drivers/gpu/drm/ast/ast_drv.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/drivers/gpu/drm/ast/ast_drv.c >> b/drivers/gpu/drm/ast/ast_drv.c >> index f8c49ba68e78..45a9c7bf49c8 100644 >> --- a/drivers/gpu/drm/ast/ast_drv.c >> +++ b/drivers/gpu/drm/ast/ast_drv.c >> @@ -391,6 +391,11 @@ static int ast_drm_freeze(struct drm_device *dev) >> static int ast_drm_thaw(struct drm_device *dev) >> { >> + struct ast_device *ast = to_ast_device(dev); >> + >> + ast_enable_vga(ioregs); >> + ast_open_key(ioregs); >> + ast_enable_mmio(dev, ioregs); BTW I got a build error. I'll fix that up before committing the patch. Best regards Thomas >> ast_post_gpu(dev); >> return drm_mode_config_helper_resume(dev); >> >> base-commit: e9d22f7a6655941fc8b2b942ed354ec780936b3e >> prerequisite-patch-id: a03a33902f33bcc38091e2cdce9d79f630464c30 >> prerequisite-patch-id: 505779a1e2094f2ee2f2a55ad44aac5cd1d5342f >
Hi Thomas, Sorry for the miss, and thanks for your help. Regards, Jammy Huang > -----Original Message----- > From: Thomas Zimmermann <tzimmermann@suse.de> > Sent: Thursday, July 18, 2024 4:02 PM > To: Jammy Huang <jammy_huang@aspeedtech.com>; jfalempe@redhat.com; > maarten.lankhorst@linux.intel.com; mripard@kernel.org; airlied@redhat.com; > airlied@gmail.com; daniel@ffwll.ch > Cc: dri-devel@lists.freedesktop.org; linux-kernel@vger.kernel.org; Cary Garrett > <cogarre@gmail.com> > Subject: Re: [PATCH] drm/ast: Fix black screen after resume > > > > Am 18.07.24 um 08:50 schrieb Thomas Zimmermann: > > (Cary, this looks like it fixes the problem you reported.) > > > > Hi Jammy > > > > Am 18.07.24 um 05:03 schrieb Jammy Huang: > >> Suspend will disable pcie device. Thus, resume should do full hw > >> initialization again. > >> Add some APIs to ast_drm_thaw() before ast_post_gpu() to fix the issue. > >> > >> Fixes: 5b71707dd13 ("drm/ast: Enable and unlock device access early > >> during init") > >> Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com> > > > > Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> > > > > Thanks a lot for this fix. > > > > Best regards > > Thomas > > > >> --- > >> drivers/gpu/drm/ast/ast_drv.c | 5 +++++ > >> 1 file changed, 5 insertions(+) > >> > >> diff --git a/drivers/gpu/drm/ast/ast_drv.c > >> b/drivers/gpu/drm/ast/ast_drv.c index f8c49ba68e78..45a9c7bf49c8 > >> 100644 > >> --- a/drivers/gpu/drm/ast/ast_drv.c > >> +++ b/drivers/gpu/drm/ast/ast_drv.c > >> @@ -391,6 +391,11 @@ static int ast_drm_freeze(struct drm_device > >> *dev) > >> static int ast_drm_thaw(struct drm_device *dev) > >> { > >> + struct ast_device *ast = to_ast_device(dev); > >> + > >> + ast_enable_vga(ioregs); > >> + ast_open_key(ioregs); > >> + ast_enable_mmio(dev, ioregs); > > BTW I got a build error. I'll fix that up before committing the patch. > > Best regards > Thomas > > >> ast_post_gpu(dev); > >> return drm_mode_config_helper_resume(dev); > >> > >> base-commit: e9d22f7a6655941fc8b2b942ed354ec780936b3e > >> prerequisite-patch-id: a03a33902f33bcc38091e2cdce9d79f630464c30 > >> prerequisite-patch-id: 505779a1e2094f2ee2f2a55ad44aac5cd1d5342f > > > > -- > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Software Solutions Germany GmbH > Frankenstrasse 146, 90461 Nuernberg, Germany > GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB > 36809 (AG Nuernberg) ************* Email Confidentiality Notice ******************** 免責聲明: 本信件(或其附件)可能包含機密資訊,並受法律保護。如 台端非指定之收件者,請以電子郵件通知本電子郵件之發送者, 並請立即刪除本電子郵件及其附件和銷毀所有複印件。謝謝您的合作! DISCLAIMER: This message (and any attachments) may contain legally privileged and/or other confidential information. If you have received it in error, please notify the sender by reply e-mail and immediately delete the e-mail and any attachments without copying or disclosing the contents. Thank you.
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c index f8c49ba68e78..45a9c7bf49c8 100644 --- a/drivers/gpu/drm/ast/ast_drv.c +++ b/drivers/gpu/drm/ast/ast_drv.c @@ -391,6 +391,11 @@ static int ast_drm_freeze(struct drm_device *dev) static int ast_drm_thaw(struct drm_device *dev) { + struct ast_device *ast = to_ast_device(dev); + + ast_enable_vga(ioregs); + ast_open_key(ioregs); + ast_enable_mmio(dev, ioregs); ast_post_gpu(dev); return drm_mode_config_helper_resume(dev);
Suspend will disable pcie device. Thus, resume should do full hw initialization again. Add some APIs to ast_drm_thaw() before ast_post_gpu() to fix the issue. Fixes: 5b71707dd13 ("drm/ast: Enable and unlock device access early during init") Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com> --- drivers/gpu/drm/ast/ast_drv.c | 5 +++++ 1 file changed, 5 insertions(+) base-commit: e9d22f7a6655941fc8b2b942ed354ec780936b3e prerequisite-patch-id: a03a33902f33bcc38091e2cdce9d79f630464c30 prerequisite-patch-id: 505779a1e2094f2ee2f2a55ad44aac5cd1d5342f