Nathan Lynch <nath...@linux.ibm.com> writes: > dlpar_configure_connector() has two problems in its handling of > ibm,configure-connector's return status: > > 1. When the status is -2 (busy, call again), we call > ibm,configure-connector again immediately without checking whether > to schedule, which can result in monopolizing the CPU. > 2. Extended delay status (9900..9905) goes completely unhandled, > causing the configuration to unnecessarily terminate. > > Fix both of these issues by using rtas_busy_delay(). > > Fixes: ab519a011caa ("powerpc/pseries: Kernel DLPAR Infrastructure") > Signed-off-by: Nathan Lynch <nath...@linux.ibm.com>
Just following up and adding some people to cc in hopes of getting some review for this. > --- > arch/powerpc/platforms/pseries/dlpar.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/platforms/pseries/dlpar.c > b/arch/powerpc/platforms/pseries/dlpar.c > index 16e86ba8aa20..f6b7749d6ada 100644 > --- a/arch/powerpc/platforms/pseries/dlpar.c > +++ b/arch/powerpc/platforms/pseries/dlpar.c > @@ -127,7 +127,6 @@ void dlpar_free_cc_nodes(struct device_node *dn) > #define NEXT_PROPERTY 3 > #define PREV_PARENT 4 > #define MORE_MEMORY 5 > -#define CALL_AGAIN -2 > #define ERR_CFG_USE -9003 > > struct device_node *dlpar_configure_connector(__be32 drc_index, > @@ -168,6 +167,9 @@ struct device_node *dlpar_configure_connector(__be32 > drc_index, > > spin_unlock(&rtas_data_buf_lock); > > + if (rtas_busy_delay(rc)) > + continue; > + > switch (rc) { > case COMPLETE: > break; > @@ -216,9 +218,6 @@ struct device_node *dlpar_configure_connector(__be32 > drc_index, > last_dn = last_dn->parent; > break; > > - case CALL_AGAIN: > - break; > - > case MORE_MEMORY: > case ERR_CFG_USE: > default: > -- > 2.29.2