Re: [PATCH v18 7/7] firmware: arm_rmm: Add wrappers for Realm related RMI commands
From: Suzuki K Poulose
Date: Tue Sep 15 2026 - 15:57:16 EST
On 15/09/2026 20:35, Alper Gun wrote:
On Sat, Sep 12, 2026 at 1:37 AM Suzuki K Poulose <suzuki.poulose@xxxxxxx> wrote:
[...]
+/**
+ * rmi_rtt_destroy() - Destroy an RTT
+ * @rd: PA of the RD
+ * @ipa: Base of the IPA range described by the RTT
+ * @level: RTT level
+ * @out_rtt: Pointer to write the PA of the RTT which was destroyed
+ * @out_top: Pointer to write the top IPA of non-live RTT entries, from entry
+ * at which the RTT walk terminated.
+ *
+ * Destroys an RTT. The RTT must be non-live, i.e. none of the entries in the
+ * table are in ASSIGNED or TABLE state.
+ *
+ * Return: 0 on success, positive RMI result code or negative Linux error code.
+ */
+static inline long rmi_rtt_destroy(unsigned long rd,
+ unsigned long ipa,
+ long level,
+ unsigned long *out_rtt,
+ unsigned long *out_top)
+{
+ struct arm_smccc_1_2_regs regs = {
+ SMC_RMI_RTT_DESTROY, rd, ipa, level
+ };
+ long ret = rmi_sro_execute(®s);
+
+ if (ret != RMI_SUCCESS)
+ return ret;
+
+ if (out_rtt)
+ *out_rtt = regs.a1;
+ if (out_top)
+ *out_top = regs.a2;
+
+ return RMI_SUCCESS;
+}
Doesn't out_top (regs.a2) need to be populated on RMI_ERROR_RTT as well?
realm_tear_down_rtt_level() checks next_addr > addr under case
RMI_ERROR_RTT: to determine whether the RTT is missing or has child tables
that need recursive teardown.
You're right. The out_top is valid even when we get RMI_ERROR_RTT. I
will fix it.
Cheers
Suzuki
Thanks,
Alper