linux/include
Saravana Kannan fe5ff1ae21 UPSTREAM: driver core: fw_devlink: Detect supplier devices that will never be added
During the initial parsing of firmware by fw_devlink, fw_devlink might
infer that some supplier firmware nodes would get populated as devices.
But the inference is not always correct. This patch tries to logically
detect and fix such mistakes as boot progresses or more devices probe.

fw_devlink makes a fundamental assumption that once a device binds to a
driver, it will populate (i.e: add as struct devices) all the child
firmware nodes that could be populated as devices (if they aren't
populated already).

So, whenever a device probes, we check all its child firmware nodes. If
a child firmware node has a corresponding device populated, we don't
modify the child node or its descendants. However, if a child firmware
node has not been populated as a device, we delete all the fwnode links
where the child node or its descendants are suppliers. This ensures that
no other device is blocked on a firmware node that will never be
populated as a device. We also mark such fwnodes as NOT_DEVICE, so that
no new fwnode links are created with these nodes as suppliers.

Fixes: e590474768 ("driver core: Set fw_devlink=on by default")
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Signed-off-by: Saravana Kannan <saravanak@google.com>
Link: https://lore.kernel.org/r/20210205222644.2357303-2-saravanak@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 9528e0d9c1)
Bug: 181264536
Change-Id: I76f38f22cb11b85a8b6104c131924357d5254640
2021-02-25 15:16:38 -08:00
..
acpi PM: ACPI: PCI: Drop acpi_pm_set_bridge_wakeup() 2020-12-30 11:54:05 +01:00
asm-generic Merge 5.10.17 into android12-5.10 2021-02-18 11:21:01 +01:00
clocksource
crypto UPSTREAM: crypto: blake2b - sync with blake2s implementation 2021-02-23 08:06:20 +01:00
drm This is the 5.10.15 stable release 2021-02-10 09:53:50 +01:00
dt-bindings UPSTREAM: dt-bindings: connector: Add SVDM VDO properties 2021-02-09 11:55:09 +01:00
keys
kunit kunit: fix display of failed expectations for strings 2020-11-10 13:45:15 -07:00
kvm UPSTREAM: KVM: arm64: Replace KVM_ARM_PMU with HW_PERF_EVENTS 2021-01-28 17:57:18 +00:00
linux UPSTREAM: driver core: fw_devlink: Detect supplier devices that will never be added 2021-02-25 15:16:38 -08:00
math-emu
media Merge 5.10.4 into android12-5.10 2020-12-30 12:47:03 +01:00
memory
misc
net Merge 5.10.17 into android12-5.10 2021-02-18 11:21:01 +01:00
pcmcia
ras
rdma RDMA/core: remove use of dma_virt_ops 2021-01-09 13:46:24 +01:00
scsi scsi: libiscsi: Fix NOP race condition 2020-11-16 22:32:50 -05:00
soc net: dsa: felix: implement port flushing on .phylink_mac_link_down 2021-02-17 11:02:27 +01:00
sound Merge 27bba9c532 ("Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi") into android-mainline 2020-11-22 10:00:49 +01:00
target
trace ANDROID: mm: Add vendor hook in pagecache_get_page() 2021-02-19 17:59:52 +00:00
uapi ANDROID: dm: sync inline crypto support with patches going upstream 2021-02-19 10:48:51 +00:00
vdso
video
xen Xen/gntdev: correct error checking in gntdev_map_grant_pages() 2021-02-23 15:53:24 +01:00