[PATCH RESEND] drm/rockchip: Unregister platform drivers in reverse order
Cristian Ciocaltea
cristian.ciocaltea at collabora.com
Mon Aug 12 13:04:12 PDT 2024
Hi Andy,
On 8/12/24 5:14 AM, Andy Yan wrote:
>
> Hi Cristian,
>
> At 2024-08-08 19:58:02, "Cristian Ciocaltea" <cristian.ciocaltea at collabora.com> wrote:
>> Move rockchip_drm_platform_driver unregistration after its sub-drivers,
>> which ensures all drivers are unregistered in the reverse order used
>> when they were registered.
>
> Would you please provied some detail information about how to reproduce this
> issue this patch try to fix?Or some kernel log when this issue triggered。
I submitted this patch while investigating a couple of issues
encountered when tried to reload the rockchipdrm module.
One was a system freeze, which eventually proved to have a different
root cause and got fixed via [1]. The other one was a lockdep splat
which seems to be caused by the switch to maple tree register cache in
vop2 - I have a regmap workaround, not yet sure that's a proper fix.
As of v6.11-rc1, reloading the module works fine, w/ or w/o this patch
applied (ignoring the above mentioned splat). But I could only verify
on Rock 3A, hence unregistering the drivers in the correct order should,
at least, eliminate a potential source of unexpected behavior on the
other boards.
Regards,
Cristian
[1]: 9d42c3ee3ce3 ("arm64: dts: rockchip: Add missing power-domains for rk356x vop_mmu")
>> Fixes: 8820b68bd378 ("drm/rockchip: Refactor the component match logic.")
>> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
>> ---
>> drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>> index 44d769d9234d..ca7b07503fbe 100644
>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>> @@ -528,10 +528,9 @@ static int __init rockchip_drm_init(void)
>>
>> static void __exit rockchip_drm_fini(void)
>> {
>> - platform_driver_unregister(&rockchip_drm_platform_driver);
>> -
>> platform_unregister_drivers(rockchip_sub_drivers,
>> num_rockchip_sub_drivers);
>> + platform_driver_unregister(&rockchip_drm_platform_driver);
>> }
>>
>> module_init(rockchip_drm_init);
>>
>> ---
>> base-commit: 1eb586a9782cde8e5091b9de74603e0a8386b09e
>> change-id: 20240702-rk-drm-fix-unreg-9f3f29996a00
>> --
>> Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
More information about the Linux-rockchip
mailing list