All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices
@ 2016-10-20 11:02 Alexander Sverdlin
       [not found] ` <b317f693-98b5-ba1e-1184-83735a68db9b-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Alexander Sverdlin @ 2016-10-20 11:02 UTC (permalink / raw)
  To: devicetree-u79uwXL29TY76Z2rM5mHXA
  Cc: Rob Herring, Frank Rowand, Pantelis Antoniou, Grant Likely

of_platform_notify() requires parents to have OF_POPULATED_BUS to be set
(which is correct way to verify healthy platform bus), but uses
of_platform_device_create() to create devices, which never sets the above
flag. Therefore it's not possible to add platform buses via overlays.

Use of_platform_bus_create(), which is used in non-overlay case to populate
both buses and devices.

Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Pantelis Antoniou <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

---
 drivers/of/platform.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index af98343..d2d6e74 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -521,6 +521,7 @@ static int of_platform_notify(struct notifier_block *nb,
 	struct of_reconfig_data *rd = arg;
 	struct platform_device *pdev_parent, *pdev;
 	bool children_left;
+	int ret;
 
 	switch (of_reconfig_get_state_change(action, rd)) {
 	case OF_RECONFIG_CHANGE_ADD:
@@ -534,15 +535,15 @@ static int of_platform_notify(struct notifier_block *nb,
 
 		/* pdev_parent may be NULL when no bus platform device */
 		pdev_parent = of_find_device_by_node(rd->dn->parent);
-		pdev = of_platform_device_create(rd->dn, NULL,
-				pdev_parent ? &pdev_parent->dev : NULL);
+		ret = of_platform_bus_create(rd->dn, of_default_bus_match_table,
+					     NULL, pdev_parent ?
+					     &pdev_parent->dev : NULL, true);
 		of_dev_put(pdev_parent);
 
-		if (pdev == NULL) {
+		if (ret) {
 			pr_err("%s: failed to create for '%s'\n",
 					__func__, rd->dn->full_name);
-			/* of_platform_device_create tosses the error code */
-			return notifier_from_errno(-EINVAL);
+			return notifier_from_errno(ret);
 		}
 		break;
 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices
       [not found] ` <b317f693-98b5-ba1e-1184-83735a68db9b-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
@ 2016-10-27 13:00   ` Rob Herring
       [not found]     ` <CAL_JsqJZ__mUwRT14BmNQKaa_mAPsJm0iWP8sb6Oqs+_-Gu5hw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Rob Herring @ 2016-10-27 13:00 UTC (permalink / raw)
  To: Alexander Sverdlin
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Frank Rowand,
	Pantelis Antoniou, Grant Likely

On Thu, Oct 20, 2016 at 6:02 AM, Alexander Sverdlin
<alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org> wrote:
> of_platform_notify() requires parents to have OF_POPULATED_BUS to be set
> (which is correct way to verify healthy platform bus), but uses
> of_platform_device_create() to create devices, which never sets the above
> flag. Therefore it's not possible to add platform buses via overlays.

Can you create a unit test case that has the problem.

> Use of_platform_bus_create(), which is used in non-overlay case to populate
> both buses and devices.
>
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Cc: Pantelis Antoniou <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
> Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>
> ---
>  drivers/of/platform.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index af98343..d2d6e74 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -521,6 +521,7 @@ static int of_platform_notify(struct notifier_block *nb,
>         struct of_reconfig_data *rd = arg;
>         struct platform_device *pdev_parent, *pdev;
>         bool children_left;
> +       int ret;
>
>         switch (of_reconfig_get_state_change(action, rd)) {
>         case OF_RECONFIG_CHANGE_ADD:
> @@ -534,15 +535,15 @@ static int of_platform_notify(struct notifier_block *nb,
>
>                 /* pdev_parent may be NULL when no bus platform device */
>                 pdev_parent = of_find_device_by_node(rd->dn->parent);
> -               pdev = of_platform_device_create(rd->dn, NULL,
> -                               pdev_parent ? &pdev_parent->dev : NULL);
> +               ret = of_platform_bus_create(rd->dn, of_default_bus_match_table,
> +                                            NULL, pdev_parent ?
> +                                            &pdev_parent->dev : NULL, true);

I think this should be of_platform_default_populate() instead.

>                 of_dev_put(pdev_parent);
>
> -               if (pdev == NULL) {
> +               if (ret) {
>                         pr_err("%s: failed to create for '%s'\n",
>                                         __func__, rd->dn->full_name);
> -                       /* of_platform_device_create tosses the error code */
> -                       return notifier_from_errno(-EINVAL);
> +                       return notifier_from_errno(ret);
>                 }
>                 break;
>
> --
> To unsubscribe from this list: send the line "unsubscribe devicetree" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices
       [not found]     ` <CAL_JsqJZ__mUwRT14BmNQKaa_mAPsJm0iWP8sb6Oqs+_-Gu5hw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2017-01-20 17:38       ` Alexander Sverdlin
       [not found]         ` <3da6854d-8361-1724-2a8a-36f28449733e-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  2017-01-20 20:57       ` [PATCH 0/2] Ensure that platform buses from overlays are functional Alexander Sverdlin
  2017-09-19 15:13       ` [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices Alexander Sverdlin
  2 siblings, 1 reply; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-20 17:38 UTC (permalink / raw)
  To: Rob Herring
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Frank Rowand,
	Pantelis Antoniou, Grant Likely

Hello Rob,

On 27/10/16 15:00, Rob Herring wrote:
>> @@ -534,15 +535,15 @@ static int of_platform_notify(struct notifier_block *nb,
>>
>>                 /* pdev_parent may be NULL when no bus platform device */
>>                 pdev_parent = of_find_device_by_node(rd->dn->parent);
>> -               pdev = of_platform_device_create(rd->dn, NULL,
>> -                               pdev_parent ? &pdev_parent->dev : NULL);
>> +               ret = of_platform_bus_create(rd->dn, of_default_bus_match_table,
>> +                                            NULL, pdev_parent ?
>> +                                            &pdev_parent->dev : NULL, true);
> I think this should be of_platform_default_populate() instead.

I've just tested: it cannot be. It calls of_platform_populate(), which ignores "status" property.
This not only brakes half of the unit tests, but also would change the existing behavior of
overlays (they will completely ignore "status" too).

-- 
Best regards,
Alexander Sverdlin.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/2] Ensure that platform buses from overlays are functional
       [not found]     ` <CAL_JsqJZ__mUwRT14BmNQKaa_mAPsJm0iWP8sb6Oqs+_-Gu5hw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2017-01-20 17:38       ` Alexander Sverdlin
@ 2017-01-20 20:57       ` Alexander Sverdlin
       [not found]         ` <20170120205745.11851-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  2017-09-19 15:13       ` [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices Alexander Sverdlin
  2 siblings, 1 reply; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-20 20:57 UTC (permalink / raw)
  Cc: Alexander Sverdlin, Rob Herring, Frank Rowand,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Grant Likely,
	Pantelis Antoniou

This series addresses an issue, which prevents one to add child devices to
a platform bus from an overlay if such a bus was in turn also created from
an overlay.

The root cause is missing OF_POPULATED_BUS flag for such buses and the
difference, in the way, how static and dynamic platform devices are
populated.

Second patch adds a couple of test cases which demonstrate the problem.

This series relies on the correct functioning of
of_unittest_apply_overlay() (previously sent "of/unittest: Swap arguments
of of_unittest_apply_overlay()").

Alexander Sverdlin (2):
  of/platform: dynamic: Use of_platform_bus_create() to create devices
  of/unittest: Test platform bus added from overlay

 drivers/of/platform.c                       | 11 ++++----
 drivers/of/unittest-data/tests-overlay.dtsi | 41 +++++++++++++++++++++++++++++
 drivers/of/unittest.c                       | 31 ++++++++++++++++++++++
 3 files changed, 78 insertions(+), 5 deletions(-)

Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Pantelis Antoniou <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>

-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/2] of/platform: dynamic: Use of_platform_bus_create() to create devices
       [not found]         ` <20170120205745.11851-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
@ 2017-01-20 21:02           ` Alexander Sverdlin
       [not found]             ` <20170120210234.11924-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-20 21:02 UTC (permalink / raw)
  Cc: Alexander Sverdlin, Rob Herring, Frank Rowand,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Grant Likely,
	Pantelis Antoniou

of_platform_notify() requires parents to have OF_POPULATED_BUS to be set
(which is correct way to verify healthy platform bus), but uses
of_platform_device_create() to create devices, which never sets the above
flag. Therefore it's not possible to add platform buses via overlays.

Use of_platform_bus_create(), which is used in non-overlay case to populate
both buses and devices.

Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Pantelis Antoniou <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
---
 drivers/of/platform.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index b8064bc2b6eb..35de1fc59fa6 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -578,6 +578,7 @@ static int of_platform_notify(struct notifier_block *nb,
 	struct of_reconfig_data *rd = arg;
 	struct platform_device *pdev_parent, *pdev;
 	bool children_left;
+	int ret;
 
 	switch (of_reconfig_get_state_change(action, rd)) {
 	case OF_RECONFIG_CHANGE_ADD:
@@ -591,15 +592,15 @@ static int of_platform_notify(struct notifier_block *nb,
 
 		/* pdev_parent may be NULL when no bus platform device */
 		pdev_parent = of_find_device_by_node(rd->dn->parent);
-		pdev = of_platform_device_create(rd->dn, NULL,
-				pdev_parent ? &pdev_parent->dev : NULL);
+		ret = of_platform_bus_create(rd->dn, of_default_bus_match_table,
+					     NULL, pdev_parent ?
+					     &pdev_parent->dev : NULL, true);
 		of_dev_put(pdev_parent);
 
-		if (pdev == NULL) {
+		if (ret) {
 			pr_err("%s: failed to create for '%s'\n",
 					__func__, rd->dn->full_name);
-			/* of_platform_device_create tosses the error code */
-			return notifier_from_errno(-EINVAL);
+			return notifier_from_errno(ret);
 		}
 		break;
 
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 2/2] of/unittest: Test platform bus added from overlay
       [not found]             ` <20170120210234.11924-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
@ 2017-01-20 21:02               ` Alexander Sverdlin
  0 siblings, 0 replies; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-20 21:02 UTC (permalink / raw)
  Cc: Alexander Sverdlin, Rob Herring, Frank Rowand,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Grant Likely,
	Pantelis Antoniou

Check that it's possible to:
- add children to platform buses originating from overlays
- use overlay to enable a platform bus originating from overlay

Explicitly avoid unittest_probe(), because this test case checks the correct
creation of the devices only. Driver probing might be delayed (say, modules)
and correct device creation must not depend on it.

Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Pantelis Antoniou <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
---
 drivers/of/unittest-data/tests-overlay.dtsi | 83 +++++++++++++++++++++++++++++
 drivers/of/unittest.c                       | 60 +++++++++++++++++++++
 2 files changed, 143 insertions(+)

diff --git a/drivers/of/unittest-data/tests-overlay.dtsi b/drivers/of/unittest-data/tests-overlay.dtsi
index 02ba56c20fe1..6925a992f9e2 100644
--- a/drivers/of/unittest-data/tests-overlay.dtsi
+++ b/drivers/of/unittest-data/tests-overlay.dtsi
@@ -325,5 +325,88 @@
 			};
 		};
 
+		/* test that platform buses from overlays are functional */
+		overlay16 {
+			fragment@0 {
+				target-path = "/testcase-data/overlay-node/test-bus";
+				__overlay__ {
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					test-unittest16 {
+						/*
+						 * testing just device creation,
+						 * no unittest_probe() should
+						 * be called
+						 */
+						compatible = "simple-bus";
+						reg = <16>;
+					};
+				};
+			};
+		};
+
+		overlay17 {
+			fragment@0 {
+				target-path = "/testcase-data/overlay-node/test-bus";
+				__overlay__ {
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					test-unittest16 {
+						#address-cells = <1>;
+						#size-cells = <0>;
+
+						test-unittest161 {
+							compatible = "unittest";
+							reg = <1>;
+						};
+					};
+				};
+			};
+		};
+
+		overlay18 {
+			fragment@0 {
+				target-path = "/testcase-data/overlay-node/test-bus";
+				__overlay__ {
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					test-unittest18 {
+						#address-cells = <1>;
+						#size-cells = <0>;
+						/*
+						 * testing just device creation,
+						 * no unittest_probe() should
+						 * be called
+						 */
+						compatible = "simple-bus";
+						reg = <18>;
+						status = "disabled";
+
+						test-unittest181 {
+							compatible = "unittest";
+							reg = <1>;
+						};
+					};
+				};
+			};
+		};
+
+		overlay19 {
+			fragment@0 {
+				target-path = "/testcase-data/overlay-node/test-bus";
+				__overlay__ {
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					test-unittest18 {
+						status = "okay";
+					};
+				};
+			};
+		};
+
 	};
 };
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 66bfa8d674ce..2c533709bb0e 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -1854,6 +1854,63 @@ static inline void of_unittest_overlay_i2c_15(void) { }
 
 #endif
 
+/* test that platform buses populated by overlays are functional */
+static void of_unittest_overlay_16(void)
+{
+	int ret;
+	char *child_path;
+
+	/* add an empty bus */
+	ret = of_unittest_apply_overlay_check(16, 16, 0, 1, PDEV_OVERLAY);
+	if (unittest(ret == 0,
+			"overlay test %d failed; overlay application\n", 16))
+		return;
+
+	/* add a device to the bus */
+	ret = of_unittest_apply_overlay(17, 16, PDEV_OVERLAY);
+	if (unittest(ret == 0,
+			"overlay test %d failed; overlay application\n", 16))
+		return;
+
+	child_path = kasprintf(GFP_KERNEL, "%s/test-unittest161",
+			unittest_path(16, PDEV_OVERLAY));
+	if (unittest(child_path, "overlay test %d failed; kasprintf\n", 16))
+		return;
+
+	ret = of_path_device_type_exists(child_path, PDEV_OVERLAY);
+	kfree(child_path);
+	if (unittest(ret, "overlay test %d failed; no child device\n", 16))
+		return;
+}
+
+static void of_unittest_overlay_18(void)
+{
+	int ret;
+	char *child_path;
+
+	/* add a disabled bus */
+	ret = of_unittest_apply_overlay_check(18, 18, 0, 0, PDEV_OVERLAY);
+	if (unittest(ret == 0,
+			"overlay test %d failed; overlay application\n", 18))
+		return;
+
+	/* enable the bus */
+	ret = of_unittest_apply_overlay_check(19, 18, 0, 1, PDEV_OVERLAY);
+	if (unittest(ret == 0,
+			"overlay test %d failed; overlay application\n", 18))
+		return;
+
+	child_path = kasprintf(GFP_KERNEL, "%s/test-unittest181",
+			unittest_path(18, PDEV_OVERLAY));
+	if (unittest(child_path, "overlay test %d failed; kasprintf\n", 18))
+		return;
+
+	ret = of_path_device_type_exists(child_path, PDEV_OVERLAY);
+	kfree(child_path);
+	if (unittest(ret, "overlay test %d failed; no child device\n", 18))
+		return;
+}
+
 static void __init of_unittest_overlay(void)
 {
 	struct device_node *bus_np = NULL;
@@ -1916,6 +1973,9 @@ static void __init of_unittest_overlay(void)
 	of_unittest_overlay_i2c_cleanup();
 #endif
 
+	of_unittest_overlay_16();
+	of_unittest_overlay_18();
+
 	of_unittest_destroy_tracked_overlays();
 
 out:
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices
       [not found]         ` <3da6854d-8361-1724-2a8a-36f28449733e-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
@ 2017-01-21 19:51           ` Rob Herring
       [not found]             ` <CAL_JsqKb8KUgit-q_cOON8VgZBsrXEQd2EcC0iF=ou_271Vg_w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Rob Herring @ 2017-01-21 19:51 UTC (permalink / raw)
  To: Alexander Sverdlin
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Frank Rowand,
	Pantelis Antoniou, Grant Likely

On Fri, Jan 20, 2017 at 11:38 AM, Alexander Sverdlin
<alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org> wrote:
> Hello Rob,
>
> On 27/10/16 15:00, Rob Herring wrote:
>>> @@ -534,15 +535,15 @@ static int of_platform_notify(struct notifier_block *nb,
>>>
>>>                 /* pdev_parent may be NULL when no bus platform device */
>>>                 pdev_parent = of_find_device_by_node(rd->dn->parent);
>>> -               pdev = of_platform_device_create(rd->dn, NULL,
>>> -                               pdev_parent ? &pdev_parent->dev : NULL);
>>> +               ret = of_platform_bus_create(rd->dn, of_default_bus_match_table,
>>> +                                            NULL, pdev_parent ?
>>> +                                            &pdev_parent->dev : NULL, true);
>> I think this should be of_platform_default_populate() instead.
>
> I've just tested: it cannot be. It calls of_platform_populate(), which ignores "status" property.
> This not only brakes half of the unit tests, but also would change the existing behavior of
> overlays (they will completely ignore "status" too).

That's a bug. I assume that's only at the 1st level or things would be
completely broken.

Rob
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH] of/platform: Ignore disabled devices in of_platform_populate()
       [not found]             ` <CAL_JsqKb8KUgit-q_cOON8VgZBsrXEQd2EcC0iF=ou_271Vg_w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2017-01-23 12:21               ` Alexander Sverdlin
       [not found]                 ` <20170123122151.21908-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  2017-01-23 12:52               ` [PATCH v2] " Alexander Sverdlin
  2017-01-23 15:07               ` [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices Alexander Sverdlin
  2 siblings, 1 reply; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-23 12:21 UTC (permalink / raw)
  Cc: Alexander Sverdlin, Rob Herring, Frank Rowand,
	devicetree-u79uwXL29TY76Z2rM5mHXA

Check the status property and give up early enough. Otherwise
OF_POPULATED_BUS might be set for disabled bus which will prevent
it from being populated later (if enabled).

Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
---
 drivers/of/platform.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 35de1fc59fa6..5ad8c13f754a 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -473,9 +473,13 @@ int of_platform_populate(struct device_node *root,
 	struct device_node *child;
 	int rc = 0;
 
-	root = root ? of_node_get(root) : of_find_node_by_path("/");
+	if (!root)
+		root = of_find_node_by_path("/");
 	if (!root)
 		return -EINVAL;
+	if (!of_device_is_available(root))
+		return 0;
+	of_node_get(root);
 
 	pr_debug("%s()\n", __func__);
 	pr_debug(" starting at: %s\n", root->full_name);
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH] of/platform: Ignore disabled devices in of_platform_populate()
       [not found]                 ` <20170123122151.21908-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
@ 2017-01-23 12:24                   ` Alexander Sverdlin
  0 siblings, 0 replies; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-23 12:24 UTC (permalink / raw)
  Cc: Rob Herring, Frank Rowand, devicetree-u79uwXL29TY76Z2rM5mHXA

Hello all,

On 23/01/17 13:21, Alexander Sverdlin wrote:
> Check the status property and give up early enough. Otherwise
> OF_POPULATED_BUS might be set for disabled bus which will prevent
> it from being populated later (if enabled).
> 
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> ---
>  drivers/of/platform.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index 35de1fc59fa6..5ad8c13f754a 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -473,9 +473,13 @@ int of_platform_populate(struct device_node *root,
>  	struct device_node *child;
>  	int rc = 0;
>  
> -	root = root ? of_node_get(root) : of_find_node_by_path("/");
> +	if (!root)
> +		root = of_find_node_by_path("/");
>  	if (!root)
>  		return -EINVAL;
> +	if (!of_device_is_available(root))
> +		return 0;
> +	of_node_get(root);

Auch, I see unbalanced reference counting here, please ignore this patch... 

>  	pr_debug("%s()\n", __func__);
>  	pr_debug(" starting at: %s\n", root->full_name);

-- 
Best regards,
Alexander Sverdlin.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v2] of/platform: Ignore disabled devices in of_platform_populate()
       [not found]             ` <CAL_JsqKb8KUgit-q_cOON8VgZBsrXEQd2EcC0iF=ou_271Vg_w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2017-01-23 12:21               ` [PATCH] of/platform: Ignore disabled devices in of_platform_populate() Alexander Sverdlin
@ 2017-01-23 12:52               ` Alexander Sverdlin
       [not found]                 ` <20170123125204.22233-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  2017-01-23 15:07               ` [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices Alexander Sverdlin
  2 siblings, 1 reply; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-23 12:52 UTC (permalink / raw)
  Cc: Alexander Sverdlin, Rob Herring, Frank Rowand,
	devicetree-u79uwXL29TY76Z2rM5mHXA

Check the status property and give up early enough. Otherwise
OF_POPULATED_BUS might be set for disabled bus which will prevent
it from being populated later (if enabled).

Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
---
 drivers/of/platform.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 35de1fc59fa6..060621d94f1a 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -476,6 +476,10 @@ int of_platform_populate(struct device_node *root,
 	root = root ? of_node_get(root) : of_find_node_by_path("/");
 	if (!root)
 		return -EINVAL;
+	if (!of_device_is_available(root)) {
+		of_node_put(root);
+		return 0;
+	}
 
 	pr_debug("%s()\n", __func__);
 	pr_debug(" starting at: %s\n", root->full_name);
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH v2] of/platform: Ignore disabled devices in of_platform_populate()
       [not found]                 ` <20170123125204.22233-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
@ 2017-01-23 14:33                   ` Alexander Sverdlin
       [not found]                     ` <711e6067-ab41-8217-b947-2b4c356aaaba-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  2017-09-19 15:23                   ` Alexander Sverdlin
  1 sibling, 1 reply; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-23 14:33 UTC (permalink / raw)
  Cc: Rob Herring, Frank Rowand, devicetree-u79uwXL29TY76Z2rM5mHXA

Hello all,

On 23/01/17 13:52, Alexander Sverdlin wrote:
> Check the status property and give up early enough. Otherwise
> OF_POPULATED_BUS might be set for disabled bus which will prevent
> it from being populated later (if enabled).
> 
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> ---
>  drivers/of/platform.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index 35de1fc59fa6..060621d94f1a 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -476,6 +476,10 @@ int of_platform_populate(struct device_node *root,
>  	root = root ? of_node_get(root) : of_find_node_by_path("/");
>  	if (!root)
>  		return -EINVAL;
> +	if (!of_device_is_available(root)) {
> +		of_node_put(root);
> +		return 0;
> +	}
>  
>  	pr_debug("%s()\n", __func__);
>  	pr_debug(" starting at: %s\n", root->full_name);

no, this one also doesn't allow to switch to of_platform_default_populate(),
please ignore the patch.


-- 
Best regards,
Alexander Sverdlin.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices
       [not found]             ` <CAL_JsqKb8KUgit-q_cOON8VgZBsrXEQd2EcC0iF=ou_271Vg_w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2017-01-23 12:21               ` [PATCH] of/platform: Ignore disabled devices in of_platform_populate() Alexander Sverdlin
  2017-01-23 12:52               ` [PATCH v2] " Alexander Sverdlin
@ 2017-01-23 15:07               ` Alexander Sverdlin
  2 siblings, 0 replies; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-23 15:07 UTC (permalink / raw)
  To: Rob Herring
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Frank Rowand,
	Pantelis Antoniou, Grant Likely

Hi Rob,

On 21/01/17 20:51, Rob Herring wrote:
> On Fri, Jan 20, 2017 at 11:38 AM, Alexander Sverdlin
> <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org> wrote:
>> Hello Rob,
>>
>> On 27/10/16 15:00, Rob Herring wrote:
>>>> @@ -534,15 +535,15 @@ static int of_platform_notify(struct notifier_block *nb,
>>>>
>>>>                 /* pdev_parent may be NULL when no bus platform device */
>>>>                 pdev_parent = of_find_device_by_node(rd->dn->parent);
>>>> -               pdev = of_platform_device_create(rd->dn, NULL,
>>>> -                               pdev_parent ? &pdev_parent->dev : NULL);
>>>> +               ret = of_platform_bus_create(rd->dn, of_default_bus_match_table,
>>>> +                                            NULL, pdev_parent ?
>>>> +                                            &pdev_parent->dev : NULL, true);
>>> I think this should be of_platform_default_populate() instead.
>> I've just tested: it cannot be. It calls of_platform_populate(), which ignores "status" property.
>> This not only brakes half of the unit tests, but also would change the existing behavior of
>> overlays (they will completely ignore "status" too).
> That's a bug. I assume that's only at the 1st level or things would be
> completely broken.

well, after two unsuccessful attempts to use of_platform_default_populate() in of_platform_notify()
I see what the actual problem is: of_platform_*populate() do not populate the root node itself,
therefore they are not suitable for of_platform_notify().

-- 
Best regards,
Alexander Sverdlin.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2] of/platform: Ignore disabled devices in of_platform_populate()
       [not found]                     ` <711e6067-ab41-8217-b947-2b4c356aaaba-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
@ 2017-01-23 15:09                       ` Alexander Sverdlin
  0 siblings, 0 replies; 16+ messages in thread
From: Alexander Sverdlin @ 2017-01-23 15:09 UTC (permalink / raw)
  Cc: Rob Herring, Frank Rowand, devicetree-u79uwXL29TY76Z2rM5mHXA

On 23/01/17 15:33, Alexander Sverdlin wrote:
>> Check the status property and give up early enough. Otherwise
>> OF_POPULATED_BUS might be set for disabled bus which will prevent
>> it from being populated later (if enabled).
>>
>> Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
>> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>> Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>> ---
>>  drivers/of/platform.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
>> index 35de1fc59fa6..060621d94f1a 100644
>> --- a/drivers/of/platform.c
>> +++ b/drivers/of/platform.c
>> @@ -476,6 +476,10 @@ int of_platform_populate(struct device_node *root,
>>  	root = root ? of_node_get(root) : of_find_node_by_path("/");
>>  	if (!root)
>>  		return -EINVAL;
>> +	if (!of_device_is_available(root)) {
>> +		of_node_put(root);
>> +		return 0;
>> +	}
>>  
>>  	pr_debug("%s()\n", __func__);
>>  	pr_debug(" starting at: %s\n", root->full_name);
> no, this one also doesn't allow to switch to of_platform_default_populate(),
> please ignore the patch.

Well, the patch seems to fix a real problem because OF_POPULATED_BUS would be
set for disabled buses, which will prevent their enabling later. Even if there
is no in-tree call site stumbles upon this issue. 

-- 
Best regards,
Alexander Sverdlin.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices
       [not found]     ` <CAL_JsqJZ__mUwRT14BmNQKaa_mAPsJm0iWP8sb6Oqs+_-Gu5hw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2017-01-20 17:38       ` Alexander Sverdlin
  2017-01-20 20:57       ` [PATCH 0/2] Ensure that platform buses from overlays are functional Alexander Sverdlin
@ 2017-09-19 15:13       ` Alexander Sverdlin
       [not found]         ` <43407912-3ecd-97c7-a90a-a9cd07a4b3ae-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  2 siblings, 1 reply; 16+ messages in thread
From: Alexander Sverdlin @ 2017-09-19 15:13 UTC (permalink / raw)
  To: Rob Herring
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Frank Rowand,
	Pantelis Antoniou, Grant Likely

Hello Rob,

On 27/10/16 15:00, Rob Herring wrote:
> On Thu, Oct 20, 2016 at 6:02 AM, Alexander Sverdlin
> <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org> wrote:
>> of_platform_notify() requires parents to have OF_POPULATED_BUS to be set
>> (which is correct way to verify healthy platform bus), but uses
>> of_platform_device_create() to create devices, which never sets the above
>> flag. Therefore it's not possible to add platform buses via overlays.
> Can you create a unit test case that has the problem.

PING
The tests for the highlighted problem were presented here:
http://www.spinics.net/lists/devicetree/msg160016.html
 
>> Use of_platform_bus_create(), which is used in non-overlay case to populate
>> both buses and devices.

>> Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
>> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>> Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> Cc: Pantelis Antoniou <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
>> Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>>
>> ---
>>  drivers/of/platform.c | 11 ++++++-----
>>  1 file changed, 6 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
>> index af98343..d2d6e74 100644
>> --- a/drivers/of/platform.c
>> +++ b/drivers/of/platform.c
>> @@ -521,6 +521,7 @@ static int of_platform_notify(struct notifier_block *nb,
>>         struct of_reconfig_data *rd = arg;
>>         struct platform_device *pdev_parent, *pdev;
>>         bool children_left;
>> +       int ret;
>>
>>         switch (of_reconfig_get_state_change(action, rd)) {
>>         case OF_RECONFIG_CHANGE_ADD:
>> @@ -534,15 +535,15 @@ static int of_platform_notify(struct notifier_block *nb,
>>
>>                 /* pdev_parent may be NULL when no bus platform device */
>>                 pdev_parent = of_find_device_by_node(rd->dn->parent);
>> -               pdev = of_platform_device_create(rd->dn, NULL,
>> -                               pdev_parent ? &pdev_parent->dev : NULL);
>> +               ret = of_platform_bus_create(rd->dn, of_default_bus_match_table,
>> +                                            NULL, pdev_parent ?
>> +                                            &pdev_parent->dev : NULL, true);
> I think this should be of_platform_default_populate() instead.
> 
>>                 of_dev_put(pdev_parent);
>>
>> -               if (pdev == NULL) {
>> +               if (ret) {
>>                         pr_err("%s: failed to create for '%s'\n",
>>                                         __func__, rd->dn->full_name);
>> -                       /* of_platform_device_create tosses the error code */
>> -                       return notifier_from_errno(-EINVAL);
>> +                       return notifier_from_errno(ret);
>>                 }
>>                 break;

-- 
Best regards,
Alexander Sverdlin.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2] of/platform: Ignore disabled devices in of_platform_populate()
       [not found]                 ` <20170123125204.22233-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
  2017-01-23 14:33                   ` Alexander Sverdlin
@ 2017-09-19 15:23                   ` Alexander Sverdlin
  1 sibling, 0 replies; 16+ messages in thread
From: Alexander Sverdlin @ 2017-09-19 15:23 UTC (permalink / raw)
  Cc: Rob Herring, Frank Rowand, devicetree-u79uwXL29TY76Z2rM5mHXA

PING?

On 23/01/17 13:52, Alexander Sverdlin wrote:
> Check the status property and give up early enough. Otherwise
> OF_POPULATED_BUS might be set for disabled bus which will prevent
> it from being populated later (if enabled).
> 
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> ---
>  drivers/of/platform.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index 35de1fc59fa6..060621d94f1a 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -476,6 +476,10 @@ int of_platform_populate(struct device_node *root,
>  	root = root ? of_node_get(root) : of_find_node_by_path("/");
>  	if (!root)
>  		return -EINVAL;
> +	if (!of_device_is_available(root)) {
> +		of_node_put(root);
> +		return 0;
> +	}
>  
>  	pr_debug("%s()\n", __func__);
>  	pr_debug(" starting at: %s\n", root->full_name);

-- 
Best regards,
Alexander Sverdlin.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices
       [not found]         ` <43407912-3ecd-97c7-a90a-a9cd07a4b3ae-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
@ 2017-09-19 16:27           ` Rob Herring
  0 siblings, 0 replies; 16+ messages in thread
From: Rob Herring @ 2017-09-19 16:27 UTC (permalink / raw)
  To: Alexander Sverdlin
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Frank Rowand, Pantelis Antoniou

On Tue, Sep 19, 2017 at 10:13 AM, Alexander Sverdlin
<alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org> wrote:
> Hello Rob,
>
> On 27/10/16 15:00, Rob Herring wrote:
>> On Thu, Oct 20, 2016 at 6:02 AM, Alexander Sverdlin
>> <alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org> wrote:
>>> of_platform_notify() requires parents to have OF_POPULATED_BUS to be set
>>> (which is correct way to verify healthy platform bus), but uses
>>> of_platform_device_create() to create devices, which never sets the above
>>> flag. Therefore it's not possible to add platform buses via overlays.
>> Can you create a unit test case that has the problem.
>
> PING
> The tests for the highlighted problem were presented here:
> http://www.spinics.net/lists/devicetree/msg160016.html

Can you please rebase and resend these.

Rob
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2017-09-19 16:27 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-20 11:02 [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices Alexander Sverdlin
     [not found] ` <b317f693-98b5-ba1e-1184-83735a68db9b-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2016-10-27 13:00   ` Rob Herring
     [not found]     ` <CAL_JsqJZ__mUwRT14BmNQKaa_mAPsJm0iWP8sb6Oqs+_-Gu5hw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-20 17:38       ` Alexander Sverdlin
     [not found]         ` <3da6854d-8361-1724-2a8a-36f28449733e-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2017-01-21 19:51           ` Rob Herring
     [not found]             ` <CAL_JsqKb8KUgit-q_cOON8VgZBsrXEQd2EcC0iF=ou_271Vg_w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-23 12:21               ` [PATCH] of/platform: Ignore disabled devices in of_platform_populate() Alexander Sverdlin
     [not found]                 ` <20170123122151.21908-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2017-01-23 12:24                   ` Alexander Sverdlin
2017-01-23 12:52               ` [PATCH v2] " Alexander Sverdlin
     [not found]                 ` <20170123125204.22233-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2017-01-23 14:33                   ` Alexander Sverdlin
     [not found]                     ` <711e6067-ab41-8217-b947-2b4c356aaaba-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2017-01-23 15:09                       ` Alexander Sverdlin
2017-09-19 15:23                   ` Alexander Sverdlin
2017-01-23 15:07               ` [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices Alexander Sverdlin
2017-01-20 20:57       ` [PATCH 0/2] Ensure that platform buses from overlays are functional Alexander Sverdlin
     [not found]         ` <20170120205745.11851-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2017-01-20 21:02           ` [PATCH 1/2] of/platform: dynamic: Use of_platform_bus_create() to create devices Alexander Sverdlin
     [not found]             ` <20170120210234.11924-1-alexander.sverdlin-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2017-01-20 21:02               ` [PATCH 2/2] of/unittest: Test platform bus added from overlay Alexander Sverdlin
2017-09-19 15:13       ` [PATCH] of/platform: dynamic: Use of_platform_bus_create() to create devices Alexander Sverdlin
     [not found]         ` <43407912-3ecd-97c7-a90a-a9cd07a4b3ae-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2017-09-19 16:27           ` Rob Herring

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.