powerpc/fadump: invoke ibm,os-term with rtas_call_unlocked()

Invoke ibm,os-term call with rtas_call_unlocked(), without using the
RTAS spinlock, to avoid deadlock in the unlikely event of a machine
crash while making an RTAS call.

Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
Reviewed-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230609071404.425529-1-hbathini@linux.ibm.com
This commit is contained in:
Hari Bathini 2023-06-09 12:44:04 +05:30 committed by Michael Ellerman
parent 701ca3657d
commit b949ee6801
1 changed files with 3 additions and 1 deletions

View File

@ -1587,6 +1587,7 @@ static bool ibm_extended_os_term;
void rtas_os_term(char *str)
{
s32 token = rtas_function_token(RTAS_FN_IBM_OS_TERM);
static struct rtas_args args;
int status;
/*
@ -1607,7 +1608,8 @@ void rtas_os_term(char *str)
* schedules.
*/
do {
status = rtas_call(token, 1, 1, NULL, __pa(rtas_os_term_buf));
rtas_call_unlocked(&args, token, 1, 1, NULL, __pa(rtas_os_term_buf));
status = be32_to_cpu(args.rets[0]);
} while (rtas_busy_delay_time(status));
if (status != 0)