Message ID | 1696632910-21942-1-git-send-email-quic_khsieh@quicinc.com |
---|---|
Headers | show |
Series | incorporate pm runtime framework and eDP clean up | expand |
On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh <quic_khsieh@quicinc.com> wrote: > > Original both parser->parse() and dp_power_client_init() are done at > dp_display_bind() since eDP population is done at binding time. > In the preparation of having eDP population done at probe() time, > move both function from dp_display_bind() to dp_display_probe(). > > Changes in v6: > -- move dp_power_client_deinit() to remove() > > Changes in v5: > -- explain why parser->parse() and dp_power_client_init() are moved to > probe time > -- tear down sub modules if failed > > Changes in v4: > -- split this patch out of "incorporate pm_runtime framework into DP > driver" patch > > Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com> > --- > drivers/gpu/drm/msm/dp/dp_display.c | 24 +++++++++++++----------- > 1 file changed, 13 insertions(+), 11 deletions(-) Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Quoting Kuogee Hsieh (2023-10-06 15:55:03) > The purpose of this patch series is to incorporate pm runtime framework > into MSM eDP/DP driver so that eDP panel can be detected by DRM eDP panel > driver during system probe time. During incorporating procedure, original > customized pm realted fucntions, such as dp_pm_prepare(), dp_pm_suspend(), > dp_pm_resume() and dp_pm_prepare(), are removed and replaced with functions > provided by pm runtiem framework such as pm_runtime_force_suspend() and > pm_runtime_force_resume(). In addition, both eDP aux-bus and irq handler > are bound at system probe time too. > > Kuogee Hsieh (7): > drm/msm/dp: tie dp_display_irq_handler() with dp driver > drm/msm/dp: rename is_connected with link_ready > drm/msm/dp: use drm_bridge_hpd_notify() to report HPD status changes > drm/msm/dp: move parser->parse() and dp_power_client_init() to probe > drm/msm/dp: incorporate pm_runtime framework into DP driver > drm/msm/dp: delete EV_HPD_INIT_SETUP > drm/msm/dp: move of_dp_aux_populate_bus() to eDP probe() > > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 4 - > drivers/gpu/drm/msm/dp/dp_aux.c | 39 +++- > drivers/gpu/drm/msm/dp/dp_display.c | 333 ++++++++++++-------------------- Tested-by: Stephen Boyd <swboyd@chromium.org> # Trogdor.Lazor I ran some suspend cycles too with the lid open and closed.
Verified this fixes the "[drm:drm_mode_config_helper_resume] *ERROR* Failed to resume (-107)" issue https://gitlab.freedesktop.org/drm/msm/-/issues/25 Tested-by: Leonard Lausen <leonard@lausen.nl> # on sc7180 lazor On 10/6/23 18:55, Kuogee Hsieh wrote: > The purpose of this patch series is to incorporate pm runtime framework > into MSM eDP/DP driver so that eDP panel can be detected by DRM eDP panel > driver during system probe time. During incorporating procedure, original > customized pm realted fucntions, such as dp_pm_prepare(), dp_pm_suspend(), > dp_pm_resume() and dp_pm_prepare(), are removed and replaced with functions > provided by pm runtiem framework such as pm_runtime_force_suspend() and > pm_runtime_force_resume(). In addition, both eDP aux-bus and irq handler > are bound at system probe time too. > > Kuogee Hsieh (7): > drm/msm/dp: tie dp_display_irq_handler() with dp driver > drm/msm/dp: rename is_connected with link_ready > drm/msm/dp: use drm_bridge_hpd_notify() to report HPD status changes > drm/msm/dp: move parser->parse() and dp_power_client_init() to probe > drm/msm/dp: incorporate pm_runtime framework into DP driver > drm/msm/dp: delete EV_HPD_INIT_SETUP > drm/msm/dp: move of_dp_aux_populate_bus() to eDP probe() > > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 4 - > drivers/gpu/drm/msm/dp/dp_aux.c | 39 +++- > drivers/gpu/drm/msm/dp/dp_display.c | 333 ++++++++++++-------------------- > drivers/gpu/drm/msm/dp/dp_display.h | 3 +- > drivers/gpu/drm/msm/dp/dp_drm.c | 14 +- > drivers/gpu/drm/msm/dp/dp_power.c | 16 -- > drivers/gpu/drm/msm/dp/dp_power.h | 11 -- > drivers/gpu/drm/msm/msm_drv.h | 5 - > 8 files changed, 161 insertions(+), 264 deletions(-) >
On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh <quic_khsieh@quicinc.com> wrote: > > The purpose of this patch series is to incorporate pm runtime framework > into MSM eDP/DP driver so that eDP panel can be detected by DRM eDP panel > driver during system probe time. During incorporating procedure, original > customized pm realted fucntions, such as dp_pm_prepare(), dp_pm_suspend(), > dp_pm_resume() and dp_pm_prepare(), are removed and replaced with functions > provided by pm runtiem framework such as pm_runtime_force_suspend() and > pm_runtime_force_resume(). In addition, both eDP aux-bus and irq handler > are bound at system probe time too. With this patchset in place I can crash the board using the following sequence (SM8350-HDK): - plug the USBC DP dongle - run modetest at any mode, don't press Enter yet - unplug the dongle - press Enter to stop modetest => the board resets to Sahara. Please ping me if you need any additional information from my side.
On 11/6/2023 5:55 PM, Dmitry Baryshkov wrote: > On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh <quic_khsieh@quicinc.com> wrote: >> The purpose of this patch series is to incorporate pm runtime framework >> into MSM eDP/DP driver so that eDP panel can be detected by DRM eDP panel >> driver during system probe time. During incorporating procedure, original >> customized pm realted fucntions, such as dp_pm_prepare(), dp_pm_suspend(), >> dp_pm_resume() and dp_pm_prepare(), are removed and replaced with functions >> provided by pm runtiem framework such as pm_runtime_force_suspend() and >> pm_runtime_force_resume(). In addition, both eDP aux-bus and irq handler >> are bound at system probe time too. > > With this patchset in place I can crash the board using the following > sequence (SM8350-HDK): > > - plug the USBC DP dongle > - run modetest at any mode, don't press Enter yet > - unplug the dongle > - press Enter to stop modetest > > => the board resets to Sahara. > > Please ping me if you need any additional information from my side. questiosn, 1) which dongle are you used? 2) what code branch shoud I used to duplicate this problem. I can not duplicate system crash problem at my setup kodiak (SM7325) chrome book with my PM runtime patch series. my code base is Linux 6.6-rc2 + pm runtime patch series (7 patches) I did: 1) plugin either apple dongle (DP-to-HDMI) + 1080p display or DP typeC cable directly to 1080p display 2) stop ui 3) /usr/bin/modetest -M msm -s 34:1920x1080 (see test pattern show at display) 4) unplug apple dongle or DP typeC cable 5) hit enter key 6) start ui 7) display back to login page of chrome book
On Tue, 7 Nov 2023 at 23:01, Kuogee Hsieh <quic_khsieh@quicinc.com> wrote: > > > On 11/6/2023 5:55 PM, Dmitry Baryshkov wrote: > > On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh <quic_khsieh@quicinc.com> wrote: > >> The purpose of this patch series is to incorporate pm runtime framework > >> into MSM eDP/DP driver so that eDP panel can be detected by DRM eDP panel > >> driver during system probe time. During incorporating procedure, original > >> customized pm realted fucntions, such as dp_pm_prepare(), dp_pm_suspend(), > >> dp_pm_resume() and dp_pm_prepare(), are removed and replaced with functions > >> provided by pm runtiem framework such as pm_runtime_force_suspend() and > >> pm_runtime_force_resume(). In addition, both eDP aux-bus and irq handler > >> are bound at system probe time too. > > > > With this patchset in place I can crash the board using the following > > sequence (SM8350-HDK): > > > > - plug the USBC DP dongle > > - run modetest at any mode, don't press Enter yet > > - unplug the dongle > > - press Enter to stop modetest > > > > => the board resets to Sahara. > > > > Please ping me if you need any additional information from my side. > > questiosn, > > 1) which dongle are you used? I have used several Dell and Hama USB-C dongles. > > 2) what code branch shoud I used to duplicate this problem. I have pushed my kernel tree to git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm I had several UCSI patches on top, but they should not be relevant. > > I can not duplicate system crash problem at my setup kodiak (SM7325) > chrome book with my PM runtime patch series. > > my code base is Linux 6.6-rc2 + pm runtime patch series (7 patches) > > I did: > > 1) plugin either apple dongle (DP-to-HDMI) + 1080p display or DP typeC > cable directly to 1080p display > > 2) stop ui > > 3) /usr/bin/modetest -M msm -s 34:1920x1080 (see test pattern show at > display) > > 4) unplug apple dongle or DP typeC cable > > 5) hit enter key > > 6) start ui > > 7) display back to login page of chrome book > >
On 11/7/2023 1:23 PM, Dmitry Baryshkov wrote: > On Tue, 7 Nov 2023 at 23:01, Kuogee Hsieh <quic_khsieh@quicinc.com> wrote: >> >> On 11/6/2023 5:55 PM, Dmitry Baryshkov wrote: >>> On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh <quic_khsieh@quicinc.com> wrote: >>>> The purpose of this patch series is to incorporate pm runtime framework >>>> into MSM eDP/DP driver so that eDP panel can be detected by DRM eDP panel >>>> driver during system probe time. During incorporating procedure, original >>>> customized pm realted fucntions, such as dp_pm_prepare(), dp_pm_suspend(), >>>> dp_pm_resume() and dp_pm_prepare(), are removed and replaced with functions >>>> provided by pm runtiem framework such as pm_runtime_force_suspend() and >>>> pm_runtime_force_resume(). In addition, both eDP aux-bus and irq handler >>>> are bound at system probe time too. >>> With this patchset in place I can crash the board using the following >>> sequence (SM8350-HDK): >>> >>> - plug the USBC DP dongle >>> - run modetest at any mode, don't press Enter yet >>> - unplug the dongle >>> - press Enter to stop modetest >>> >>> => the board resets to Sahara. >>> >>> Please ping me if you need any additional information from my side. >> questiosn, >> >> 1) which dongle are you used? > I have used several Dell and Hama USB-C dongles. > >> 2) what code branch shoud I used to duplicate this problem. > I have pushed my kernel tree to > git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm > I had several UCSI patches on top, but they should not be relevant. git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm <== I synced out his branch and it is still work at my chromebook Kodiak DUT. > >> I can not duplicate system crash problem at my setup kodiak (SM7325) >> chrome book with my PM runtime patch series. >> >> my code base is Linux 6.6-rc2 + pm runtime patch series (7 patches) >> >> I did: >> >> 1) plugin either apple dongle (DP-to-HDMI) + 1080p display or DP typeC >> cable directly to 1080p display >> >> 2) stop ui >> >> 3) /usr/bin/modetest -M msm -s 34:1920x1080 (see test pattern show at >> display) >> >> 4) unplug apple dongle or DP typeC cable >> >> 5) hit enter key >> >> 6) start ui >> >> 7) display back to login page of chrome book >> >> >
On 11/8/2023 10:10 AM, Kuogee Hsieh wrote: > > On 11/7/2023 1:23 PM, Dmitry Baryshkov wrote: >> On Tue, 7 Nov 2023 at 23:01, Kuogee Hsieh <quic_khsieh@quicinc.com> >> wrote: >>> >>> On 11/6/2023 5:55 PM, Dmitry Baryshkov wrote: >>>> On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh <quic_khsieh@quicinc.com> >>>> wrote: >>>>> The purpose of this patch series is to incorporate pm runtime >>>>> framework >>>>> into MSM eDP/DP driver so that eDP panel can be detected by DRM eDP >>>>> panel >>>>> driver during system probe time. During incorporating procedure, >>>>> original >>>>> customized pm realted fucntions, such as dp_pm_prepare(), >>>>> dp_pm_suspend(), >>>>> dp_pm_resume() and dp_pm_prepare(), are removed and replaced with >>>>> functions >>>>> provided by pm runtiem framework such as pm_runtime_force_suspend() >>>>> and >>>>> pm_runtime_force_resume(). In addition, both eDP aux-bus and irq >>>>> handler >>>>> are bound at system probe time too. >>>> With this patchset in place I can crash the board using the following >>>> sequence (SM8350-HDK): >>>> >>>> - plug the USBC DP dongle >>>> - run modetest at any mode, don't press Enter yet >>>> - unplug the dongle >>>> - press Enter to stop modetest >>>> >>>> => the board resets to Sahara. >>>> >>>> Please ping me if you need any additional information from my side. >>> questiosn, >>> >>> 1) which dongle are you used? >> I have used several Dell and Hama USB-C dongles. >> >>> 2) what code branch shoud I used to duplicate this problem. >> I have pushed my kernel tree to >> git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm >> I had several UCSI patches on top, but they should not be relevant. > git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm <== I > synced out his branch and it is still work at my chromebook Kodiak DUT. >> Perhaps the gap in test results with the same tree is due to internal hpd vs hpd pin. We need to try this on a device which does not use internal hpd. >>> I can not duplicate system crash problem at my setup kodiak (SM7325) >>> chrome book with my PM runtime patch series. >>> >>> my code base is Linux 6.6-rc2 + pm runtime patch series (7 patches) >>> >>> I did: >>> >>> 1) plugin either apple dongle (DP-to-HDMI) + 1080p display or DP typeC >>> cable directly to 1080p display >>> >>> 2) stop ui >>> >>> 3) /usr/bin/modetest -M msm -s 34:1920x1080 (see test pattern show at >>> display) >>> >>> 4) unplug apple dongle or DP typeC cable >>> >>> 5) hit enter key >>> >>> 6) start ui >>> >>> 7) display back to login page of chrome book >>> >>> >>
On 11/8/2023 10:27 AM, Abhinav Kumar wrote: > > > On 11/8/2023 10:10 AM, Kuogee Hsieh wrote: >> >> On 11/7/2023 1:23 PM, Dmitry Baryshkov wrote: >>> On Tue, 7 Nov 2023 at 23:01, Kuogee Hsieh <quic_khsieh@quicinc.com> >>> wrote: >>>> >>>> On 11/6/2023 5:55 PM, Dmitry Baryshkov wrote: >>>>> On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh >>>>> <quic_khsieh@quicinc.com> wrote: >>>>>> The purpose of this patch series is to incorporate pm runtime >>>>>> framework >>>>>> into MSM eDP/DP driver so that eDP panel can be detected by DRM >>>>>> eDP panel >>>>>> driver during system probe time. During incorporating procedure, >>>>>> original >>>>>> customized pm realted fucntions, such as dp_pm_prepare(), >>>>>> dp_pm_suspend(), >>>>>> dp_pm_resume() and dp_pm_prepare(), are removed and replaced with >>>>>> functions >>>>>> provided by pm runtiem framework such as >>>>>> pm_runtime_force_suspend() and >>>>>> pm_runtime_force_resume(). In addition, both eDP aux-bus and irq >>>>>> handler >>>>>> are bound at system probe time too. >>>>> With this patchset in place I can crash the board using the following >>>>> sequence (SM8350-HDK): >>>>> >>>>> - plug the USBC DP dongle >>>>> - run modetest at any mode, don't press Enter yet >>>>> - unplug the dongle >>>>> - press Enter to stop modetest >>>>> >>>>> => the board resets to Sahara. >>>>> >>>>> Please ping me if you need any additional information from my side. >>>> questiosn, >>>> >>>> 1) which dongle are you used? >>> I have used several Dell and Hama USB-C dongles. >>> >>>> 2) what code branch shoud I used to duplicate this problem. >>> I have pushed my kernel tree to >>> git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm >>> I had several UCSI patches on top, but they should not be relevant. >> git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm <== >> I synced out his branch and it is still work at my chromebook Kodiak >> DUT. >>> > > Perhaps the gap in test results with the same tree is due to internal > hpd vs hpd pin. We need to try this on a device which does not use > internal hpd. Hi Dmitry, I have two more questions, 1) are you see test pattern shows at external DP when you run modetest? 2) is *.kcrash file created under /var/spool/crash/ when system crashed. If it is, can you share it? Thanks, > >>>> I can not duplicate system crash problem at my setup kodiak (SM7325) >>>> chrome book with my PM runtime patch series. >>>> >>>> my code base is Linux 6.6-rc2 + pm runtime patch series (7 patches) >>>> >>>> I did: >>>> >>>> 1) plugin either apple dongle (DP-to-HDMI) + 1080p display or DP typeC >>>> cable directly to 1080p display >>>> >>>> 2) stop ui >>>> >>>> 3) /usr/bin/modetest -M msm -s 34:1920x1080 (see test pattern show at >>>> display) >>>> >>>> 4) unplug apple dongle or DP typeC cable >>>> >>>> 5) hit enter key >>>> >>>> 6) start ui >>>> >>>> 7) display back to login page of chrome book >>>> >>>> >>>
Hello Kuogee, On Thu, 9 Nov 2023 at 19:51, Kuogee Hsieh <quic_khsieh@quicinc.com> wrote: > > > On 11/8/2023 10:27 AM, Abhinav Kumar wrote: > > > > > > On 11/8/2023 10:10 AM, Kuogee Hsieh wrote: > >> > >> On 11/7/2023 1:23 PM, Dmitry Baryshkov wrote: > >>> On Tue, 7 Nov 2023 at 23:01, Kuogee Hsieh <quic_khsieh@quicinc.com> > >>> wrote: > >>>> > >>>> On 11/6/2023 5:55 PM, Dmitry Baryshkov wrote: > >>>>> On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh > >>>>> <quic_khsieh@quicinc.com> wrote: > >>>>>> The purpose of this patch series is to incorporate pm runtime > >>>>>> framework > >>>>>> into MSM eDP/DP driver so that eDP panel can be detected by DRM > >>>>>> eDP panel > >>>>>> driver during system probe time. During incorporating procedure, > >>>>>> original > >>>>>> customized pm realted fucntions, such as dp_pm_prepare(), > >>>>>> dp_pm_suspend(), > >>>>>> dp_pm_resume() and dp_pm_prepare(), are removed and replaced with > >>>>>> functions > >>>>>> provided by pm runtiem framework such as > >>>>>> pm_runtime_force_suspend() and > >>>>>> pm_runtime_force_resume(). In addition, both eDP aux-bus and irq > >>>>>> handler > >>>>>> are bound at system probe time too. > >>>>> With this patchset in place I can crash the board using the following > >>>>> sequence (SM8350-HDK): > >>>>> > >>>>> - plug the USBC DP dongle > >>>>> - run modetest at any mode, don't press Enter yet > >>>>> - unplug the dongle > >>>>> - press Enter to stop modetest > >>>>> > >>>>> => the board resets to Sahara. > >>>>> > >>>>> Please ping me if you need any additional information from my side. > >>>> questiosn, > >>>> > >>>> 1) which dongle are you used? > >>> I have used several Dell and Hama USB-C dongles. > >>> > >>>> 2) what code branch shoud I used to duplicate this problem. > >>> I have pushed my kernel tree to > >>> git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm > >>> I had several UCSI patches on top, but they should not be relevant. > >> git.codelinaro.org/dmitry.baryshkov/linux.git, branch test-dp-rpm <== > >> I synced out his branch and it is still work at my chromebook Kodiak > >> DUT. > >>> > > > > Perhaps the gap in test results with the same tree is due to internal > > hpd vs hpd pin. We need to try this on a device which does not use > > internal hpd. > > > Hi Dmitry, First of all, I was able to reproduce the issue without this patch series. Kuogee, I must ask your pardon, it is not a regression and it is not caused by this series. So, we have a bug, but not a regression. Second, a stable reproducer: When you unplug and re-plug the dongle, switch the orientation of the dongle. This way the system crashes in 100% of cases. Here are the last messages that I see on my console: trying to open device 'tilcdc'...failed trying to open device 'msm'...done setting mode 3840x2160-30.00Hz on connectors 34, crtc 84 failed to set gamma: Function not implemented [ 25.504828] [drm:dpu_encoder_phys_vid_wait_for_commit_done:487] [dpu error]vblank timeout [ 25.515024] [drm:dpu_kms_wait_for_commit_done:494] [dpu error]wait for commit done returned -110 [ 25.621146] [drm:dpu_encoder_frame_done_timeout:2342] [dpu error]enc33 frame done timeout Format: Log Type - Time(microsec) - Message - Optional Info Log Type: B - Since Boot(Power On Reset), D - Delta, S - Statistic S - QC_IMAGE_VERSION_STRING=BOOT.MXF.1.0-00848-LAHAINA-1 > > I have two more questions, > > 1) are you see test pattern shows at external DP when you run modetest? Yes, I see the pattern > 2) is *.kcrash file created under /var/spool/crash/ when system crashed. > If it is, can you share it? There is no kcrash, as there is no kernel crash. The system reboots to the download mode. > > Thanks, > > > > >>>> I can not duplicate system crash problem at my setup kodiak (SM7325) > >>>> chrome book with my PM runtime patch series. > >>>> > >>>> my code base is Linux 6.6-rc2 + pm runtime patch series (7 patches) > >>>> > >>>> I did: > >>>> > >>>> 1) plugin either apple dongle (DP-to-HDMI) + 1080p display or DP typeC > >>>> cable directly to 1080p display > >>>> > >>>> 2) stop ui > >>>> > >>>> 3) /usr/bin/modetest -M msm -s 34:1920x1080 (see test pattern show at > >>>> display) > >>>> > >>>> 4) unplug apple dongle or DP typeC cable > >>>> > >>>> 5) hit enter key > >>>> > >>>> 6) start ui > >>>> > >>>> 7) display back to login page of chrome book > >>>> > >>>> > >>>