[PATCH] powerpc/pseries/dlpar: handle ibm, configure-connector delay status
Nathan Lynch
nathanl at linux.ibm.com
Sat Feb 6 00:15:16 AEDT 2021
Nathan Lynch <nathanl at 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 <nathanl at 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
More information about the Linuxppc-dev
mailing list