Re: [PATCH v2] powerpc/pseries: dynamically added OF nodes need to call of_node_init

2014-07-15 Thread Grant Likely
On Thu, Jul 10, 2014 at 1:59 PM, Nathan Fontenot
nf...@linux.vnet.ibm.com wrote:
 On 07/10/2014 01:50 PM, Tyrel Datwyler wrote:
 Commit 75b57ecf9 refactored device tree nodes to use kobjects such that they
 can be exposed via /sysfs. A secondary commit 0829f6d1f furthered this rework
 by moving the kobect initialization logic out of of_node_add into its own
 of_node_init function. The inital commit removed the existing kref_init calls
 in the pseries dlpar code with the assumption kobject initialization would
 occur in of_node_add. The second commit had the side effect of triggering a
 BUG_ON during DLPAR, migration and suspend/resume operations as a result of
 dynamically added nodes being uninitialized.

 This patch fixes this by adding of_node_init calls in place of the previously
 removed kref_init calls.

 Fixes: 0829f6d1f69e (of: device_node kobject lifecycle fixes)
 Cc: sta...@vger.kernel.org
 Signed-off-by: Tyrel Datwyler tyr...@linux.vnet.ibm.com

 Acked-by: Nathan Fontenot nf...@linux.vnet.ibm.com

Acked-by: Grant Likely grant.lik...@linaro.org

Ben, are you going to take this or should I take it via my tree?

g.


 ---
 V2:
  - included stable kernel list on Cc per comment by mpe

  arch/powerpc/platforms/pseries/dlpar.c| 1 +
  arch/powerpc/platforms/pseries/reconfig.c | 1 +
  2 files changed, 2 insertions(+)

 diff --git a/arch/powerpc/platforms/pseries/dlpar.c 
 b/arch/powerpc/platforms/pseries/dlpar.c
 index 022b38e..2d0b4d6 100644
 --- a/arch/powerpc/platforms/pseries/dlpar.c
 +++ b/arch/powerpc/platforms/pseries/dlpar.c
 @@ -86,6 +86,7 @@ static struct device_node *dlpar_parse_cc_node(struct 
 cc_workarea *ccwa,
   }

   of_node_set_flag(dn, OF_DYNAMIC);
 + of_node_init(dn);

   return dn;
  }
 diff --git a/arch/powerpc/platforms/pseries/reconfig.c 
 b/arch/powerpc/platforms/pseries/reconfig.c
 index 0435bb6..1c0a60d 100644
 --- a/arch/powerpc/platforms/pseries/reconfig.c
 +++ b/arch/powerpc/platforms/pseries/reconfig.c
 @@ -69,6 +69,7 @@ static int pSeries_reconfig_add_node(const char *path, 
 struct property *proplist

   np-properties = proplist;
   of_node_set_flag(np, OF_DYNAMIC);
 + of_node_init(np);

   np-parent = derive_parent(path);
   if (IS_ERR(np-parent)) {


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[PATCH v2] powerpc/pseries: dynamically added OF nodes need to call of_node_init

2014-07-10 Thread Tyrel Datwyler
Commit 75b57ecf9 refactored device tree nodes to use kobjects such that they
can be exposed via /sysfs. A secondary commit 0829f6d1f furthered this rework
by moving the kobect initialization logic out of of_node_add into its own
of_node_init function. The inital commit removed the existing kref_init calls
in the pseries dlpar code with the assumption kobject initialization would
occur in of_node_add. The second commit had the side effect of triggering a
BUG_ON during DLPAR, migration and suspend/resume operations as a result of
dynamically added nodes being uninitialized.

This patch fixes this by adding of_node_init calls in place of the previously
removed kref_init calls.

Fixes: 0829f6d1f69e (of: device_node kobject lifecycle fixes)
Cc: sta...@vger.kernel.org
Signed-off-by: Tyrel Datwyler tyr...@linux.vnet.ibm.com
---
V2:
 - included stable kernel list on Cc per comment by mpe

 arch/powerpc/platforms/pseries/dlpar.c| 1 +
 arch/powerpc/platforms/pseries/reconfig.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/arch/powerpc/platforms/pseries/dlpar.c 
b/arch/powerpc/platforms/pseries/dlpar.c
index 022b38e..2d0b4d6 100644
--- a/arch/powerpc/platforms/pseries/dlpar.c
+++ b/arch/powerpc/platforms/pseries/dlpar.c
@@ -86,6 +86,7 @@ static struct device_node *dlpar_parse_cc_node(struct 
cc_workarea *ccwa,
}
 
of_node_set_flag(dn, OF_DYNAMIC);
+   of_node_init(dn);
 
return dn;
 }
diff --git a/arch/powerpc/platforms/pseries/reconfig.c 
b/arch/powerpc/platforms/pseries/reconfig.c
index 0435bb6..1c0a60d 100644
--- a/arch/powerpc/platforms/pseries/reconfig.c
+++ b/arch/powerpc/platforms/pseries/reconfig.c
@@ -69,6 +69,7 @@ static int pSeries_reconfig_add_node(const char *path, struct 
property *proplist
 
np-properties = proplist;
of_node_set_flag(np, OF_DYNAMIC);
+   of_node_init(np);
 
np-parent = derive_parent(path);
if (IS_ERR(np-parent)) {
-- 
1.7.12.4

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH v2] powerpc/pseries: dynamically added OF nodes need to call of_node_init

2014-07-10 Thread Nathan Fontenot
On 07/10/2014 01:50 PM, Tyrel Datwyler wrote:
 Commit 75b57ecf9 refactored device tree nodes to use kobjects such that they
 can be exposed via /sysfs. A secondary commit 0829f6d1f furthered this rework
 by moving the kobect initialization logic out of of_node_add into its own
 of_node_init function. The inital commit removed the existing kref_init calls
 in the pseries dlpar code with the assumption kobject initialization would
 occur in of_node_add. The second commit had the side effect of triggering a
 BUG_ON during DLPAR, migration and suspend/resume operations as a result of
 dynamically added nodes being uninitialized.
 
 This patch fixes this by adding of_node_init calls in place of the previously
 removed kref_init calls.
 
 Fixes: 0829f6d1f69e (of: device_node kobject lifecycle fixes)
 Cc: sta...@vger.kernel.org
 Signed-off-by: Tyrel Datwyler tyr...@linux.vnet.ibm.com

Acked-by: Nathan Fontenot nf...@linux.vnet.ibm.com

 ---
 V2:
  - included stable kernel list on Cc per comment by mpe
 
  arch/powerpc/platforms/pseries/dlpar.c| 1 +
  arch/powerpc/platforms/pseries/reconfig.c | 1 +
  2 files changed, 2 insertions(+)
 
 diff --git a/arch/powerpc/platforms/pseries/dlpar.c 
 b/arch/powerpc/platforms/pseries/dlpar.c
 index 022b38e..2d0b4d6 100644
 --- a/arch/powerpc/platforms/pseries/dlpar.c
 +++ b/arch/powerpc/platforms/pseries/dlpar.c
 @@ -86,6 +86,7 @@ static struct device_node *dlpar_parse_cc_node(struct 
 cc_workarea *ccwa,
   }
  
   of_node_set_flag(dn, OF_DYNAMIC);
 + of_node_init(dn);
  
   return dn;
  }
 diff --git a/arch/powerpc/platforms/pseries/reconfig.c 
 b/arch/powerpc/platforms/pseries/reconfig.c
 index 0435bb6..1c0a60d 100644
 --- a/arch/powerpc/platforms/pseries/reconfig.c
 +++ b/arch/powerpc/platforms/pseries/reconfig.c
 @@ -69,6 +69,7 @@ static int pSeries_reconfig_add_node(const char *path, 
 struct property *proplist
  
   np-properties = proplist;
   of_node_set_flag(np, OF_DYNAMIC);
 + of_node_init(np);
  
   np-parent = derive_parent(path);
   if (IS_ERR(np-parent)) {
 

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev