From: Thierry Reding <thierry.reding@gmail.com>
To: Marc Zyngier <maz@kernel.org>
Cc: dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org,
linux-kernel@vger.kernel.org,
Jonathan Hunter <jonathanh@nvidia.com>
Subject: Re: [PATCH] drm/tegra: sor: Ensure regulators are disabled on teardown
Date: Tue, 10 Nov 2020 18:37:42 +0100 [thread overview]
Message-ID: <20201110173742.GB2297135@ulmo> (raw)
In-Reply-To: <20201013095158.311137-1-maz@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 3988 bytes --]
On Tue, Oct 13, 2020 at 10:51:58AM +0100, Marc Zyngier wrote:
> The Tegra SOR driver uses the devm infrastructure to request regulators,
> but enables them without registering them with the infrastructure.
>
> This results in the following splat if probing fails for any odd resaon
> (such as dependencies not being available):
>
> [ 8.974187] tegra-sor 15580000.sor: cannot get HDMI supply: -517
> [ 9.414403] tegra-sor 15580000.sor: failed to probe HDMI: -517
> [ 9.421240] ------------[ cut here ]------------
> [ 9.425879] WARNING: CPU: 1 PID: 164 at drivers/regulator/core.c:2089 _regulator_put.part.0+0x16c/0x174
> [ 9.435259] Modules linked in: tegra_drm(E+) cec(E) ahci_tegra(E) drm_kms_helper(E) drm(E) libahci_platform(E) libahci(E) max77620_regulator(E) xhci_tegra(E+) sdhci_tegra(E) xhci_hcd(E) libata(E) sdhci_pltfm(E) cqhci(E) fixed(E) usbcore(E) scsi_mod(E) sdhci(E) host1x(E)
> [ 9.459211] CPU: 1 PID: 164 Comm: systemd-udevd Tainted: G S D W E 5.9.0-rc7-00298-gf6337624c4fe #1980
> [ 9.469285] Hardware name: NVIDIA Jetson TX2 Developer Kit (DT)
> [ 9.475202] pstate: 80000005 (Nzcv daif -PAN -UAO BTYPE=--)
> [ 9.480784] pc : _regulator_put.part.0+0x16c/0x174
> [ 9.485581] lr : regulator_put+0x44/0x60
> [ 9.489501] sp : ffffffc011d837b0
> [ 9.492814] x29: ffffffc011d837b0 x28: ffffff81dd085900
> [ 9.498141] x27: ffffff81de1c8ec0 x26: ffffff81de1c8c10
> [ 9.503464] x25: ffffff81dd085800 x24: ffffffc008f2c6b0
> [ 9.508790] x23: ffffffc0117373f0 x22: 0000000000000005
> [ 9.514101] x21: ffffff81dd085900 x20: ffffffc01172b098
> [ 9.515822] ata1: SATA link down (SStatus 0 SControl 300)
> [ 9.519426] x19: ffffff81dd085100 x18: 0000000000000030
> [ 9.530122] x17: 0000000000000000 x16: 0000000000000000
> [ 9.535453] x15: 0000000000000000 x14: 000000000000038f
> [ 9.540777] x13: 0000000000000003 x12: 0000000000000040
> [ 9.546105] x11: ffffff81eb800000 x10: 0000000000000ae0
> [ 9.551417] x9 : ffffffc0106fea24 x8 : ffffff81de83e6c0
> [ 9.556728] x7 : 0000000000000018 x6 : 00000000000003c3
> [ 9.562064] x5 : 0000000000005660 x4 : 0000000000000000
> [ 9.567392] x3 : ffffffc01172b388 x2 : ffffff81de83db80
> [ 9.572702] x1 : 0000000000000000 x0 : 0000000000000001
> [ 9.578034] Call trace:
> [ 9.580494] _regulator_put.part.0+0x16c/0x174
> [ 9.584940] regulator_put+0x44/0x60
> [ 9.588522] devm_regulator_release+0x20/0x2c
> [ 9.592885] release_nodes+0x1c8/0x2c0
> [ 9.596636] devres_release_all+0x44/0x6c
> [ 9.600649] really_probe+0x1ec/0x504
> [ 9.604316] driver_probe_device+0x100/0x170
> [ 9.608589] device_driver_attach+0xcc/0xd4
> [ 9.612774] __driver_attach+0xb0/0x17c
> [ 9.616614] bus_for_each_dev+0x7c/0xd4
> [ 9.620450] driver_attach+0x30/0x3c
> [ 9.624027] bus_add_driver+0x154/0x250
> [ 9.627867] driver_register+0x84/0x140
> [ 9.631719] __platform_register_drivers+0xa0/0x180
> [ 9.636660] host1x_drm_init+0x60/0x1000 [tegra_drm]
> [ 9.641629] do_one_initcall+0x54/0x2d0
> [ 9.645490] do_init_module+0x68/0x29c
> [ 9.649244] load_module+0x2178/0x26c0
> [ 9.652997] __do_sys_finit_module+0xb0/0x120
> [ 9.657356] __arm64_sys_finit_module+0x2c/0x40
> [ 9.661902] el0_svc_common.constprop.0+0x80/0x240
> [ 9.666701] do_el0_svc+0x30/0xa0
> [ 9.670022] el0_svc+0x18/0x50
> [ 9.673081] el0_sync_handler+0x90/0x318
> [ 9.677006] el0_sync+0x158/0x180
> [ 9.680324] ---[ end trace 90f6c89d62d85ff6 ]---
>
> Instead, let's register a callback that will disable the regulators
> on teardown. This allows for the removal of the .remove callbacks,
> which are not needed anymore.
>
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> ---
> drivers/gpu/drm/tegra/sor.c | 59 +++++++++++++++----------------------
> 1 file changed, 24 insertions(+), 35 deletions(-)
Applied, thanks.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Thierry Reding <thierry.reding@gmail.com>
To: Marc Zyngier <maz@kernel.org>
Cc: linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org,
dri-devel@lists.freedesktop.org,
Jonathan Hunter <jonathanh@nvidia.com>
Subject: Re: [PATCH] drm/tegra: sor: Ensure regulators are disabled on teardown
Date: Tue, 10 Nov 2020 18:37:42 +0100 [thread overview]
Message-ID: <20201110173742.GB2297135@ulmo> (raw)
In-Reply-To: <20201013095158.311137-1-maz@kernel.org>
[-- Attachment #1.1: Type: text/plain, Size: 3988 bytes --]
On Tue, Oct 13, 2020 at 10:51:58AM +0100, Marc Zyngier wrote:
> The Tegra SOR driver uses the devm infrastructure to request regulators,
> but enables them without registering them with the infrastructure.
>
> This results in the following splat if probing fails for any odd resaon
> (such as dependencies not being available):
>
> [ 8.974187] tegra-sor 15580000.sor: cannot get HDMI supply: -517
> [ 9.414403] tegra-sor 15580000.sor: failed to probe HDMI: -517
> [ 9.421240] ------------[ cut here ]------------
> [ 9.425879] WARNING: CPU: 1 PID: 164 at drivers/regulator/core.c:2089 _regulator_put.part.0+0x16c/0x174
> [ 9.435259] Modules linked in: tegra_drm(E+) cec(E) ahci_tegra(E) drm_kms_helper(E) drm(E) libahci_platform(E) libahci(E) max77620_regulator(E) xhci_tegra(E+) sdhci_tegra(E) xhci_hcd(E) libata(E) sdhci_pltfm(E) cqhci(E) fixed(E) usbcore(E) scsi_mod(E) sdhci(E) host1x(E)
> [ 9.459211] CPU: 1 PID: 164 Comm: systemd-udevd Tainted: G S D W E 5.9.0-rc7-00298-gf6337624c4fe #1980
> [ 9.469285] Hardware name: NVIDIA Jetson TX2 Developer Kit (DT)
> [ 9.475202] pstate: 80000005 (Nzcv daif -PAN -UAO BTYPE=--)
> [ 9.480784] pc : _regulator_put.part.0+0x16c/0x174
> [ 9.485581] lr : regulator_put+0x44/0x60
> [ 9.489501] sp : ffffffc011d837b0
> [ 9.492814] x29: ffffffc011d837b0 x28: ffffff81dd085900
> [ 9.498141] x27: ffffff81de1c8ec0 x26: ffffff81de1c8c10
> [ 9.503464] x25: ffffff81dd085800 x24: ffffffc008f2c6b0
> [ 9.508790] x23: ffffffc0117373f0 x22: 0000000000000005
> [ 9.514101] x21: ffffff81dd085900 x20: ffffffc01172b098
> [ 9.515822] ata1: SATA link down (SStatus 0 SControl 300)
> [ 9.519426] x19: ffffff81dd085100 x18: 0000000000000030
> [ 9.530122] x17: 0000000000000000 x16: 0000000000000000
> [ 9.535453] x15: 0000000000000000 x14: 000000000000038f
> [ 9.540777] x13: 0000000000000003 x12: 0000000000000040
> [ 9.546105] x11: ffffff81eb800000 x10: 0000000000000ae0
> [ 9.551417] x9 : ffffffc0106fea24 x8 : ffffff81de83e6c0
> [ 9.556728] x7 : 0000000000000018 x6 : 00000000000003c3
> [ 9.562064] x5 : 0000000000005660 x4 : 0000000000000000
> [ 9.567392] x3 : ffffffc01172b388 x2 : ffffff81de83db80
> [ 9.572702] x1 : 0000000000000000 x0 : 0000000000000001
> [ 9.578034] Call trace:
> [ 9.580494] _regulator_put.part.0+0x16c/0x174
> [ 9.584940] regulator_put+0x44/0x60
> [ 9.588522] devm_regulator_release+0x20/0x2c
> [ 9.592885] release_nodes+0x1c8/0x2c0
> [ 9.596636] devres_release_all+0x44/0x6c
> [ 9.600649] really_probe+0x1ec/0x504
> [ 9.604316] driver_probe_device+0x100/0x170
> [ 9.608589] device_driver_attach+0xcc/0xd4
> [ 9.612774] __driver_attach+0xb0/0x17c
> [ 9.616614] bus_for_each_dev+0x7c/0xd4
> [ 9.620450] driver_attach+0x30/0x3c
> [ 9.624027] bus_add_driver+0x154/0x250
> [ 9.627867] driver_register+0x84/0x140
> [ 9.631719] __platform_register_drivers+0xa0/0x180
> [ 9.636660] host1x_drm_init+0x60/0x1000 [tegra_drm]
> [ 9.641629] do_one_initcall+0x54/0x2d0
> [ 9.645490] do_init_module+0x68/0x29c
> [ 9.649244] load_module+0x2178/0x26c0
> [ 9.652997] __do_sys_finit_module+0xb0/0x120
> [ 9.657356] __arm64_sys_finit_module+0x2c/0x40
> [ 9.661902] el0_svc_common.constprop.0+0x80/0x240
> [ 9.666701] do_el0_svc+0x30/0xa0
> [ 9.670022] el0_svc+0x18/0x50
> [ 9.673081] el0_sync_handler+0x90/0x318
> [ 9.677006] el0_sync+0x158/0x180
> [ 9.680324] ---[ end trace 90f6c89d62d85ff6 ]---
>
> Instead, let's register a callback that will disable the regulators
> on teardown. This allows for the removal of the .remove callbacks,
> which are not needed anymore.
>
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> ---
> drivers/gpu/drm/tegra/sor.c | 59 +++++++++++++++----------------------
> 1 file changed, 24 insertions(+), 35 deletions(-)
Applied, thanks.
Thierry
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-11-10 17:37 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-13 9:51 [PATCH] drm/tegra: sor: Ensure regulators are disabled on teardown Marc Zyngier
2020-10-13 9:51 ` Marc Zyngier
2020-11-10 17:37 ` Thierry Reding [this message]
2020-11-10 17:37 ` Thierry Reding
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201110173742.GB2297135@ulmo \
--to=thierry.reding@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jonathanh@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=maz@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.