On Thu, Apr 21, 2016 at 8:57 AM, Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> wrote: > > Hi, > > Rob Herring <robh+dt@xxxxxxxxxx> writes: >> On Thu, Apr 21, 2016 at 6:20 AM, Felipe Balbi >> <felipe.balbi@xxxxxxxxxxxxxxx> wrote: >>> >>> Hi, >>> >>> Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> 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 devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html