On Thu, Apr 21, 2016 at 8:57 AM, Felipe Balbi
<felipe.ba...@linux.intel.com> wrote:
>
> Hi,
>
> Rob Herring <robh...@kernel.org> writes:
>> On Thu, Apr 21, 2016 at 6:20 AM, Felipe Balbi
>> <felipe.ba...@linux.intel.com> wrote:
>>>
>>> Hi,
>>>
>>> Heikki Krogerus <heikki.kroge...@linux.intel.com> writes:
>>>> @@ -197,7 +196,7 @@ static int xhci_plat_probe(struct platform_device 
>>>> *pdev)
>>>>       }
>>>>
>>>>       xhci = hcd_to_xhci(hcd);
>>>> -     match = of_match_node(usb_xhci_of_match, node);
>>>> +     match = of_match_node(usb_xhci_of_match, pdev->dev.of_node);
>>>
>>> Rob, it's weird that OF-based drivers have to redo the same matching
>>> which was already done by drivers/base/platform.c::platform_match() just
>>> to get match->data. If we know we matched, couldn't we just cache a
>>> pointer to match->data in struct device_node.data ? Something like
>>> below? (completely untested)
>>
>> Yes, it is. AIUI, there is some sort of race condition in doing what
>> you suggest though. IIRC, Grant did that and reverted it if you look
>> at the git history.
>
> looking at drivers/base/platform.c I can't find anything along these
> lines. Adding Grant.
>
> Grant, any memory left of this race ?

https://lkml.org/lkml/2011/5/18/384

tl;dr: matching and probe is not atomic.

Rob
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to