blob: b1031121833be8b1a8fcde15831c9e979a016b4c [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
Karl Meakinfa1dcb82025-02-10 16:47:50 +000039bool ffa_direct_msg_handle_framework_msg(struct ffa_value args,
40 struct ffa_value *ret);
Karl Meakina1150492025-01-31 13:22:08 +000041
Karl Meakinfa1dcb82025-02-10 16:47:50 +000042bool ffa_direct_msg_precedes_in_call_chain(struct vcpu_locked current_locked,
43 struct vcpu_locked target_locked);
44
45bool ffa_direct_msg_is_spmd_lp_id(ffa_id_t vm_id);