blob: d19e758a5eead191ce328154ccc88ca2e034c705 [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. */
15bool plat_ffa_is_direct_request_valid(struct vcpu *current,
16 ffa_id_t sender_vm_id,
17 ffa_id_t receiver_vm_id);
18
19/** Check validity of a FF-A direct message response. */
20bool plat_ffa_is_direct_response_valid(struct vcpu *current,
21 ffa_id_t sender_vm_id,
22 ffa_id_t receiver_vm_id);
23
24bool plat_ffa_is_direct_request_supported(struct vm *sender_vm,
25 struct vm *receiver_vm,
26 uint32_t func);
27
28bool plat_ffa_direct_request_forward(ffa_id_t receiver_vm_id,
29 struct ffa_value args,
30 struct ffa_value *ret);
31
32void plat_ffa_wind_call_chain_ffa_direct_req(
33 struct vcpu_locked current_locked,
34 struct vcpu_locked receiver_vcpu_locked, ffa_id_t sender_vm_id);
35
36void plat_ffa_unwind_call_chain_ffa_direct_resp(
37 struct vcpu_locked current_locked, struct vcpu_locked next_locked);