[PATCH 1/1] drm/sti: fix master bind bug for using component

Xinwei Kong kong.kongxinwei at hisilicon.com
Wed Jul 15 18:13:58 PDT 2015


Thank you for Russel.

It is Right, when this sti_tvout (component) finish executing component ".bind"
function while sti_hdmi or sti_hda is not registered. the bug will occur .

this patch will prepare this bug by calling master .bind of sti_tvout after
sti_hdmi or sti_hda is register to finish binding sti_hdmi or sti_hda component,
however, it also slove to bring the "drm_dev" struct into the sti_hdmi or sti_hda.

Thank you
Xinwei

On 2015/7/15 21:17, Benjamin Gaignard wrote:
> Thanks a lot Russell, I have now understand where was my mistake.
> 
> 
> 2015-07-15 12:42 GMT+02:00 Russell King - ARM Linux <linux at arm.linux.org.uk>:
>> On Wed, Jul 15, 2015 at 12:19:01PM +0200, Benjamin Gaignard wrote:
>>> The build order in Makefile hasn't been change so the bug doesn't occur...
>>>
>>> In addition of taking care of not changing build order in Makefile,
>>> I would like to understand what is the expected behavior of component
>>> framework when
>>> master call component_bind_all() before any component_add() calls.
>>>
>>> Should component bind function be called in component_add() ?
>>> Is up to component to detect that master is already bounded ?
>>>
>>> Russell can you tell us what to do in this case ?
>>
>> I don't follow, and you certainly should never get into the situation
>> you're alluding to (where the master is already bound but a component
>> is not.)
>>
>> The way this should work is:
>>
>> - master and components register themselves into the component helper
>>   in a random order.
>>   - when the master registers, it gives the component helper a set of
>>     matches which it uses to determine which components are required.
>> - when the component helper determines that all components and the
>>   master have been registered, it calls the master bind function.
>> - the master bind function is responsible for the classical subsystem
>>   initialisation, calling component_bind_all() to cause the individual
>>   components bind() method to be called.
>>
>> So, you should never _ever_ be in the situation where initcall ordering
>> matters, or where the master is already bound but a component hasn't
>> registered.
>>
>> --
>> FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
>> according to speedtest.net.
> 
> 
> 



More information about the dri-devel mailing list