* [PATCH v3 0/2] KVM: arm64: Support FF-A direct messaging interfaces
@ 2025-11-19 2:07 Per Larsen via B4 Relay
2025-11-19 2:07 ` [PATCH v3 1/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler Per Larsen via B4 Relay
2025-11-19 2:07 ` [PATCH v3 2/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ2 " Per Larsen via B4 Relay
0 siblings, 2 replies; 7+ messages in thread
From: Per Larsen via B4 Relay @ 2025-11-19 2:07 UTC (permalink / raw)
To: Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu,
Catalin Marinas, Will Deacon, Yeoreum Yun, Ben Horgan,
Oliver Upton
Cc: Armelle Laine, Sebastien Ene, linux-arm-kernel, kvmarm,
linux-kernel, Per Larsen
Support FFA_MSG_SEND_DIRECT_REQ unconditionally.
Support FFA_MSG_SEND_DIRECT_REQ2 if hypervisor negotiated version 1.2+.
Framework messages (FF-A control plane) are filtered out. For
FFA_MSG_SEND_DIRECT_REQ, we look at flags in w2. Messages using the REQ2
interface are always partition messages.
The second patch was part of a previous patch set [0] but was dropped
since the use case was unclear. A clear use case has now appeared: use
TPM device with CRB over FF-A when kernel boots with pkvm [1].
Tested by booting Android under QEMU.
Best Regards,
Per
[0]: https://lore.kernel.org/all/20250730-virtio-msg-ffa-v9-0-7f1b55c8d149@google.com/
[1]: https://lore.kernel.org/all/20251027191729.1704744-1-yeoreum.yun@arm.com/
Signed-off-by: Per Larsen <perlarsen@google.com>
---
Changes in v3:
- Filter out framework messages as suggested by Will Deacon. Update cover letter accordingly.
- Update trailers: Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com>
- Link to v2: https://lore.kernel.org/r/20251030-host-direct-messages-v2-0-9f27cef36730@google.com
Changes in v2:
- 1/2: Drop support for FFA_ID_GET interface in host handler.
- Link to v1: https://lore.kernel.org/r/20251030-host-direct-messages-v1-0-463e57871c8f@google.com
---
Per Larsen (1):
KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ2 in host handler
Sebastian Ene (1):
KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler
arch/arm64/kvm/hyp/nvhe/ffa.c | 33 +++++++++++++++++++++++++++++++++
include/linux/arm_ffa.h | 3 +++
2 files changed, 36 insertions(+)
---
base-commit: e7c375b181600caf135cfd03eadbc45eb530f2cb
change-id: 20251029-host-direct-messages-5201d7f55abd
Best regards,
--
Per Larsen <perlarsen@google.com>
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v3 1/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler 2025-11-19 2:07 [PATCH v3 0/2] KVM: arm64: Support FF-A direct messaging interfaces Per Larsen via B4 Relay @ 2025-11-19 2:07 ` Per Larsen via B4 Relay 2026-01-08 15:26 ` Will Deacon 2025-11-19 2:07 ` [PATCH v3 2/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ2 " Per Larsen via B4 Relay 1 sibling, 1 reply; 7+ messages in thread From: Per Larsen via B4 Relay @ 2025-11-19 2:07 UTC (permalink / raw) To: Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu, Catalin Marinas, Will Deacon, Yeoreum Yun, Ben Horgan, Oliver Upton Cc: Armelle Laine, Sebastien Ene, linux-arm-kernel, kvmarm, linux-kernel, Per Larsen From: Sebastian Ene <sebastianene@google.com> Allow direct messages to be forwarded from the host. The host should not be sending framework messages so they are filtered out. Signed-off-by: Sebastian Ene <sebastianene@google.com> Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com> Signed-off-by: Per Larsen <perlarsen@google.com> --- arch/arm64/kvm/hyp/nvhe/ffa.c | 22 ++++++++++++++++++++++ include/linux/arm_ffa.h | 3 +++ 2 files changed, 25 insertions(+) diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c index 58b7d0c477d7fce235fc70d089d175c7879861b5..a38a3ab497e5eac11777109684a33f02d88d09a1 100644 --- a/arch/arm64/kvm/hyp/nvhe/ffa.c +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c @@ -862,6 +862,23 @@ static void do_ffa_part_get(struct arm_smccc_1_2_regs *res, hyp_spin_unlock(&host_buffers.lock); } +static void do_ffa_direct_msg(struct arm_smccc_1_2_regs *res, + struct kvm_cpu_context *ctxt, + u64 vm_handle) +{ + DECLARE_REG(u32, flags, ctxt, 2); + + struct arm_smccc_1_2_regs *args = (void *)&ctxt->regs.regs[0]; + + /* filter out framework messages */ + if (FIELD_GET(FFA_MSG_FLAGS_MSG_TYPE, flags)) { + ffa_to_smccc_error(res, FFA_RET_INVALID_PARAMETERS); + return; + } + + arm_smccc_1_2_smc(args, res); +} + bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt, u32 func_id) { struct arm_smccc_1_2_regs res; @@ -920,6 +937,11 @@ bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt, u32 func_id) case FFA_PARTITION_INFO_GET: do_ffa_part_get(&res, host_ctxt); goto out_handled; + case FFA_MSG_SEND_DIRECT_REQ: + case FFA_FN64_MSG_SEND_DIRECT_REQ: + + do_ffa_direct_msg(&res, host_ctxt, HOST_FFA_ID); + goto out_handled; } if (ffa_call_supported(func_id)) diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h index 81e603839c4a51873090b7e22edbe7b33a7e94df..d209d0cdac1eb804be01e4607acac8f76cc99e40 100644 --- a/include/linux/arm_ffa.h +++ b/include/linux/arm_ffa.h @@ -130,6 +130,9 @@ #define FFA_FEAT_RXTX_MIN_SZ_16K 2 #define FFA_FEAT_RXTX_MIN_SZ_MASK GENMASK(1, 0) +/* FFA message flags */ +#define FFA_MSG_FLAGS_MSG_TYPE BIT(31) + /* FFA Bus/Device/Driver related */ struct ffa_device { u32 id; -- 2.52.0.rc1.455.g30608eb744-goog ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler 2025-11-19 2:07 ` [PATCH v3 1/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler Per Larsen via B4 Relay @ 2026-01-08 15:26 ` Will Deacon 2026-01-09 11:18 ` Sebastian Ene 0 siblings, 1 reply; 7+ messages in thread From: Will Deacon @ 2026-01-08 15:26 UTC (permalink / raw) To: perlarsen Cc: Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu, Catalin Marinas, Yeoreum Yun, Ben Horgan, Oliver Upton, Armelle Laine, Sebastien Ene, linux-arm-kernel, kvmarm, linux-kernel On Wed, Nov 19, 2025 at 02:07:53AM +0000, Per Larsen via B4 Relay wrote: > From: Sebastian Ene <sebastianene@google.com> > > Allow direct messages to be forwarded from the host. The host should > not be sending framework messages so they are filtered out. > > Signed-off-by: Sebastian Ene <sebastianene@google.com> > Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com> > Signed-off-by: Per Larsen <perlarsen@google.com> > --- > arch/arm64/kvm/hyp/nvhe/ffa.c | 22 ++++++++++++++++++++++ > include/linux/arm_ffa.h | 3 +++ > 2 files changed, 25 insertions(+) > > diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c > index 58b7d0c477d7fce235fc70d089d175c7879861b5..a38a3ab497e5eac11777109684a33f02d88d09a1 100644 > --- a/arch/arm64/kvm/hyp/nvhe/ffa.c > +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c > @@ -862,6 +862,23 @@ static void do_ffa_part_get(struct arm_smccc_1_2_regs *res, > hyp_spin_unlock(&host_buffers.lock); > } > > +static void do_ffa_direct_msg(struct arm_smccc_1_2_regs *res, > + struct kvm_cpu_context *ctxt, > + u64 vm_handle) > +{ > + DECLARE_REG(u32, flags, ctxt, 2); > + > + struct arm_smccc_1_2_regs *args = (void *)&ctxt->regs.regs[0]; > + > + /* filter out framework messages */ > + if (FIELD_GET(FFA_MSG_FLAGS_MSG_TYPE, flags)) { Wouldn't we be better off just checking that flags is 0? The rest of it is SBZ or MBZ in the current spec. > + ffa_to_smccc_error(res, FFA_RET_INVALID_PARAMETERS); > + return; > + } > + > + arm_smccc_1_2_smc(args, res); > +} > + > bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt, u32 func_id) > { > struct arm_smccc_1_2_regs res; > @@ -920,6 +937,11 @@ bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt, u32 func_id) > case FFA_PARTITION_INFO_GET: > do_ffa_part_get(&res, host_ctxt); > goto out_handled; > + case FFA_MSG_SEND_DIRECT_REQ: > + case FFA_FN64_MSG_SEND_DIRECT_REQ: > + Weird whitespace addition ^^ > + do_ffa_direct_msg(&res, host_ctxt, HOST_FFA_ID); What's the point of passing HOST_FFA_ID here? Is that supposed to end up in the Sender ID bits of W1? Will ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler 2026-01-08 15:26 ` Will Deacon @ 2026-01-09 11:18 ` Sebastian Ene 2026-01-09 11:37 ` Will Deacon 0 siblings, 1 reply; 7+ messages in thread From: Sebastian Ene @ 2026-01-09 11:18 UTC (permalink / raw) To: Will Deacon Cc: perlarsen, Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu, Catalin Marinas, Yeoreum Yun, Ben Horgan, Oliver Upton, Armelle Laine, linux-arm-kernel, kvmarm, linux-kernel On Thu, Jan 08, 2026 at 03:26:21PM +0000, Will Deacon wrote: Hi Will, > On Wed, Nov 19, 2025 at 02:07:53AM +0000, Per Larsen via B4 Relay wrote: > > From: Sebastian Ene <sebastianene@google.com> > > > > Allow direct messages to be forwarded from the host. The host should > > not be sending framework messages so they are filtered out. > > > > Signed-off-by: Sebastian Ene <sebastianene@google.com> > > Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com> > > Signed-off-by: Per Larsen <perlarsen@google.com> > > --- > > arch/arm64/kvm/hyp/nvhe/ffa.c | 22 ++++++++++++++++++++++ > > include/linux/arm_ffa.h | 3 +++ > > 2 files changed, 25 insertions(+) > > > > diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c > > index 58b7d0c477d7fce235fc70d089d175c7879861b5..a38a3ab497e5eac11777109684a33f02d88d09a1 100644 > > --- a/arch/arm64/kvm/hyp/nvhe/ffa.c > > +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c > > @@ -862,6 +862,23 @@ static void do_ffa_part_get(struct arm_smccc_1_2_regs *res, > > hyp_spin_unlock(&host_buffers.lock); > > } > > > > +static void do_ffa_direct_msg(struct arm_smccc_1_2_regs *res, > > + struct kvm_cpu_context *ctxt, > > + u64 vm_handle) > > +{ > > + DECLARE_REG(u32, flags, ctxt, 2); > > + > > + struct arm_smccc_1_2_regs *args = (void *)&ctxt->regs.regs[0]; > > + > > + /* filter out framework messages */ > > + if (FIELD_GET(FFA_MSG_FLAGS_MSG_TYPE, flags)) { > > Wouldn't we be better off just checking that flags is 0? The rest of it > is SBZ or MBZ in the current spec. Yes, we can simplify it in this way. > > > + ffa_to_smccc_error(res, FFA_RET_INVALID_PARAMETERS); > > + return; > > + } > > + > > + arm_smccc_1_2_smc(args, res); > > +} > > + > > bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt, u32 func_id) > > { > > struct arm_smccc_1_2_regs res; > > @@ -920,6 +937,11 @@ bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt, u32 func_id) > > case FFA_PARTITION_INFO_GET: > > do_ffa_part_get(&res, host_ctxt); > > goto out_handled; > > + case FFA_MSG_SEND_DIRECT_REQ: > > + case FFA_FN64_MSG_SEND_DIRECT_REQ: > > + > > Weird whitespace addition ^^ > Let me clear this space out. > > + do_ffa_direct_msg(&res, host_ctxt, HOST_FFA_ID); > > What's the point of passing HOST_FFA_ID here? Is that supposed to end up > in the Sender ID bits of W1? I can remove it, this doesn't bring too much for upstream but on the android kernel with guest-ffa it makes sense because we need to validate the sender to prevent impersonation. > > Will Thanks, Sebastian ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler 2026-01-09 11:18 ` Sebastian Ene @ 2026-01-09 11:37 ` Will Deacon 0 siblings, 0 replies; 7+ messages in thread From: Will Deacon @ 2026-01-09 11:37 UTC (permalink / raw) To: Sebastian Ene Cc: perlarsen, Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu, Catalin Marinas, Yeoreum Yun, Ben Horgan, Oliver Upton, Armelle Laine, linux-arm-kernel, kvmarm, linux-kernel Hey Seb, Cheers for the reply. On Fri, Jan 09, 2026 at 11:18:33AM +0000, Sebastian Ene wrote: > On Thu, Jan 08, 2026 at 03:26:21PM +0000, Will Deacon wrote: > > On Wed, Nov 19, 2025 at 02:07:53AM +0000, Per Larsen via B4 Relay wrote: > > > From: Sebastian Ene <sebastianene@google.com> > > > > > > Allow direct messages to be forwarded from the host. The host should > > > not be sending framework messages so they are filtered out. > > > > > > Signed-off-by: Sebastian Ene <sebastianene@google.com> > > > Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com> > > > Signed-off-by: Per Larsen <perlarsen@google.com> > > > --- > > > arch/arm64/kvm/hyp/nvhe/ffa.c | 22 ++++++++++++++++++++++ > > > include/linux/arm_ffa.h | 3 +++ > > > 2 files changed, 25 insertions(+) > > > > > > diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c > > > index 58b7d0c477d7fce235fc70d089d175c7879861b5..a38a3ab497e5eac11777109684a33f02d88d09a1 100644 > > > --- a/arch/arm64/kvm/hyp/nvhe/ffa.c > > > +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c > > > @@ -862,6 +862,23 @@ static void do_ffa_part_get(struct arm_smccc_1_2_regs *res, > > > hyp_spin_unlock(&host_buffers.lock); > > > } > > > > > > +static void do_ffa_direct_msg(struct arm_smccc_1_2_regs *res, > > > + struct kvm_cpu_context *ctxt, > > > + u64 vm_handle) > > > +{ > > > + DECLARE_REG(u32, flags, ctxt, 2); > > > + > > > + struct arm_smccc_1_2_regs *args = (void *)&ctxt->regs.regs[0]; > > > + > > > + /* filter out framework messages */ > > > + if (FIELD_GET(FFA_MSG_FLAGS_MSG_TYPE, flags)) { > > > > Wouldn't we be better off just checking that flags is 0? The rest of it > > is SBZ or MBZ in the current spec. > > Yes, we can simplify it in this way. I think it would also be more robust if new messaging types are added in future, as we would fail safe. > > > + do_ffa_direct_msg(&res, host_ctxt, HOST_FFA_ID); > > > > What's the point of passing HOST_FFA_ID here? Is that supposed to end up > > in the Sender ID bits of W1? > > I can remove it, this doesn't bring too much for upstream but on the > android kernel with guest-ffa it makes sense because we need to validate > the sender to prevent impersonation. We could also validate that the sender is HOST_FFA_ID in this case, but that seems to be missing atm. Cheers, Will ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 2/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ2 in host handler 2025-11-19 2:07 [PATCH v3 0/2] KVM: arm64: Support FF-A direct messaging interfaces Per Larsen via B4 Relay 2025-11-19 2:07 ` [PATCH v3 1/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler Per Larsen via B4 Relay @ 2025-11-19 2:07 ` Per Larsen via B4 Relay 2026-01-08 15:30 ` Will Deacon 1 sibling, 1 reply; 7+ messages in thread From: Per Larsen via B4 Relay @ 2025-11-19 2:07 UTC (permalink / raw) To: Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu, Catalin Marinas, Will Deacon, Yeoreum Yun, Ben Horgan, Oliver Upton Cc: Armelle Laine, Sebastien Ene, linux-arm-kernel, kvmarm, linux-kernel, Per Larsen From: Per Larsen <perlarsen@google.com> FF-A 1.2 adds the DIRECT_REQ2 messaging interface which is similar to the existing FFA_MSG_SEND_DIRECT_{REQ,RESP} functions and can use the existing handler function. Add support for FFA_MSG_SEND_DIRECT_REQ2 in the host ffa handler. Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com> Signed-off-by: Per Larsen <perlarsen@google.com> --- arch/arm64/kvm/hyp/nvhe/ffa.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c index a38a3ab497e5eac11777109684a33f02d88d09a1..c794802bda589b315faf978086ad164a2aee510a 100644 --- a/arch/arm64/kvm/hyp/nvhe/ffa.c +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c @@ -683,8 +683,10 @@ static bool ffa_call_supported(u64 func_id) case FFA_NOTIFICATION_SET: case FFA_NOTIFICATION_GET: case FFA_NOTIFICATION_INFO_GET: + return false; /* Optional interfaces added in FF-A 1.2 */ case FFA_MSG_SEND_DIRECT_REQ2: /* Optional per 7.5.1 */ + return hyp_ffa_version >= FFA_VERSION_1_2; case FFA_MSG_SEND_DIRECT_RESP2: /* Optional per 7.5.1 */ case FFA_CONSOLE_LOG: /* Optional per 13.1: not in Table 13.1 */ case FFA_PARTITION_INFO_GET_REGS: /* Optional for virtual instances per 13.1 */ @@ -866,12 +868,16 @@ static void do_ffa_direct_msg(struct arm_smccc_1_2_regs *res, struct kvm_cpu_context *ctxt, u64 vm_handle) { + DECLARE_REG(u64, func_id, ctxt, 0); DECLARE_REG(u32, flags, ctxt, 2); struct arm_smccc_1_2_regs *args = (void *)&ctxt->regs.regs[0]; - /* filter out framework messages */ - if (FIELD_GET(FFA_MSG_FLAGS_MSG_TYPE, flags)) { + /* + * filter out framework messages. + * FFA_MSG_SEND_DIRECT_REQ2 is only for partition messages. + */ + if (func_id != FFA_MSG_SEND_DIRECT_REQ2 && FIELD_GET(FFA_MSG_FLAGS_MSG_TYPE, flags)) { ffa_to_smccc_error(res, FFA_RET_INVALID_PARAMETERS); return; } @@ -937,6 +943,10 @@ bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt, u32 func_id) case FFA_PARTITION_INFO_GET: do_ffa_part_get(&res, host_ctxt); goto out_handled; + case FFA_MSG_SEND_DIRECT_REQ2: + if (!ffa_call_supported(func_id)) + goto out_not_supported; + fallthrough; case FFA_MSG_SEND_DIRECT_REQ: case FFA_FN64_MSG_SEND_DIRECT_REQ: @@ -947,6 +957,7 @@ bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt, u32 func_id) if (ffa_call_supported(func_id)) return false; /* Pass through */ +out_not_supported: ffa_to_smccc_error(&res, FFA_RET_NOT_SUPPORTED); out_handled: ffa_set_retval(host_ctxt, &res); -- 2.52.0.rc1.455.g30608eb744-goog ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ2 in host handler 2025-11-19 2:07 ` [PATCH v3 2/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ2 " Per Larsen via B4 Relay @ 2026-01-08 15:30 ` Will Deacon 0 siblings, 0 replies; 7+ messages in thread From: Will Deacon @ 2026-01-08 15:30 UTC (permalink / raw) To: perlarsen Cc: Marc Zyngier, Joey Gouly, Suzuki K Poulose, Zenghui Yu, Catalin Marinas, Yeoreum Yun, Ben Horgan, Oliver Upton, Armelle Laine, Sebastien Ene, linux-arm-kernel, kvmarm, linux-kernel On Wed, Nov 19, 2025 at 02:07:54AM +0000, Per Larsen via B4 Relay wrote: > From: Per Larsen <perlarsen@google.com> > > FF-A 1.2 adds the DIRECT_REQ2 messaging interface which is similar to > the existing FFA_MSG_SEND_DIRECT_{REQ,RESP} functions and can use the > existing handler function. Add support for FFA_MSG_SEND_DIRECT_REQ2 in > the host ffa handler. > > Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com> > Signed-off-by: Per Larsen <perlarsen@google.com> > --- > arch/arm64/kvm/hyp/nvhe/ffa.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c > index a38a3ab497e5eac11777109684a33f02d88d09a1..c794802bda589b315faf978086ad164a2aee510a 100644 > --- a/arch/arm64/kvm/hyp/nvhe/ffa.c > +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c > @@ -683,8 +683,10 @@ static bool ffa_call_supported(u64 func_id) > case FFA_NOTIFICATION_SET: > case FFA_NOTIFICATION_GET: > case FFA_NOTIFICATION_INFO_GET: > + return false; > /* Optional interfaces added in FF-A 1.2 */ > case FFA_MSG_SEND_DIRECT_REQ2: /* Optional per 7.5.1 */ > + return hyp_ffa_version >= FFA_VERSION_1_2; You might as well just move this to the end and avoid having to add the 'return false' above. > case FFA_MSG_SEND_DIRECT_RESP2: /* Optional per 7.5.1 */ > case FFA_CONSOLE_LOG: /* Optional per 13.1: not in Table 13.1 */ > case FFA_PARTITION_INFO_GET_REGS: /* Optional for virtual instances per 13.1 */ > @@ -866,12 +868,16 @@ static void do_ffa_direct_msg(struct arm_smccc_1_2_regs *res, > struct kvm_cpu_context *ctxt, > u64 vm_handle) > { > + DECLARE_REG(u64, func_id, ctxt, 0); > DECLARE_REG(u32, flags, ctxt, 2); > > struct arm_smccc_1_2_regs *args = (void *)&ctxt->regs.regs[0]; > > - /* filter out framework messages */ > - if (FIELD_GET(FFA_MSG_FLAGS_MSG_TYPE, flags)) { > + /* > + * filter out framework messages. > + * FFA_MSG_SEND_DIRECT_REQ2 is only for partition messages. > + */ > + if (func_id != FFA_MSG_SEND_DIRECT_REQ2 && FIELD_GET(FFA_MSG_FLAGS_MSG_TYPE, flags)) { > ffa_to_smccc_error(res, FFA_RET_INVALID_PARAMETERS); > return; > } It would probably be better to switch the polarity of this check so that you look at flags if FFA_MSG_SEND_DIRECT_REQ or FFA_FN64_MSG_SEND_DIRECT_REQ rather than if !REQ2. and again, I'm not seeing what the 'vm_handle' argument is doing here. Will ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-01-09 11:37 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-11-19 2:07 [PATCH v3 0/2] KVM: arm64: Support FF-A direct messaging interfaces Per Larsen via B4 Relay 2025-11-19 2:07 ` [PATCH v3 1/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ in host handler Per Larsen via B4 Relay 2026-01-08 15:26 ` Will Deacon 2026-01-09 11:18 ` Sebastian Ene 2026-01-09 11:37 ` Will Deacon 2025-11-19 2:07 ` [PATCH v3 2/2] KVM: arm64: Support FFA_MSG_SEND_DIRECT_REQ2 " Per Larsen via B4 Relay 2026-01-08 15:30 ` Will Deacon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox