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@xxxxxxxxxx> > --- > drivers/gpu/drm/tegra/sor.c | 59 +++++++++++++++---------------------- > 1 file changed, 24 insertions(+), 35 deletions(-) Applied, thanks. Thierry
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel