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 like 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.

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 posted 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 problem, 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.

>
> Thanks,
> Inki Dae
>
>> Maybe I miss something, but I guess registration list(s) + DT super-node
>> should perform better.
>>
>> Here is sample log from trats with mipi-phy driver delayed probe:
>>
>>  binding 11c00000.fimd (ops fimd_component_ops)
>>  bound 11c00000.fimd (ops fimd_component_ops)
>>  binding 11c80000.dsi (ops exynos_dsi_component_ops)
>>  failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
>>  unbinding 11c00000.fimd (ops fimd_component_ops)
>>  master bind failed: -517
>>  binding 11c00000.fimd (ops fimd_component_ops)
>>  bound 11c00000.fimd (ops fimd_component_ops)
>>  binding 11c80000.dsi (ops exynos_dsi_component_ops)
>>  failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
>>  unbinding 11c00000.fimd (ops fimd_component_ops)
>>  master bind failed: -517
>>  binding 11c00000.fimd (ops fimd_component_ops)
>>  bound 11c00000.fimd (ops fimd_component_ops)
>>  binding 11c80000.dsi (ops exynos_dsi_component_ops)
>>  failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
>>  unbinding 11c00000.fimd (ops fimd_component_ops)
>>  master bind failed: -517
>>  binding 11c00000.fimd (ops fimd_component_ops)
>>  bound 11c00000.fimd (ops fimd_component_ops)
>>  binding 11c80000.dsi (ops exynos_dsi_component_ops)
>>  failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
>>  unbinding 11c00000.fimd (ops fimd_component_ops)
>>  master bind failed: -517
>>  binding 11c00000.fimd (ops fimd_component_ops)
>>  bound 11c00000.fimd (ops fimd_component_ops)
>>  binding 11c80000.dsi (ops exynos_dsi_component_ops)
>>  bound 11c80000.dsi (ops exynos_dsi_component_ops)
>>
>> This log will grow with number of devices probed in-between.
>>
>> Regards
>> Andrzej
>>
>>> And this patch series had been posted for RFC[2].
>>>
>>> Thanks,
>>> Inki Dae

Reply via email to