Re: [PATCH v2 1/3] powerpc/pseries: Device tree should only be updated once after suspend/migrate
On 01/22/2014 01:58 PM, Tyrel Datwyler wrote: From: Haren Myneni hb...@us.ibm.com From: Haren Myneni hb...@us.ibm.com The current code makes rtas calls for update-nodes, activate-firmware and then update-nodes again. The FW provides the same data for both update-nodes calls. As a result a proc entry exists error is reported for the second update while adding device nodes. This patch makes a single rtas call for update-nodes after activating the FW. It also add rtas_busy delay for the activate-firmware rtas call. Signed-off-by: Haren Myneni hb...@us.ibm.com Signed-off-by: Tyrel Datwyler tyr...@linux.vnet.ibm.com Acked-by: Nathan fontenot nf...@linux.vnet.ibm.com --- arch/powerpc/platforms/pseries/mobility.c | 26 ++ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c index cde4e0a..bde7eba 100644 --- a/arch/powerpc/platforms/pseries/mobility.c +++ b/arch/powerpc/platforms/pseries/mobility.c @@ -290,13 +290,6 @@ void post_mobility_fixup(void) int rc; int activate_fw_token; - rc = pseries_devicetree_update(MIGRATION_SCOPE); - if (rc) { - printk(KERN_ERR Initial post-mobility device tree update -failed: %d\n, rc); - return; - } - activate_fw_token = rtas_token(ibm,activate-firmware); if (activate_fw_token == RTAS_UNKNOWN_SERVICE) { printk(KERN_ERR Could not make post-mobility @@ -304,16 +297,17 @@ void post_mobility_fixup(void) return; } - rc = rtas_call(activate_fw_token, 0, 1, NULL); - if (!rc) { - rc = pseries_devicetree_update(MIGRATION_SCOPE); - if (rc) - printk(KERN_ERR Secondary post-mobility device tree -update failed: %d\n, rc); - } else { + do { + rc = rtas_call(activate_fw_token, 0, 1, NULL); + } while (rtas_busy_delay(rc)); + + if (rc) printk(KERN_ERR Post-mobility activate-fw failed: %d\n, rc); - return; - } + + rc = pseries_devicetree_update(MIGRATION_SCOPE); + if (rc) + printk(KERN_ERR Post-mobility device tree update + failed: %d\n, rc); return; } ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[PATCH v2 1/3] powerpc/pseries: Device tree should only be updated once after suspend/migrate
From: Haren Myneni hb...@us.ibm.com From: Haren Myneni hb...@us.ibm.com The current code makes rtas calls for update-nodes, activate-firmware and then update-nodes again. The FW provides the same data for both update-nodes calls. As a result a proc entry exists error is reported for the second update while adding device nodes. This patch makes a single rtas call for update-nodes after activating the FW. It also add rtas_busy delay for the activate-firmware rtas call. Signed-off-by: Haren Myneni hb...@us.ibm.com Signed-off-by: Tyrel Datwyler tyr...@linux.vnet.ibm.com --- arch/powerpc/platforms/pseries/mobility.c | 26 ++ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c index cde4e0a..bde7eba 100644 --- a/arch/powerpc/platforms/pseries/mobility.c +++ b/arch/powerpc/platforms/pseries/mobility.c @@ -290,13 +290,6 @@ void post_mobility_fixup(void) int rc; int activate_fw_token; - rc = pseries_devicetree_update(MIGRATION_SCOPE); - if (rc) { - printk(KERN_ERR Initial post-mobility device tree update - failed: %d\n, rc); - return; - } - activate_fw_token = rtas_token(ibm,activate-firmware); if (activate_fw_token == RTAS_UNKNOWN_SERVICE) { printk(KERN_ERR Could not make post-mobility @@ -304,16 +297,17 @@ void post_mobility_fixup(void) return; } - rc = rtas_call(activate_fw_token, 0, 1, NULL); - if (!rc) { - rc = pseries_devicetree_update(MIGRATION_SCOPE); - if (rc) - printk(KERN_ERR Secondary post-mobility device tree - update failed: %d\n, rc); - } else { + do { + rc = rtas_call(activate_fw_token, 0, 1, NULL); + } while (rtas_busy_delay(rc)); + + if (rc) printk(KERN_ERR Post-mobility activate-fw failed: %d\n, rc); - return; - } + + rc = pseries_devicetree_update(MIGRATION_SCOPE); + if (rc) + printk(KERN_ERR Post-mobility device tree update + failed: %d\n, rc); return; } -- 1.7.12.4 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev