From: Steven Price Activate the RMM after the basic configuration. This is a memory transferring, stateful operation. Signed-off-by: Steven Price Signed-off-by: Suzuki K Poulose --- Changes since v17: * Inline RMM_ACTIVATE command and remove the definitions from arm-rmi-cmds.h * Use scope-based cleanup to free sro object Changes since v16: * Split into a new patch --- drivers/firmware/arm_rmm/rmi.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/arm_rmm/rmi.c b/drivers/firmware/arm_rmm/rmi.c index 4f9898ece7547..ecc89e91d264d 100644 --- a/drivers/firmware/arm_rmm/rmi.c +++ b/drivers/firmware/arm_rmm/rmi.c @@ -762,6 +762,7 @@ static int rmi_configure(void) static int __init arm64_init_rmi(void) { int ret; + struct rmi_sro_state *sro __free(kfree) = NULL; /* Continue without realm support if we can't agree on a version */ ret = rmi_check_version(); @@ -776,7 +777,18 @@ static int __init arm64_init_rmi(void) if (ret) return ret; - return 0; + /* Activate the RMM */ + sro = kmalloc_obj(*sro); + if (!sro) + return -ENOMEM; + + ret = rmi_sro_memxfer_cmd(sro, GFP_KERNEL, SMC_RMI_RMM_ACTIVATE); + if (ret) { + pr_err("RMM activate failed\n"); + ret = ret < 0 ? ret : -ENXIO; + } + + return ret; } /* -- 2.43.0