• Saravana Kannan's avatar
    driver core: Add device links from fwnode only for the primary device · 4dbe191c
    Saravana Kannan authored
    Sometimes, more than one (generally two) device can point to the same
    fwnode.  However, only one device is set as the fwnode's device
    (fwnode->dev) and can be looked up from the fwnode.
    
    Typically, only one of these devices actually have a driver and actually
    probe. If we create device links for all these devices, then the
    suppliers' of these devices (with the same fwnode) will never get a
    sync_state() call because one of their consumer devices will never probe
    (because they don't have a driver).
    
    So, create device links only for the device that is considered as the
    fwnode's device.
    
    One such example of this is the PCI bridge platform_device and the
    corresponding pci_bus device. Both these devices will have the same
    fwnode. It's the platform_device that is registered first and is set as
    the fwnode's device. Also the platform_device is the one that actually
    probes. Without this patch none of the suppliers of a PCI bridge
    platform_device would get a sync_state() callback.
    
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: linux-pci@vger.kernel.org
    Reviewed-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: default avatarSaravana Kannan <saravanak@google.com>
    Link: https://lore.kernel.org/r/20200321045448.15192-1-saravanak@google.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4dbe191c
core.c 102 KB