On Mon, Mar 25, 2024 at 04:39:15PM +0100, Herve Codina wrote:
The commit 407d1a51921e ("PCI: Create device tree node for bridge") creates of_node for PCI devices.
During the insertion handling of these new DT nodes done by of_platform, new devices (struct device) are created. For each PCI devices a struct device is already present (created and handled by the PCI core). Having a second struct device to represent the exact same PCI device is not correct.
On the of_node creation:
- tell the of_platform that there is no need to create a device for this node (OF_POPULATED flag),
- link this newly created of_node to the already present device,
- tell fwnode that the device attached to this of_node is ready using fwnode_dev_initialized().
With this fix, the of_node are available in the sysfs device tree: /sys/devices/platform/soc/d0070000.pcie/
- of_node -> .../devicetree/base/soc/pcie@d0070000
- pci0000:00
- 0000:00:00.0
- of_node -> .../devicetree/base/soc/pcie@d0070000/pci@0,0
- 0000:01:00.0
- of_node -> .../devicetree/base/soc/pcie@d0070000/pci@0,0/dev@0,0
On the of_node removal, revert the operations.
Fixes: 407d1a51921e ("PCI: Create device tree node for bridge") Cc: stable@vger.kernel.org Signed-off-by: Herve Codina herve.codina@bootlin.com
I need an ack from the maintainer here before I can take this.
thanks,
greg k-h