Re: [PATCH v4 06/13] powerpc/rtas: Serialize firmware activation sequences
From: Aneesh Kumar K.V (IBM) <aneesh.kumar@kernel.org>
Date: 2023-11-20 20:22:46
From: Aneesh Kumar K.V (IBM) <aneesh.kumar@kernel.org>
Date: 2023-11-20 20:22:46
Nathan Lynch via B4 Relay [off-list ref] writes:
From: Nathan Lynch <redacted> Use the function lock API to prevent interleaving call sequences of the ibm,activate-firmware RTAS function, which typically requires multiple calls to complete the update. While the spec does not specifically prohibit interleaved sequences, there's almost certainly no advantage to allowing them.
Can we document what is the equivalent thing the userspace does? Reviewed-by: Aneesh Kumar K.V (IBM) <aneesh.kumar@kernel.org>
Signed-off-by: Nathan Lynch <redacted> --- arch/powerpc/kernel/rtas.c | 4 ++++ 1 file changed, 4 insertions(+)diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 52f2242d0c28..e38ba05ad613 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c@@ -1753,10 +1753,14 @@ void rtas_activate_firmware(void) return; } + rtas_function_lock(RTAS_FN_IBM_ACTIVATE_FIRMWARE); + do { fwrc = rtas_call(token, 0, 1, NULL); } while (rtas_busy_delay(fwrc)); + rtas_function_unlock(RTAS_FN_IBM_ACTIVATE_FIRMWARE); + if (fwrc) pr_err("ibm,activate-firmware failed (%i)\n", fwrc); }-- 2.41.0