[PATCH] drm: meson_drv add shutdown function
Subsystems:
drm drivers , drm drivers and misc gpu patches , drm drivers for amlogic socs , the rest
STALE1977d
REVIEWED: 1 (0M)
1 review trailer.
7 messages,
3 authors,
2021-03-09 · open the first message on its own page
Problem: random stucks on reboot stage about 1/20 stuck/reboots
// debug kernel log
[ 4.496660] reboot: kernel restart prepare CMD:(null)
[ 4.498114] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 4.503949] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
...STUCK...
Solution: add shutdown function to meson_drm driver
// debug kernel log
[ 5.231896] reboot: kernel restart prepare CMD:(null)
[ 5.246135] [drm:meson_drv_shutdown]
...
[ 5.259271] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 5.274688] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
[ 5.338331] reboot: Restarting system
[ 5.358293] psci: PSCI_0_2_FN_SYSTEM_RESET reboot_mode:0 cmd:(null)
bl31 reboot reason: 0xd
bl31 reboot reason: 0x0
system cmd 1.
...REBOOT...
Tested: on VIM1 VIM2 VIM3 VIM3L khadas sbcs - 1000+ successful reboots
and Odroid boards, WeTek Play2 (GXBB)
Tested-by: Christian Hewitt <redacted>
Signed-off-by: Artem Lapkin <redacted>
---
drivers/gpu/drm/meson/meson_drv.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 42c5d3246..693bb1293 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c @@ -482,6 +482,16 @@ static int meson_probe_remote(struct platform_device *pdev,
return count ;
}
+ static void meson_drv_shutdown ( struct platform_device * pdev )
+ {
+ struct meson_drm * priv = dev_get_drvdata ( & pdev -> dev );
+ struct drm_device * drm = priv -> drm ;
+
+ DRM_DEBUG_DRIVER ( " \n " );
+ drm_kms_helper_poll_fini ( drm );
+ drm_atomic_helper_shutdown ( drm );
+ }
+
static int meson_drv_probe ( struct platform_device * pdev )
{
struct component_match * match = NULL ; @@ -553,6 +563,7 @@ static const struct dev_pm_ops meson_drv_pm_ops = {
static struct platform_driver meson_drm_platform_driver = {
. probe = meson_drv_probe ,
+ . shutdown = meson_drv_shutdown ,
. driver = {
. name = "meson-drm" ,
. of_match_table = dt_match , --
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On 02/03/2021 05:22, Artem Lapkin wrote: Problem: random stucks on reboot stage about 1/20 stuck/reboots
// debug kernel log
[ 4.496660] reboot: kernel restart prepare CMD:(null)
[ 4.498114] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 4.503949] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
...STUCK...
Solution: add shutdown function to meson_drm driver
// debug kernel log
[ 5.231896] reboot: kernel restart prepare CMD:(null)
[ 5.246135] [drm:meson_drv_shutdown]
...
[ 5.259271] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 5.274688] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
[ 5.338331] reboot: Restarting system
[ 5.358293] psci: PSCI_0_2_FN_SYSTEM_RESET reboot_mode:0 cmd:(null)
bl31 reboot reason: 0xd
bl31 reboot reason: 0x0
system cmd 1.
...REBOOT...
Tested: on VIM1 VIM2 VIM3 VIM3L khadas sbcs - 1000+ successful reboots
and Odroid boards, WeTek Play2 (GXBB)
Fixes: bbbe775ec5b5 ("drm: Add support for Amlogic Meson Graphic Controller")
quoted hunk Tested-by: Christian Hewitt <redacted>
Signed-off-by: Artem Lapkin <redacted>
---
drivers/gpu/drm/meson/meson_drv.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 42c5d3246..693bb1293 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c @@ -482,6 +482,16 @@ static int meson_probe_remote(struct platform_device *pdev,
return count ;
}
+ static void meson_drv_shutdown ( struct platform_device * pdev )
+ {
+ struct meson_drm * priv = dev_get_drvdata ( & pdev -> dev );
+ struct drm_device * drm = priv -> drm ;
+
+ DRM_DEBUG_DRIVER ( " \n " );
+ drm_kms_helper_poll_fini ( drm );
+ drm_atomic_helper_shutdown ( drm );
+ }
+
static int meson_drv_probe ( struct platform_device * pdev )
{
struct component_match * match = NULL ; @@ -553,6 +563,7 @@ static const struct dev_pm_ops meson_drv_pm_ops = {
static struct platform_driver meson_drm_platform_driver = {
. probe = meson_drv_probe ,
+ . shutdown = meson_drv_shutdown ,
. driver = {
. name = "meson-drm" ,
. of_match_table = dt_match ,
Acked-by: Neil Armstrong <redacted>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Artem Lapkin [off-list ref] writes:
Problem: random stucks on reboot stage about 1/20 stuck/reboots
// debug kernel log
[ 4.496660] reboot: kernel restart prepare CMD:(null)
[ 4.498114] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 4.503949] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
...STUCK...
Solution: add shutdown function to meson_drm driver
// debug kernel log
[ 5.231896] reboot: kernel restart prepare CMD:(null)
[ 5.246135] [drm:meson_drv_shutdown]
...
[ 5.259271] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 5.274688] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
[ 5.338331] reboot: Restarting system
[ 5.358293] psci: PSCI_0_2_FN_SYSTEM_RESET reboot_mode:0 cmd:(null)
bl31 reboot reason: 0xd
bl31 reboot reason: 0x0
system cmd 1.
...REBOOT...
Tested: on VIM1 VIM2 VIM3 VIM3L khadas sbcs - 1000+ successful reboots
and Odroid boards, WeTek Play2 (GXBB)
Tested-by: Christian Hewitt <redacted>
Signed-off-by: Artem Lapkin <redacted>
Acked-by: Kevin Hilman <khilman@baylibre.com>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On 02/03/2021 05:22, Artem Lapkin wrote: quoted hunk Problem: random stucks on reboot stage about 1/20 stuck/reboots
// debug kernel log
[ 4.496660] reboot: kernel restart prepare CMD:(null)
[ 4.498114] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 4.503949] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
...STUCK...
Solution: add shutdown function to meson_drm driver
// debug kernel log
[ 5.231896] reboot: kernel restart prepare CMD:(null)
[ 5.246135] [drm:meson_drv_shutdown]
...
[ 5.259271] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 5.274688] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
[ 5.338331] reboot: Restarting system
[ 5.358293] psci: PSCI_0_2_FN_SYSTEM_RESET reboot_mode:0 cmd:(null)
bl31 reboot reason: 0xd
bl31 reboot reason: 0x0
system cmd 1.
...REBOOT...
Tested: on VIM1 VIM2 VIM3 VIM3L khadas sbcs - 1000+ successful reboots
and Odroid boards, WeTek Play2 (GXBB)
Tested-by: Christian Hewitt <redacted>
Signed-off-by: Artem Lapkin <redacted>
---
drivers/gpu/drm/meson/meson_drv.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 42c5d3246..693bb1293 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c @@ -482,6 +482,16 @@ static int meson_probe_remote(struct platform_device *pdev,
return count ;
}
+ static void meson_drv_shutdown ( struct platform_device * pdev )
+ {
+ struct meson_drm * priv = dev_get_drvdata ( & pdev -> dev );
+ struct drm_device * drm = priv -> drm ;
+
+ DRM_DEBUG_DRIVER ( " \n " );
+ drm_kms_helper_poll_fini ( drm );
+ drm_atomic_helper_shutdown ( drm );
+ }
+
static int meson_drv_probe ( struct platform_device * pdev )
{
struct component_match * match = NULL ; @@ -553,6 +563,7 @@ static const struct dev_pm_ops meson_drv_pm_ops = {
static struct platform_driver meson_drm_platform_driver = {
. probe = meson_drv_probe ,
+ . shutdown = meson_drv_shutdown ,
. driver = {
. name = "meson-drm" ,
. of_match_table = dt_match ,
Applied to drm-misc-fixes,
Thanks !
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Hi Neil,
Neil Armstrong [off-list ref] writes:
On 02/03/2021 05:22, Artem Lapkin wrote: quoted Problem: random stucks on reboot stage about 1/20 stuck/reboots
// debug kernel log
[ 4.496660] reboot: kernel restart prepare CMD:(null)
[ 4.498114] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 4.503949] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
...STUCK...
Solution: add shutdown function to meson_drm driver
// debug kernel log
[ 5.231896] reboot: kernel restart prepare CMD:(null)
[ 5.246135] [drm:meson_drv_shutdown]
...
[ 5.259271] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 5.274688] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
[ 5.338331] reboot: Restarting system
[ 5.358293] psci: PSCI_0_2_FN_SYSTEM_RESET reboot_mode:0 cmd:(null)
bl31 reboot reason: 0xd
bl31 reboot reason: 0x0
system cmd 1.
...REBOOT...
Tested: on VIM1 VIM2 VIM3 VIM3L khadas sbcs - 1000+ successful reboots
and Odroid boards, WeTek Play2 (GXBB)
Tested-by: Christian Hewitt <redacted>
Signed-off-by: Artem Lapkin <redacted>
---
drivers/gpu/drm/meson/meson_drv.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 42c5d3246..693bb1293 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c @@ -482,6 +482,16 @@ static int meson_probe_remote(struct platform_device *pdev,
return count ;
}
+ static void meson_drv_shutdown ( struct platform_device * pdev )
+ {
+ struct meson_drm * priv = dev_get_drvdata ( & pdev -> dev );
+ struct drm_device * drm = priv -> drm ;
+
+ DRM_DEBUG_DRIVER ( " \n " );
+ drm_kms_helper_poll_fini ( drm );
+ drm_atomic_helper_shutdown ( drm );
+ }
+
static int meson_drv_probe ( struct platform_device * pdev )
{
struct component_match * match = NULL ; @@ -553,6 +563,7 @@ static const struct dev_pm_ops meson_drv_pm_ops = {
static struct platform_driver meson_drm_platform_driver = {
. probe = meson_drv_probe ,
+ . shutdown = meson_drv_shutdown ,
. driver = {
. name = "meson-drm" ,
. of_match_table = dt_match ,
Applied to drm-misc-fixes,
Could you submit this as a fix to stable (v5.10+) also?
Thanks,
Kevin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On 09/03/2021 18:13, Kevin Hilman wrote: Hi Neil,
Neil Armstrong [off-list ref] writes:
quoted On 02/03/2021 05:22, Artem Lapkin wrote: quoted Problem: random stucks on reboot stage about 1/20 stuck/reboots
// debug kernel log
[ 4.496660] reboot: kernel restart prepare CMD:(null)
[ 4.498114] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 4.503949] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
...STUCK...
Solution: add shutdown function to meson_drm driver
// debug kernel log
[ 5.231896] reboot: kernel restart prepare CMD:(null)
[ 5.246135] [drm:meson_drv_shutdown]
...
[ 5.259271] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 5.274688] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
[ 5.338331] reboot: Restarting system
[ 5.358293] psci: PSCI_0_2_FN_SYSTEM_RESET reboot_mode:0 cmd:(null)
bl31 reboot reason: 0xd
bl31 reboot reason: 0x0
system cmd 1.
...REBOOT...
Tested: on VIM1 VIM2 VIM3 VIM3L khadas sbcs - 1000+ successful reboots
and Odroid boards, WeTek Play2 (GXBB)
Tested-by: Christian Hewitt <redacted>
Signed-off-by: Artem Lapkin <redacted>
---
drivers/gpu/drm/meson/meson_drv.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 42c5d3246..693bb1293 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c @@ -482,6 +482,16 @@ static int meson_probe_remote(struct platform_device *pdev,
return count ;
}
+ static void meson_drv_shutdown ( struct platform_device * pdev )
+ {
+ struct meson_drm * priv = dev_get_drvdata ( & pdev -> dev );
+ struct drm_device * drm = priv -> drm ;
+
+ DRM_DEBUG_DRIVER ( " \n " );
+ drm_kms_helper_poll_fini ( drm );
+ drm_atomic_helper_shutdown ( drm );
+ }
+
static int meson_drv_probe ( struct platform_device * pdev )
{
struct component_match * match = NULL ; @@ -553,6 +563,7 @@ static const struct dev_pm_ops meson_drv_pm_ops = {
static struct platform_driver meson_drm_platform_driver = {
. probe = meson_drv_probe ,
+ . shutdown = meson_drv_shutdown ,
. driver = {
. name = "meson-drm" ,
. of_match_table = dt_match ,
Applied to drm-misc-fixes,
Could you submit this as a fix to stable (v5.10+) also?
It should be done automagically since I added the Fixes tag
neil
Thanks,
Kevin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Neil Armstrong [off-list ref] writes:
On 09/03/2021 18:13, Kevin Hilman wrote: quoted Hi Neil,
Neil Armstrong [off-list ref] writes:
quoted On 02/03/2021 05:22, Artem Lapkin wrote: quoted Problem: random stucks on reboot stage about 1/20 stuck/reboots
// debug kernel log
[ 4.496660] reboot: kernel restart prepare CMD:(null)
[ 4.498114] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 4.503949] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
...STUCK...
Solution: add shutdown function to meson_drm driver
// debug kernel log
[ 5.231896] reboot: kernel restart prepare CMD:(null)
[ 5.246135] [drm:meson_drv_shutdown]
...
[ 5.259271] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown begin
[ 5.274688] meson_ee_pwrc c883c000.system-controller:power-controller: shutdown domain 0:VPU...
[ 5.338331] reboot: Restarting system
[ 5.358293] psci: PSCI_0_2_FN_SYSTEM_RESET reboot_mode:0 cmd:(null)
bl31 reboot reason: 0xd
bl31 reboot reason: 0x0
system cmd 1.
...REBOOT...
Tested: on VIM1 VIM2 VIM3 VIM3L khadas sbcs - 1000+ successful reboots
and Odroid boards, WeTek Play2 (GXBB)
Tested-by: Christian Hewitt <redacted>
Signed-off-by: Artem Lapkin <redacted>
---
drivers/gpu/drm/meson/meson_drv.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 42c5d3246..693bb1293 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c @@ -482,6 +482,16 @@ static int meson_probe_remote(struct platform_device *pdev,
return count ;
}
+ static void meson_drv_shutdown ( struct platform_device * pdev )
+ {
+ struct meson_drm * priv = dev_get_drvdata ( & pdev -> dev );
+ struct drm_device * drm = priv -> drm ;
+
+ DRM_DEBUG_DRIVER ( " \n " );
+ drm_kms_helper_poll_fini ( drm );
+ drm_atomic_helper_shutdown ( drm );
+ }
+
static int meson_drv_probe ( struct platform_device * pdev )
{
struct component_match * match = NULL ; @@ -553,6 +563,7 @@ static const struct dev_pm_ops meson_drv_pm_ops = {
static struct platform_driver meson_drm_platform_driver = {
. probe = meson_drv_probe ,
+ . shutdown = meson_drv_shutdown ,
. driver = {
. name = "meson-drm" ,
. of_match_table = dt_match ,
Applied to drm-misc-fixes,
Could you submit this as a fix to stable (v5.10+) also?
It should be done automagically since I added the Fixes tag
Oh, I didn't see the fixes tag, sorry.
Thanks!
Kevin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel