>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. > >> _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel