[PATCH v2 0/7] drm/exynos: more cleanup with super device support

대인기 inki.dae at samsung.com
Thu Apr 3 03:53:01 PDT 2014


>On 04/03/2014 11:05 AM, 대인기 wrote:
>> Hi Andrzej,
>>
>>> Hi Inki,
>>
>>> On 04/01/2014 02:37 PM, Inki Dae wrote:
>>>> This patch series cleans up exynos drm framework and kms sub drivers
>>>> using the component framework[1].
>>> I have tested it on trats platform (fimd + dsi), it works.
>>> However it seems to be suboptimal.
>>> In case of deferred probing of any of components (due to lack of some
>>> resources, ex. clock, regulator, phy), all components
>>> which were already bound are unbound and re-bound later when another
>>> driver is added, this causes multiple unnecessary free/re-allocate cycles.
>> The components bound and then unbound wouldn't be bound again because the components unbound are removed component_list l>ike below,
>>
>> ret = try_to_bring_up_masters(component);
>> if (ret < 0) {
>>        list_del(&component->node);
>>        kfree(component);
>> }
>>
>> And I cannot see that components are freed and re-allocated repeatedly. See the below log,
>>
>> [    1.425000] [drm] Initialized drm 1.1.0 20060810
>> [    1.430000] exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
>> [    1.435000] exynos4-fb 11c00000.fimd: adding component (ops fimd_component_ops)
>> [    1.445000] exynos-dsi 11c80000.dsi: adding component (ops exynos_dsi_component_ops)
>> [    1.450000] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
>> [    1.455000] [drm] No driver support for vblank timestamp query.
>> [    1.465000] exynos-drm display-subsystem.8: binding 11c00000.fimd (ops fimd_component_ops)
>> [    1.470000] exynos-drm display-subsystem.8: bound 11c00000.fimd (ops fimd_component_ops)
>> [    1.480000] exynos-drm display-subsystem.8: binding 11c80000.dsi (ops exynos_dsi_component_ops)
>> [    1.490000] exynos-drm display-subsystem.8: failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -12
>> [    1.500000] exynos-drm display-subsystem.8: master bind failed: -12
>> [    1.505000] exynos-dsi: probe of 11c80000.dsi failed with error -12
>Here you have error -12 - ENOMEM, so everything just fails, and this is
>OK. The problem is in case of deferred probe.
>Good way to simulate it is to make mipi-phy driver as module and insmod
>it from userspace.
>

Reproduced by returning -EPROBE_DEFER at exynos_dsi_bind(). Right, in this case, the component isn't removed from component_list because all components are added to component_list, and the components are also attached to master. In turn, exynos_drm_load() will return -EPROBE_DEFER so the components will be unbound and bound repeatedly.

So to resolve this issue, it needs for -EPROBE_DEFER is returned only in exynos_dsi_probe, not exynos_dsi_bind. For this, I fixed it and tested it.

Will post it again.

Thanks for testing,
Inki Dae

>Regards
>Andrzej
>
>
>> I have tested it on universal, trats, trats2 boards. And they all work fine.
>> But there was one thing I missed. That is that dpi probe and remove shoudn't be called if fimd node has no port node. For this, I post>ed it again.
>>
>> Did you check it again? It seems your missing something. And Can you tell me more details how did you test it? If there is no any pr>>oblem, I'm going to have pull request today or tomorrow.
>
>The problem I have described has nothing to do with dpi, in fact dpi
>driver was disabled in this test.
>Anyway I will test DPI separately.
>
>>


More information about the dri-devel mailing list