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:
parent
701ca3657d
commit
b949ee6801
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue