mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 18:19:28 +09:00
powerpc/pseries/dlpar: handle ibm, configure-connector delay status
[ Upstream commit768d70e19b] 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:ab519a011c("powerpc/pseries: Kernel DLPAR Infrastructure") Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com> Reviewed-by: Tyrel Datwyler <tyreld@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210107025900.410369-1-nathanl@linux.ibm.com Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b1b9048137
commit
c035dcae0b
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user