To prevent of_platform_populate() from trying to populate duplicate
devices if a device has been already populated.

Signed-off-by: Hiroshi Doyu <hd...@nvidia.com>
---
 drivers/of/platform.c | 6 ++++++
 include/linux/of.h    | 1 +
 2 files changed, 7 insertions(+)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 9b439ac..994cea4 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -208,6 +208,11 @@ static struct platform_device 
*of_platform_device_create_pdata(
        if (!of_device_is_available(np))
                return NULL;
 
+       if (np->dev) {
+               dev_info(np->dev, "Already populated\n");
+               return to_platform_device(np->dev);
+       }
+
        dev = of_device_alloc(np, bus_id, parent);
        if (!dev)
                return NULL;
@@ -232,6 +237,7 @@ static struct platform_device 
*of_platform_device_create_pdata(
                return NULL;
        }
 
+       np->dev = &dev->dev;
        return dev;
 }
 
diff --git a/include/linux/of.h b/include/linux/of.h
index f95aee3..638a88a 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -60,6 +60,7 @@ struct device_node {
        struct  kref kref;
        unsigned long _flags;
        void    *data;
+       struct device *dev;             /* Set only after populated */
 #if defined(CONFIG_SPARC)
        const char *path_component_name;
        unsigned int unique_id;
-- 
1.8.1.5

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to