blob: 968a2e97da8a2c51277c607a86f858286e8e99bf [file] [log] [blame]
Karl Meakin07de26a2024-07-23 17:59:33 +01001/*
2 * Copyright 2024 The Hafnium Authors.
3 *
4 * Use of this source code is governed by a BSD-style
5 * license that can be found in the LICENSE file or at
6 * https://opensource.org/licenses/BSD-3-Clause.
7 */
8
9#pragma once
10
11#include "hf/vcpu.h"
12#include "hf/vm.h"
13
14/** Check validity of a FF-A direct message request. */
Karl Meakin117c8082024-12-04 16:03:28 +000015bool ffa_direct_msg_is_direct_request_valid(struct vcpu *current,
16 ffa_id_t sender_vm_id,
17 ffa_id_t receiver_vm_id);
Karl Meakin07de26a2024-07-23 17:59:33 +010018
19/** Check validity of a FF-A direct message response. */
Karl Meakin117c8082024-12-04 16:03:28 +000020bool ffa_direct_msg_is_direct_response_valid(struct vcpu *current,
21 ffa_id_t sender_vm_id,
22 ffa_id_t receiver_vm_id);
Karl Meakin07de26a2024-07-23 17:59:33 +010023
Karl Meakin117c8082024-12-04 16:03:28 +000024bool ffa_direct_msg_is_direct_request_supported(struct vm *sender_vm,
25 struct vm *receiver_vm,
26 uint32_t func);
Karl Meakin07de26a2024-07-23 17:59:33 +010027
Karl Meakin117c8082024-12-04 16:03:28 +000028bool ffa_direct_msg_direct_request_forward(ffa_id_t receiver_vm_id,
29 struct ffa_value args,
30 struct ffa_value *ret);
Karl Meakin07de26a2024-07-23 17:59:33 +010031
Karl Meakin117c8082024-12-04 16:03:28 +000032void ffa_direct_msg_wind_call_chain_ffa_direct_req(
Karl Meakin07de26a2024-07-23 17:59:33 +010033 struct vcpu_locked current_locked,
34 struct vcpu_locked receiver_vcpu_locked, ffa_id_t sender_vm_id);
35
Karl Meakin117c8082024-12-04 16:03:28 +000036void ffa_direct_msg_unwind_call_chain_ffa_direct_resp(
Karl Meakin07de26a2024-07-23 17:59:33 +010037 struct vcpu_locked current_locked, struct vcpu_locked next_locked);
Karl Meakina1150492025-01-31 13:22:08 +000038
39bool plat_ffa_handle_framework_msg(struct ffa_value args,
40 struct ffa_value *ret);
41
42bool plat_ffa_is_spmd_lp_id(ffa_id_t vm_id);