blob: 40171ffb98f0bf442f8ac614f547cd4eaee4d3e9 [file] [log] [blame]
Daniel Boulbyb2fb80e2021-02-03 15:09:23 +00001/*
2 * Copyright 2021 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#include "hf/ffa.h"
10
J-Alvesfa782092021-10-13 16:02:16 +010011#include "hf/arch/plat/ffa.h"
12
J-Alvesa0f317d2021-06-09 13:31:59 +010013#include "hf/ffa_internal.h"
Olivier Deprez55a189e2021-06-09 15:45:27 +020014#include "hf/vcpu.h"
J-Alvesc003a7a2021-03-18 13:06:53 +000015#include "hf/vm.h"
Daniel Boulbyb2fb80e2021-02-03 15:09:23 +000016
Daniel Boulby87b2dc82021-08-04 14:07:43 +010017struct ffa_value arch_ffa_features(uint32_t function_id)
18{
19 (void)function_id;
20 return ffa_error(FFA_NOT_SUPPORTED);
21}
22
J-Alves19e20cf2023-08-02 12:48:55 +010023ffa_id_t arch_ffa_spmc_id_get(void)
Daniel Boulbyb2fb80e2021-02-03 15:09:23 +000024{
25 return HF_SPMC_VM_ID;
26}
Olivier Deprez55a189e2021-06-09 15:45:27 +020027
28void plat_ffa_log_init(void)
29{
30}
31
J-Alvesc9227c82024-04-24 21:00:58 +010032bool plat_ffa_is_memory_send_valid(ffa_id_t receiver, ffa_id_t sender,
33 uint32_t share_func, bool multiple_borrower)
Maksims Svecovsa3d570c2021-12-08 11:16:32 +000034{
Maksims Svecovsa3d570c2021-12-08 11:16:32 +000035 (void)share_func;
J-Alvesc9227c82024-04-24 21:00:58 +010036 (void)receiver;
37 (void)sender;
38 (void)multiple_borrower;
Maksims Svecovsa3d570c2021-12-08 11:16:32 +000039
40 return true;
41}
42
Olivier Deprez55a189e2021-06-09 15:45:27 +020043bool plat_ffa_is_direct_request_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +010044 ffa_id_t sender_vm_id,
45 ffa_id_t receiver_vm_id)
Olivier Deprez55a189e2021-06-09 15:45:27 +020046{
47 (void)current;
48 (void)sender_vm_id;
49 (void)receiver_vm_id;
50
51 return true;
52}
53
J-Alves439ac972021-11-18 17:32:03 +000054bool plat_ffa_is_direct_request_supported(struct vm *sender_vm,
Kathleen Capella41fea932023-06-23 17:39:28 -040055 struct vm *receiver_vm, uint32_t func)
J-Alves439ac972021-11-18 17:32:03 +000056{
57 (void)sender_vm;
58 (void)receiver_vm;
Kathleen Capella41fea932023-06-23 17:39:28 -040059 (void)func;
J-Alves439ac972021-11-18 17:32:03 +000060
61 return false;
62}
63
Olivier Deprez55a189e2021-06-09 15:45:27 +020064bool plat_ffa_is_direct_response_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +010065 ffa_id_t sender_vm_id,
66 ffa_id_t receiver_vm_id)
Olivier Deprez55a189e2021-06-09 15:45:27 +020067{
68 (void)current;
69 (void)sender_vm_id;
70 (void)receiver_vm_id;
71
72 return true;
73}
74
J-Alves19e20cf2023-08-02 12:48:55 +010075bool plat_ffa_run_forward(ffa_id_t vm_id, ffa_vcpu_index_t vcpu_idx,
Raghu Krishnamurthy62f97a72021-07-27 02:14:59 -070076 struct ffa_value *ret)
77{
78 (void)vm_id;
79 (void)vcpu_idx;
80 (void)ret;
81
82 return false;
83}
84
Federico Recanati10bd06c2022-02-23 17:32:59 +010085void plat_ffa_vm_destroy(struct vm_locked to_destroy_locked)
86{
87 (void)to_destroy_locked;
88}
89
J-Alves70079932022-12-07 17:32:20 +000090void plat_ffa_rxtx_unmap_forward(struct vm_locked vm_locked)
Federico Recanati8da9e332022-02-10 11:00:17 +010091{
J-Alves70079932022-12-07 17:32:20 +000092 (void)vm_locked;
Federico Recanati8da9e332022-02-10 11:00:17 +010093}
94
J-Alves19e20cf2023-08-02 12:48:55 +010095bool plat_ffa_direct_request_forward(ffa_id_t receiver_vm_id,
Olivier Deprez55a189e2021-06-09 15:45:27 +020096 struct ffa_value args,
97 struct ffa_value *ret)
98{
99 (void)receiver_vm_id;
100 (void)args;
101 (void)ret;
102 return false;
103}
104
Federico Recanati7bef0b92022-03-17 14:56:22 +0100105bool plat_ffa_rx_release_forward(struct vm_locked vm_locked,
106 struct ffa_value *ret)
107{
108 (void)vm_locked;
109 (void)ret;
110
111 return false;
112}
113
Federico Recanati644f0462022-03-17 12:04:00 +0100114bool plat_ffa_acquire_receiver_rx(struct vm_locked to_locked,
115 struct ffa_value *ret)
116{
117 (void)to_locked;
118 (void)ret;
119
120 return false;
121}
122
Federico Recanati25053ee2022-03-14 15:01:53 +0100123bool plat_ffa_is_indirect_msg_supported(struct vm_locked sender_locked,
124 struct vm_locked receiver_locked)
125{
126 (void)sender_locked;
127 (void)receiver_locked;
128
129 return false;
130}
131
J-Alves19e20cf2023-08-02 12:48:55 +0100132bool plat_ffa_msg_send2_forward(ffa_id_t receiver_vm_id, ffa_id_t sender_vm_id,
133 struct ffa_value *ret)
Federico Recanati25053ee2022-03-14 15:01:53 +0100134{
135 (void)receiver_vm_id;
136 (void)sender_vm_id;
137 (void)ret;
138
139 return false;
140}
141
Olivier Deprez55a189e2021-06-09 15:45:27 +0200142ffa_memory_handle_t plat_ffa_memory_handle_make(uint64_t index)
143{
144 return index;
145}
146
147bool plat_ffa_memory_handle_allocated_by_current_world(
148 ffa_memory_handle_t handle)
149{
150 (void)handle;
151 return false;
152}
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100153
J-Alves7db32002021-12-14 14:44:50 +0000154uint32_t plat_ffa_other_world_mode(void)
155{
156 return 0U;
157}
158
J-Alvesc003a7a2021-03-18 13:06:53 +0000159bool plat_ffa_is_notifications_bind_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100160 ffa_id_t sender_id,
161 ffa_id_t receiver_id)
J-Alvesc003a7a2021-03-18 13:06:53 +0000162{
163 (void)current;
164 (void)sender_id;
165 (void)receiver_id;
166 return false;
167}
168
J-Alvesb15e9402021-09-08 11:44:42 +0100169bool plat_ffa_notifications_update_bindings_forward(
J-Alves19e20cf2023-08-02 12:48:55 +0100170 ffa_id_t receiver_id, ffa_id_t sender_id, uint32_t flags,
J-Alvesb15e9402021-09-08 11:44:42 +0100171 ffa_notifications_bitmap_t bitmap, bool is_bind, struct ffa_value *ret)
172{
173 (void)ret;
174 (void)receiver_id;
175 (void)sender_id;
176 (void)flags;
177 (void)bitmap;
178 (void)is_bind;
179 (void)ret;
180
181 return false;
182}
183
Federico Recanati8d8b1cf2022-04-14 13:16:00 +0200184void plat_ffa_rxtx_map_forward(struct vm_locked vm_locked)
185{
186 (void)vm_locked;
187}
188
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100189ffa_partition_properties_t plat_ffa_partition_properties(
J-Alves19e20cf2023-08-02 12:48:55 +0100190 ffa_id_t vm_id, const struct vm *target)
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100191{
J-Alvesfa782092021-10-13 16:02:16 +0100192 (void)vm_id;
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100193 (void)target;
194 return 0;
195}
Maksims Svecovs9ddf86a2021-05-06 17:17:21 +0100196
197bool plat_ffa_vm_managed_exit_supported(struct vm *vm)
198{
199 (void)vm;
200 return false;
201}
J-Alvesa0f317d2021-06-09 13:31:59 +0100202
J-Alves7ccaccf2024-02-01 14:25:23 +0000203/**
204 * Check validity of the calls:
205 * FFA_NOTIFICATION_BITMAP_CREATE/FFA_NOTIFICATION_BITMAP_DESTROY.
206 */
207struct ffa_value plat_ffa_is_notifications_bitmap_access_valid(
208 struct vcpu *current, ffa_id_t vm_id)
J-Alvesa0f317d2021-06-09 13:31:59 +0100209{
J-Alves7ccaccf2024-02-01 14:25:23 +0000210 /*
211 * Call should only be used by the Hypervisor, so any attempt of
212 * invocation from NWd FF-A endpoints should fail.
213 */
J-Alvesa0f317d2021-06-09 13:31:59 +0100214 (void)current;
215 (void)vm_id;
216
J-Alves7ccaccf2024-02-01 14:25:23 +0000217 return ffa_error(FFA_NOT_SUPPORTED);
J-Alvesa0f317d2021-06-09 13:31:59 +0100218}
219
J-Alvesaa79c012021-07-09 14:29:45 +0100220bool plat_ffa_is_notification_set_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100221 ffa_id_t sender_id,
222 ffa_id_t receiver_id)
J-Alvesaa79c012021-07-09 14:29:45 +0100223{
224 (void)current;
225 (void)sender_id;
226 (void)receiver_id;
227 return false;
228}
229
230bool plat_ffa_is_notification_get_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100231 ffa_id_t receiver_id, uint32_t flags)
J-Alvesaa79c012021-07-09 14:29:45 +0100232{
J-Alvesfc95a302022-04-22 14:18:23 +0100233 (void)flags;
J-Alvesaa79c012021-07-09 14:29:45 +0100234 (void)current;
235 (void)receiver_id;
236 return false;
237}
238
J-Alves98ff9562021-09-09 14:39:41 +0100239bool plat_ffa_notifications_get_from_sp(
240 struct vm_locked receiver_locked, ffa_vcpu_index_t vcpu_id,
J-Alvesfa782092021-10-13 16:02:16 +0100241 ffa_notifications_bitmap_t *from_sp, // NOLINT
242 struct ffa_value *ret) // NOLINT
J-Alves98ff9562021-09-09 14:39:41 +0100243{
244 (void)receiver_locked;
245 (void)vcpu_id;
246 (void)from_sp;
247 (void)ret;
248
249 return false;
250}
251
J-Alvesd605a092022-03-28 14:20:48 +0100252bool plat_ffa_notifications_get_framework_notifications(
253 struct vm_locked receiver_locked,
254 ffa_notifications_bitmap_t *from_fwk, // NOLINT
255 uint32_t flags, ffa_vcpu_index_t vcpu_id, struct ffa_value *ret)
256{
257 (void)receiver_locked;
258 (void)from_fwk;
259 (void)flags;
260 (void)vcpu_id;
261 (void)ret;
262
263 return false;
264}
265
J-Alves19e20cf2023-08-02 12:48:55 +0100266bool plat_ffa_notification_set_forward(ffa_id_t sender_vm_id,
267 ffa_id_t receiver_vm_id, uint32_t flags,
J-Alvesde7bd2f2021-09-09 19:54:35 +0100268 ffa_notifications_bitmap_t bitmap,
269 struct ffa_value *ret)
270{
271 (void)sender_vm_id;
272 (void)receiver_vm_id;
273 (void)flags;
274 (void)bitmap;
275 (void)ret;
276
277 return false;
278}
279
J-Alvesa0f317d2021-06-09 13:31:59 +0100280struct ffa_value plat_ffa_notifications_bitmap_create(
J-Alves19e20cf2023-08-02 12:48:55 +0100281 ffa_id_t vm_id, ffa_vcpu_count_t vcpu_count)
J-Alvesa0f317d2021-06-09 13:31:59 +0100282{
283 (void)vm_id;
284 (void)vcpu_count;
285
286 return ffa_error(FFA_NOT_SUPPORTED);
287}
288
J-Alves19e20cf2023-08-02 12:48:55 +0100289struct ffa_value plat_ffa_notifications_bitmap_destroy(ffa_id_t vm_id)
J-Alvesa0f317d2021-06-09 13:31:59 +0100290{
291 (void)vm_id;
292
293 return ffa_error(FFA_NOT_SUPPORTED);
294}
J-Alvesc003a7a2021-03-18 13:06:53 +0000295
J-Alves19e20cf2023-08-02 12:48:55 +0100296struct vm_locked plat_ffa_vm_find_locked(ffa_id_t vm_id)
J-Alvesc003a7a2021-03-18 13:06:53 +0000297{
298 (void)vm_id;
299 return (struct vm_locked){.vm = NULL};
300}
301
J-Alves19e20cf2023-08-02 12:48:55 +0100302struct vm_locked plat_ffa_vm_find_locked_create(ffa_id_t vm_id)
Federico Recanati8d8b1cf2022-04-14 13:16:00 +0200303{
304 (void)vm_id;
305 return (struct vm_locked){.vm = NULL};
306}
307
J-Alvesfa782092021-10-13 16:02:16 +0100308bool plat_ffa_vm_notifications_info_get( // NOLINTNEXTLINE
309 uint16_t *ids, uint32_t *ids_count, // NOLINTNEXTLINE
310 uint32_t *lists_sizes, // NOLINTNEXTLINE
311 uint32_t *lists_count, const uint32_t ids_count_max)
J-Alvesc8e8a222021-06-08 17:33:52 +0100312{
313 (void)ids;
314 (void)ids_count;
315 (void)lists_sizes;
316 (void)lists_count;
317 (void)ids_count_max;
318
319 return false;
320}
Raghu Krishnamurthyea6d25f2021-09-14 15:27:06 -0700321
322bool plat_ffa_is_mem_perm_get_valid(const struct vcpu *current)
323{
324 (void)current;
325 return false;
326}
327
328bool plat_ffa_is_mem_perm_set_valid(const struct vcpu *current)
329{
330 (void)current;
331 return false;
332}
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500333
334/**
335 * Check if current VM can resume target VM/SP using FFA_RUN ABI.
336 */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600337bool plat_ffa_run_checks(struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100338 ffa_id_t target_vm_id, ffa_vcpu_index_t vcpu_idx,
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600339 struct ffa_value *run_ret, struct vcpu **next)
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500340{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600341 (void)current_locked;
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500342 (void)target_vm_id;
343 (void)run_ret;
344 (void)next;
Raghu Krishnamurthy048d63f2021-12-11 12:45:41 -0800345 (void)vcpu_idx;
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500346 return true;
347}
J-Alvesca058c22021-09-10 14:02:07 +0100348
349void plat_ffa_notification_info_get_forward( // NOLINTNEXTLINE
350 uint16_t *ids, uint32_t *ids_count, // NOLINTNEXTLINE
351 uint32_t *lists_sizes, uint32_t *lists_count,
352 const uint32_t ids_count_max)
353{
354 (void)ids;
355 (void)ids_count;
356 (void)lists_sizes;
357 (void)lists_count;
358 (void)ids_count_max;
359}
J-Alves13394022021-06-30 13:48:49 +0100360
361void plat_ffa_sri_state_set(enum plat_ffa_sri_state state)
362{
363 (void)state;
364}
365
366void plat_ffa_sri_trigger_if_delayed(struct cpu *cpu)
367{
368 (void)cpu;
369}
370
371void plat_ffa_sri_trigger_not_delayed(struct cpu *cpu)
372{
373 (void)cpu;
374}
375
J-Alves6e2abc62021-12-02 14:58:56 +0000376bool plat_ffa_inject_notification_pending_interrupt(
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600377 struct vcpu_locked target_locked, struct vcpu_locked current_locked,
J-Alves6e2abc62021-12-02 14:58:56 +0000378 struct vm_locked receiver_locked)
J-Alves7461ef22021-10-18 17:21:33 +0100379{
J-Alves6e2abc62021-12-02 14:58:56 +0000380 (void)target_locked;
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600381 (void)current_locked;
J-Alves6e2abc62021-12-02 14:58:56 +0000382 (void)receiver_locked;
383
384 return false;
J-Alves7461ef22021-10-18 17:21:33 +0100385}
Olivier Depreze562e542020-06-11 17:31:54 +0200386
Raghu Krishnamurthyef432cb2022-12-29 06:56:32 -0800387bool plat_ffa_partition_info_get_regs_forward( // NOLINTNEXTLINE
388 const struct ffa_uuid *uuid,
389 const uint16_t start_index, // NOLINTNEXTLINE
390 const uint16_t tag,
391 struct ffa_partition_info *partitions, // NOLINTNEXTLINE
392 uint16_t partitions_len, ffa_vm_count_t *ret_count)
393{
394 (void)uuid;
395 (void)start_index;
396 (void)tag;
397 (void)partitions;
398 (void)partitions_len;
399 (void)ret_count;
400 return true;
401}
402
Olivier Depreze562e542020-06-11 17:31:54 +0200403void plat_ffa_partition_info_get_forward( // NOLINTNEXTLINE
404 const struct ffa_uuid *uuid, // NOLINTNEXTLINE
Daniel Boulbyb46cad12021-12-13 17:47:21 +0000405 const uint32_t flags, // NOLINTNEXTLINE
Olivier Depreze562e542020-06-11 17:31:54 +0200406 struct ffa_partition_info *partitions, ffa_vm_count_t *ret_count)
407{
408 (void)uuid;
Daniel Boulbyb46cad12021-12-13 17:47:21 +0000409 (void)flags;
Olivier Depreze562e542020-06-11 17:31:54 +0200410 (void)partitions;
411 (void)ret_count;
412}
Olivier Deprezd614d322021-06-18 15:21:00 +0200413
414bool plat_ffa_is_secondary_ep_register_supported(void)
415{
416 return false;
417}
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500418
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600419struct ffa_value plat_ffa_msg_wait_prepare(struct vcpu_locked current_locked,
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500420 struct vcpu **next)
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600421{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600422 (void)current_locked;
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600423 (void)next;
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600424
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500425 return (struct ffa_value){.func = FFA_INTERRUPT_32};
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600426}
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500427
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600428bool plat_ffa_check_runtime_state_transition(struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100429 ffa_id_t vm_id,
430 ffa_id_t receiver_vm_id,
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600431 struct vcpu_locked receiver_locked,
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500432 uint32_t func, // NOLINTNEXTLINE
433 enum vcpu_state *next_state)
434{
435 /* Perform state transition checks only for Secure Partitions. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600436 (void)current_locked;
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500437 (void)vm_id;
438 (void)receiver_vm_id;
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600439 (void)receiver_locked;
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500440 (void)func;
441 (void)next_state;
442
443 return true;
444}
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500445
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600446void plat_ffa_init_schedule_mode_ffa_run(struct vcpu_locked current_locked,
Madhukar Pappireddy1480fce2022-06-21 18:09:25 -0500447 struct vcpu_locked target_locked)
448{
449 /* Scheduling mode not supported in the Hypervisor/VMs. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600450 (void)current_locked;
Madhukar Pappireddy1480fce2022-06-21 18:09:25 -0500451 (void)target_locked;
452}
453
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500454void plat_ffa_wind_call_chain_ffa_direct_req(
455 struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100456 struct vcpu_locked receiver_vcpu_locked, ffa_id_t sender_vm_id)
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500457{
458 /* Calls chains not supported in the Hypervisor/VMs. */
459 (void)current_locked;
460 (void)receiver_vcpu_locked;
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700461 (void)sender_vm_id;
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500462}
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500463
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600464void plat_ffa_unwind_call_chain_ffa_direct_resp(
465 struct vcpu_locked current_locked, struct vcpu_locked next_locked)
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500466{
467 /* Calls chains not supported in the Hypervisor/VMs. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600468 (void)current_locked;
469 (void)next_locked;
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500470}
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500471
J-Alves19e20cf2023-08-02 12:48:55 +0100472bool plat_ffa_is_spmd_lp_id(ffa_id_t vm_id)
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700473{
474 (void)vm_id;
475 return false;
476}
477
Madhukar Pappireddy2f76e492022-09-06 15:21:59 -0500478bool plat_ffa_intercept_direct_response(struct vcpu_locked current_locked,
479 struct vcpu **next,
480 struct ffa_value to_ret,
481 struct ffa_value *signal_interrupt)
482{
483 /*
484 * Only applicable to SPMC as it signals virtual secure interrupt to
485 * S-EL0 partitions.
486 */
487 (void)current_locked;
488 (void)next;
489 (void)to_ret;
490 (void)signal_interrupt;
491
492 return false;
493}
494
Madhukar Pappireddy486360d2022-09-06 15:32:24 -0500495void plat_ffa_enable_virtual_interrupts(struct vcpu_locked current_locked,
496 struct vm_locked vm_locked)
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500497{
498 (void)current_locked;
Madhukar Pappireddy486360d2022-09-06 15:32:24 -0500499 (void)vm_locked;
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500500}
J-Alves66652252022-07-06 09:49:51 +0100501
502struct ffa_value plat_ffa_other_world_mem_send(
503 struct vm *from, uint32_t share_func,
504 struct ffa_memory_region **memory_region, uint32_t length,
505 uint32_t fragment_length, struct mpool *page_pool)
506{
507 (void)from;
508 (void)memory_region;
509 (void)length;
510 (void)fragment_length;
511 (void)page_pool;
512 (void)share_func;
513
514 return (struct ffa_value){0};
515}
J-Alvesfc19b372022-07-06 12:17:35 +0100516
517struct ffa_value plat_ffa_other_world_mem_reclaim(
518 struct vm *to, ffa_memory_handle_t handle,
519 ffa_memory_region_flags_t flags, struct mpool *page_pool)
520{
521 (void)handle;
522 (void)flags;
523 (void)page_pool;
524 (void)to;
525
526 return ffa_error(FFA_INVALID_PARAMETERS);
527}
J-Alvesb5084cf2022-07-06 14:20:12 +0100528
J-Alvesfdd29272022-07-19 13:16:31 +0100529struct ffa_value plat_ffa_other_world_mem_send_continue(
530 struct vm *from, void *fragment, uint32_t fragment_length,
531 ffa_memory_handle_t handle, struct mpool *page_pool)
532{
533 (void)from;
534 (void)fragment;
535 (void)fragment_length;
536 (void)handle;
537 (void)page_pool;
538
539 return ffa_error(FFA_INVALID_PARAMETERS);
540}
J-Alves27b71962022-12-12 15:29:58 +0000541
J-Alves19e20cf2023-08-02 12:48:55 +0100542struct ffa_value plat_ffa_msg_send(ffa_id_t sender_vm_id,
543 ffa_id_t receiver_vm_id, uint32_t size,
J-Alves27b71962022-12-12 15:29:58 +0000544 struct vcpu *current, struct vcpu **next)
545{
546 (void)sender_vm_id;
547 (void)receiver_vm_id;
548 (void)size;
549 (void)current;
550 (void)next;
551
552 return ffa_error(FFA_NOT_SUPPORTED);
553}
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600554
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600555struct ffa_value plat_ffa_yield_prepare(struct vcpu_locked current_locked,
Madhukar Pappireddy184501c2023-05-23 17:24:06 -0500556 struct vcpu **next,
557 uint32_t timeout_low,
558 uint32_t timeout_high)
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600559{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600560 (void)current_locked;
Madhukar Pappireddyb3fb8712023-05-23 17:10:34 -0500561 (void)next;
Madhukar Pappireddy184501c2023-05-23 17:24:06 -0500562 (void)timeout_low;
563 (void)timeout_high;
Madhukar Pappireddyb3fb8712023-05-23 17:10:34 -0500564
565 return ffa_error(FFA_NOT_SUPPORTED);
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600566}
Olivier Deprezd9d409f2023-03-17 11:47:57 +0100567
568bool arch_vm_init_mm(struct vm *vm, struct mpool *ppool)
569{
570 (void)vm;
571 (void)ppool;
572
573 return true;
574}
575
Madhukar Pappireddy070f49e2024-01-12 13:02:27 -0600576bool arch_vm_iommu_init_mm(struct vm *vm, struct mpool *ppool)
577{
578 (void)vm;
579 (void)ppool;
580
581 return true;
582}
583
Olivier Deprezd9d409f2023-03-17 11:47:57 +0100584bool arch_vm_identity_prepare(struct vm_locked vm_locked, paddr_t begin,
585 paddr_t end, uint32_t mode, struct mpool *ppool)
586{
587 (void)vm_locked;
588 (void)begin;
589 (void)end;
590 (void)mode;
591 (void)ppool;
592
593 return true;
594}
595
596void arch_vm_identity_commit(struct vm_locked vm_locked, paddr_t begin,
597 paddr_t end, uint32_t mode, struct mpool *ppool,
598 ipaddr_t *ipa)
599{
600 (void)vm_locked;
601 (void)begin;
602 (void)end;
603 (void)mode;
604 (void)ppool;
605 (void)ipa;
606}
607
608bool arch_vm_unmap(struct vm_locked vm_locked, paddr_t begin, paddr_t end,
609 struct mpool *ppool)
610{
611 (void)vm_locked;
612 (void)begin;
613 (void)end;
614 (void)ppool;
615
616 return true;
617}
618
619void arch_vm_ptable_defrag(struct vm_locked vm_locked, struct mpool *ppool)
620{
621 (void)vm_locked;
622 (void)ppool;
623}
624
625bool arch_vm_mem_get_mode(struct vm_locked vm_locked, ipaddr_t begin,
626 ipaddr_t end, uint32_t *mode) // NOLINT
627{
628 (void)vm_locked;
629 (void)begin;
630 (void)end;
631 (void)mode;
632
633 return true;
634}
Olivier Deprez878bd5b2021-04-15 19:05:10 +0200635
636ffa_memory_attributes_t plat_ffa_memory_security_mode(
637 ffa_memory_attributes_t attributes, uint32_t mode)
638{
639 (void)mode;
640
641 return attributes;
642}
Kathleen Capella6ab05132023-05-10 12:27:35 -0400643
644struct ffa_value plat_ffa_error_32(struct vcpu *current, struct vcpu **next,
Karl Meakin1064a9c2024-06-04 17:20:43 +0100645 enum ffa_error error_code)
Kathleen Capella6ab05132023-05-10 12:27:35 -0400646{
647 (void)current;
648 (void)next;
649 (void)error_code;
J-Alves2ced1672022-12-12 14:35:38 +0000650
651 return ffa_error(FFA_NOT_SUPPORTED);
652}
653
J-Alves19e20cf2023-08-02 12:48:55 +0100654int64_t plat_ffa_mailbox_waiter_get(ffa_id_t vm_id, const struct vcpu *current)
J-Alves2ced1672022-12-12 14:35:38 +0000655{
J-Alvesbc7ab4f2022-12-13 12:09:25 +0000656 (void)vm_id;
657 (void)current;
J-Alves2ced1672022-12-12 14:35:38 +0000658
J-Alvesbc7ab4f2022-12-13 12:09:25 +0000659 return -1;
660}
661
662int64_t plat_ffa_mailbox_writable_get(const struct vcpu *current)
663{
664 (void)current;
665
666 return -1;
Kathleen Capella6ab05132023-05-10 12:27:35 -0400667}
Raghu Krishnamurthye74d6532023-06-07 12:21:54 -0700668
669bool plat_ffa_partition_info_get_regs_forward_allowed(void)
670{
671 return false;
672}
Madhukar Pappireddy9e09d7a2023-08-08 14:53:49 -0500673
674void plat_ffa_free_vm_resources(struct vm_locked vm_locked)
675{
676 (void)vm_locked;
677}
Madhukar Pappireddy0e57d3d2023-10-11 15:49:05 -0500678
679bool arch_vm_iommu_mm_identity_map(struct vm_locked vm_locked, paddr_t begin,
680 paddr_t end, uint32_t mode,
681 struct mpool *ppool, ipaddr_t *ipa,
682 struct dma_device_properties *dma_prop)
683{
684 (void)vm_locked;
685 (void)begin;
686 (void)end;
687 (void)mode;
688 (void)ppool;
689 (void)ipa;
690 (void)dma_prop;
691
692 return true;
693}