blob: 702a35cd47171c8c50d67c2d0d23b5353b90b3c3 [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
Daniel Boulbyb2fb80e2021-02-03 15:09:23 +000023ffa_vm_id_t arch_ffa_spmc_id_get(void)
24{
25 return HF_SPMC_VM_ID;
26}
Olivier Deprez55a189e2021-06-09 15:45:27 +020027
28void plat_ffa_log_init(void)
29{
30}
31
Maksims Svecovsa3d570c2021-12-08 11:16:32 +000032bool plat_ffa_is_memory_send_valid(ffa_vm_id_t receiver_vm_id,
33 uint32_t share_func)
34{
35 (void)receiver_vm_id;
36 (void)share_func;
37
38 return true;
39}
40
Olivier Deprez55a189e2021-06-09 15:45:27 +020041bool plat_ffa_is_direct_request_valid(struct vcpu *current,
42 ffa_vm_id_t sender_vm_id,
43 ffa_vm_id_t receiver_vm_id)
44{
45 (void)current;
46 (void)sender_vm_id;
47 (void)receiver_vm_id;
48
49 return true;
50}
51
J-Alves439ac972021-11-18 17:32:03 +000052bool plat_ffa_is_direct_request_supported(struct vm *sender_vm,
53 struct vm *receiver_vm)
54{
55 (void)sender_vm;
56 (void)receiver_vm;
57
58 return false;
59}
60
Olivier Deprez55a189e2021-06-09 15:45:27 +020061bool plat_ffa_is_direct_response_valid(struct vcpu *current,
62 ffa_vm_id_t sender_vm_id,
63 ffa_vm_id_t receiver_vm_id)
64{
65 (void)current;
66 (void)sender_vm_id;
67 (void)receiver_vm_id;
68
69 return true;
70}
71
Raghu Krishnamurthy62f97a72021-07-27 02:14:59 -070072bool plat_ffa_run_forward(ffa_vm_id_t vm_id, ffa_vcpu_index_t vcpu_idx,
73 struct ffa_value *ret)
74{
75 (void)vm_id;
76 (void)vcpu_idx;
77 (void)ret;
78
79 return false;
80}
81
Federico Recanati10bd06c2022-02-23 17:32:59 +010082void plat_ffa_vm_destroy(struct vm_locked to_destroy_locked)
83{
84 (void)to_destroy_locked;
85}
86
J-Alves70079932022-12-07 17:32:20 +000087void plat_ffa_rxtx_unmap_forward(struct vm_locked vm_locked)
Federico Recanati8da9e332022-02-10 11:00:17 +010088{
J-Alves70079932022-12-07 17:32:20 +000089 (void)vm_locked;
Federico Recanati8da9e332022-02-10 11:00:17 +010090}
91
Olivier Deprez55a189e2021-06-09 15:45:27 +020092bool plat_ffa_direct_request_forward(ffa_vm_id_t receiver_vm_id,
93 struct ffa_value args,
94 struct ffa_value *ret)
95{
96 (void)receiver_vm_id;
97 (void)args;
98 (void)ret;
99 return false;
100}
101
Federico Recanati7bef0b92022-03-17 14:56:22 +0100102bool plat_ffa_rx_release_forward(struct vm_locked vm_locked,
103 struct ffa_value *ret)
104{
105 (void)vm_locked;
106 (void)ret;
107
108 return false;
109}
110
Federico Recanati644f0462022-03-17 12:04:00 +0100111bool plat_ffa_acquire_receiver_rx(struct vm_locked to_locked,
112 struct ffa_value *ret)
113{
114 (void)to_locked;
115 (void)ret;
116
117 return false;
118}
119
Federico Recanati25053ee2022-03-14 15:01:53 +0100120bool plat_ffa_is_indirect_msg_supported(struct vm_locked sender_locked,
121 struct vm_locked receiver_locked)
122{
123 (void)sender_locked;
124 (void)receiver_locked;
125
126 return false;
127}
128
129bool plat_ffa_msg_send2_forward(ffa_vm_id_t receiver_vm_id,
130 ffa_vm_id_t sender_vm_id, struct ffa_value *ret)
131{
132 (void)receiver_vm_id;
133 (void)sender_vm_id;
134 (void)ret;
135
136 return false;
137}
138
Olivier Deprez55a189e2021-06-09 15:45:27 +0200139ffa_memory_handle_t plat_ffa_memory_handle_make(uint64_t index)
140{
141 return index;
142}
143
144bool plat_ffa_memory_handle_allocated_by_current_world(
145 ffa_memory_handle_t handle)
146{
147 (void)handle;
148 return false;
149}
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100150
J-Alves7db32002021-12-14 14:44:50 +0000151uint32_t plat_ffa_other_world_mode(void)
152{
153 return 0U;
154}
155
156uint32_t plat_ffa_owner_world_mode(ffa_vm_id_t owner_id)
157{
158 (void)owner_id;
159 return 0U;
160}
161
J-Alvesc003a7a2021-03-18 13:06:53 +0000162bool plat_ffa_is_notifications_bind_valid(struct vcpu *current,
163 ffa_vm_id_t sender_id,
164 ffa_vm_id_t receiver_id)
165{
166 (void)current;
167 (void)sender_id;
168 (void)receiver_id;
169 return false;
170}
171
J-Alvesb15e9402021-09-08 11:44:42 +0100172bool plat_ffa_notifications_update_bindings_forward(
173 ffa_vm_id_t receiver_id, ffa_vm_id_t sender_id, uint32_t flags,
174 ffa_notifications_bitmap_t bitmap, bool is_bind, struct ffa_value *ret)
175{
176 (void)ret;
177 (void)receiver_id;
178 (void)sender_id;
179 (void)flags;
180 (void)bitmap;
181 (void)is_bind;
182 (void)ret;
183
184 return false;
185}
186
Federico Recanati8d8b1cf2022-04-14 13:16:00 +0200187void plat_ffa_rxtx_map_forward(struct vm_locked vm_locked)
188{
189 (void)vm_locked;
190}
191
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100192ffa_partition_properties_t plat_ffa_partition_properties(
J-Alvesfa782092021-10-13 16:02:16 +0100193 ffa_vm_id_t vm_id, const struct vm *target)
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100194{
J-Alvesfa782092021-10-13 16:02:16 +0100195 (void)vm_id;
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100196 (void)target;
197 return 0;
198}
Maksims Svecovs9ddf86a2021-05-06 17:17:21 +0100199
200bool plat_ffa_vm_managed_exit_supported(struct vm *vm)
201{
202 (void)vm;
203 return false;
204}
J-Alvesa0f317d2021-06-09 13:31:59 +0100205
206bool plat_ffa_is_notifications_create_valid(struct vcpu *current,
207 ffa_vm_id_t vm_id)
208{
209 (void)current;
210 (void)vm_id;
211
212 return false;
213}
214
J-Alvesaa79c012021-07-09 14:29:45 +0100215bool plat_ffa_is_notification_set_valid(struct vcpu *current,
216 ffa_vm_id_t sender_id,
217 ffa_vm_id_t receiver_id)
218{
219 (void)current;
220 (void)sender_id;
221 (void)receiver_id;
222 return false;
223}
224
225bool plat_ffa_is_notification_get_valid(struct vcpu *current,
J-Alvesfc95a302022-04-22 14:18:23 +0100226 ffa_vm_id_t receiver_id, uint32_t flags)
J-Alvesaa79c012021-07-09 14:29:45 +0100227{
J-Alvesfc95a302022-04-22 14:18:23 +0100228 (void)flags;
J-Alvesaa79c012021-07-09 14:29:45 +0100229 (void)current;
230 (void)receiver_id;
231 return false;
232}
233
J-Alves98ff9562021-09-09 14:39:41 +0100234bool plat_ffa_notifications_get_from_sp(
235 struct vm_locked receiver_locked, ffa_vcpu_index_t vcpu_id,
J-Alvesfa782092021-10-13 16:02:16 +0100236 ffa_notifications_bitmap_t *from_sp, // NOLINT
237 struct ffa_value *ret) // NOLINT
J-Alves98ff9562021-09-09 14:39:41 +0100238{
239 (void)receiver_locked;
240 (void)vcpu_id;
241 (void)from_sp;
242 (void)ret;
243
244 return false;
245}
246
J-Alvesd605a092022-03-28 14:20:48 +0100247bool plat_ffa_notifications_get_framework_notifications(
248 struct vm_locked receiver_locked,
249 ffa_notifications_bitmap_t *from_fwk, // NOLINT
250 uint32_t flags, ffa_vcpu_index_t vcpu_id, struct ffa_value *ret)
251{
252 (void)receiver_locked;
253 (void)from_fwk;
254 (void)flags;
255 (void)vcpu_id;
256 (void)ret;
257
258 return false;
259}
260
J-Alvesde7bd2f2021-09-09 19:54:35 +0100261bool plat_ffa_notification_set_forward(ffa_vm_id_t sender_vm_id,
262 ffa_vm_id_t receiver_vm_id,
263 uint32_t flags,
264 ffa_notifications_bitmap_t bitmap,
265 struct ffa_value *ret)
266{
267 (void)sender_vm_id;
268 (void)receiver_vm_id;
269 (void)flags;
270 (void)bitmap;
271 (void)ret;
272
273 return false;
274}
275
J-Alvesa0f317d2021-06-09 13:31:59 +0100276struct ffa_value plat_ffa_notifications_bitmap_create(
277 ffa_vm_id_t vm_id, ffa_vcpu_count_t vcpu_count)
278{
279 (void)vm_id;
280 (void)vcpu_count;
281
282 return ffa_error(FFA_NOT_SUPPORTED);
283}
284
285struct ffa_value plat_ffa_notifications_bitmap_destroy(ffa_vm_id_t vm_id)
286{
287 (void)vm_id;
288
289 return ffa_error(FFA_NOT_SUPPORTED);
290}
J-Alvesc003a7a2021-03-18 13:06:53 +0000291
292struct vm_locked plat_ffa_vm_find_locked(ffa_vm_id_t vm_id)
293{
294 (void)vm_id;
295 return (struct vm_locked){.vm = NULL};
296}
297
Federico Recanati8d8b1cf2022-04-14 13:16:00 +0200298struct vm_locked plat_ffa_vm_find_locked_create(ffa_vm_id_t vm_id)
299{
300 (void)vm_id;
301 return (struct vm_locked){.vm = NULL};
302}
303
J-Alvesc003a7a2021-03-18 13:06:53 +0000304bool plat_ffa_is_vm_id(ffa_vm_id_t vm_id)
305{
306 (void)vm_id;
307 return false;
308}
J-Alvesc8e8a222021-06-08 17:33:52 +0100309
J-Alvesfa782092021-10-13 16:02:16 +0100310bool plat_ffa_vm_notifications_info_get( // NOLINTNEXTLINE
311 uint16_t *ids, uint32_t *ids_count, // NOLINTNEXTLINE
312 uint32_t *lists_sizes, // NOLINTNEXTLINE
313 uint32_t *lists_count, const uint32_t ids_count_max)
J-Alvesc8e8a222021-06-08 17:33:52 +0100314{
315 (void)ids;
316 (void)ids_count;
317 (void)lists_sizes;
318 (void)lists_count;
319 (void)ids_count_max;
320
321 return false;
322}
Raghu Krishnamurthyea6d25f2021-09-14 15:27:06 -0700323
324bool plat_ffa_is_mem_perm_get_valid(const struct vcpu *current)
325{
326 (void)current;
327 return false;
328}
329
330bool plat_ffa_is_mem_perm_set_valid(const struct vcpu *current)
331{
332 (void)current;
333 return false;
334}
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500335
336/**
337 * Check if current VM can resume target VM/SP using FFA_RUN ABI.
338 */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600339bool plat_ffa_run_checks(struct vcpu_locked current_locked,
340 ffa_vm_id_t target_vm_id, ffa_vcpu_index_t vcpu_idx,
341 struct ffa_value *run_ret, struct vcpu **next)
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500342{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600343 (void)current_locked;
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500344 (void)target_vm_id;
345 (void)run_ret;
346 (void)next;
Raghu Krishnamurthy048d63f2021-12-11 12:45:41 -0800347 (void)vcpu_idx;
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500348 return true;
349}
J-Alvesca058c22021-09-10 14:02:07 +0100350
351void plat_ffa_notification_info_get_forward( // NOLINTNEXTLINE
352 uint16_t *ids, uint32_t *ids_count, // NOLINTNEXTLINE
353 uint32_t *lists_sizes, uint32_t *lists_count,
354 const uint32_t ids_count_max)
355{
356 (void)ids;
357 (void)ids_count;
358 (void)lists_sizes;
359 (void)lists_count;
360 (void)ids_count_max;
361}
J-Alves13394022021-06-30 13:48:49 +0100362
363void plat_ffa_sri_state_set(enum plat_ffa_sri_state state)
364{
365 (void)state;
366}
367
368void plat_ffa_sri_trigger_if_delayed(struct cpu *cpu)
369{
370 (void)cpu;
371}
372
373void plat_ffa_sri_trigger_not_delayed(struct cpu *cpu)
374{
375 (void)cpu;
376}
377
J-Alves6e2abc62021-12-02 14:58:56 +0000378bool plat_ffa_inject_notification_pending_interrupt(
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600379 struct vcpu_locked target_locked, struct vcpu_locked current_locked,
J-Alves6e2abc62021-12-02 14:58:56 +0000380 struct vm_locked receiver_locked)
J-Alves7461ef22021-10-18 17:21:33 +0100381{
J-Alves6e2abc62021-12-02 14:58:56 +0000382 (void)target_locked;
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600383 (void)current_locked;
J-Alves6e2abc62021-12-02 14:58:56 +0000384 (void)receiver_locked;
385
386 return false;
J-Alves7461ef22021-10-18 17:21:33 +0100387}
Olivier Depreze562e542020-06-11 17:31:54 +0200388
Raghu Krishnamurthyef432cb2022-12-29 06:56:32 -0800389bool plat_ffa_partition_info_get_regs_forward( // NOLINTNEXTLINE
390 const struct ffa_uuid *uuid,
391 const uint16_t start_index, // NOLINTNEXTLINE
392 const uint16_t tag,
393 struct ffa_partition_info *partitions, // NOLINTNEXTLINE
394 uint16_t partitions_len, ffa_vm_count_t *ret_count)
395{
396 (void)uuid;
397 (void)start_index;
398 (void)tag;
399 (void)partitions;
400 (void)partitions_len;
401 (void)ret_count;
402 return true;
403}
404
Olivier Depreze562e542020-06-11 17:31:54 +0200405void plat_ffa_partition_info_get_forward( // NOLINTNEXTLINE
406 const struct ffa_uuid *uuid, // NOLINTNEXTLINE
Daniel Boulbyb46cad12021-12-13 17:47:21 +0000407 const uint32_t flags, // NOLINTNEXTLINE
Olivier Depreze562e542020-06-11 17:31:54 +0200408 struct ffa_partition_info *partitions, ffa_vm_count_t *ret_count)
409{
410 (void)uuid;
Daniel Boulbyb46cad12021-12-13 17:47:21 +0000411 (void)flags;
Olivier Depreze562e542020-06-11 17:31:54 +0200412 (void)partitions;
413 (void)ret_count;
414}
Olivier Deprezd614d322021-06-18 15:21:00 +0200415
416bool plat_ffa_is_secondary_ep_register_supported(void)
417{
418 return false;
419}
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500420
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600421struct ffa_value plat_ffa_msg_wait_prepare(struct vcpu_locked current_locked,
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500422 struct vcpu **next)
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600423{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600424 (void)current_locked;
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600425 (void)next;
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600426
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500427 return (struct ffa_value){.func = FFA_INTERRUPT_32};
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600428}
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500429
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600430bool plat_ffa_check_runtime_state_transition(struct vcpu_locked current_locked,
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500431 ffa_vm_id_t vm_id,
432 ffa_vm_id_t receiver_vm_id,
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600433 struct vcpu_locked receiver_locked,
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500434 uint32_t func, // NOLINTNEXTLINE
435 enum vcpu_state *next_state)
436{
437 /* Perform state transition checks only for Secure Partitions. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600438 (void)current_locked;
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500439 (void)vm_id;
440 (void)receiver_vm_id;
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600441 (void)receiver_locked;
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500442 (void)func;
443 (void)next_state;
444
445 return true;
446}
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500447
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600448void plat_ffa_init_schedule_mode_ffa_run(struct vcpu_locked current_locked,
Madhukar Pappireddy1480fce2022-06-21 18:09:25 -0500449 struct vcpu_locked target_locked)
450{
451 /* Scheduling mode not supported in the Hypervisor/VMs. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600452 (void)current_locked;
Madhukar Pappireddy1480fce2022-06-21 18:09:25 -0500453 (void)target_locked;
454}
455
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500456void plat_ffa_wind_call_chain_ffa_direct_req(
457 struct vcpu_locked current_locked,
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700458 struct vcpu_locked receiver_vcpu_locked, ffa_vm_id_t sender_vm_id)
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500459{
460 /* Calls chains not supported in the Hypervisor/VMs. */
461 (void)current_locked;
462 (void)receiver_vcpu_locked;
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700463 (void)sender_vm_id;
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500464}
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500465
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600466void plat_ffa_unwind_call_chain_ffa_direct_resp(
467 struct vcpu_locked current_locked, struct vcpu_locked next_locked)
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500468{
469 /* Calls chains not supported in the Hypervisor/VMs. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600470 (void)current_locked;
471 (void)next_locked;
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500472}
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500473
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700474bool plat_ffa_is_spmd_lp_id(ffa_vm_id_t vm_id)
475{
476 (void)vm_id;
477 return false;
478}
479
Madhukar Pappireddy2f76e492022-09-06 15:21:59 -0500480bool plat_ffa_intercept_direct_response(struct vcpu_locked current_locked,
481 struct vcpu **next,
482 struct ffa_value to_ret,
483 struct ffa_value *signal_interrupt)
484{
485 /*
486 * Only applicable to SPMC as it signals virtual secure interrupt to
487 * S-EL0 partitions.
488 */
489 (void)current_locked;
490 (void)next;
491 (void)to_ret;
492 (void)signal_interrupt;
493
494 return false;
495}
496
Madhukar Pappireddy486360d2022-09-06 15:32:24 -0500497void plat_ffa_enable_virtual_interrupts(struct vcpu_locked current_locked,
498 struct vm_locked vm_locked)
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500499{
500 (void)current_locked;
Madhukar Pappireddy486360d2022-09-06 15:32:24 -0500501 (void)vm_locked;
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500502}
J-Alves66652252022-07-06 09:49:51 +0100503
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600504bool plat_ffa_is_direct_response_interrupted(struct vcpu_locked current_locked)
Madhukar Pappireddy5fd32482022-01-07 14:53:26 -0600505{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600506 (void)current_locked;
Madhukar Pappireddy5fd32482022-01-07 14:53:26 -0600507 return false;
508}
509
J-Alves66652252022-07-06 09:49:51 +0100510struct ffa_value plat_ffa_other_world_mem_send(
511 struct vm *from, uint32_t share_func,
512 struct ffa_memory_region **memory_region, uint32_t length,
513 uint32_t fragment_length, struct mpool *page_pool)
514{
515 (void)from;
516 (void)memory_region;
517 (void)length;
518 (void)fragment_length;
519 (void)page_pool;
520 (void)share_func;
521
522 return (struct ffa_value){0};
523}
J-Alvesfc19b372022-07-06 12:17:35 +0100524
525struct ffa_value plat_ffa_other_world_mem_reclaim(
526 struct vm *to, ffa_memory_handle_t handle,
527 ffa_memory_region_flags_t flags, struct mpool *page_pool)
528{
529 (void)handle;
530 (void)flags;
531 (void)page_pool;
532 (void)to;
533
534 return ffa_error(FFA_INVALID_PARAMETERS);
535}
J-Alvesb5084cf2022-07-06 14:20:12 +0100536
537struct ffa_value plat_ffa_other_world_mem_retrieve(
538 struct vm_locked to_locked, struct ffa_memory_region *retrieve_request,
539 uint32_t length, struct mpool *page_pool)
540{
541 (void)to_locked;
542 (void)retrieve_request;
543 (void)length;
544 (void)page_pool;
545
546 return ffa_error(FFA_INVALID_PARAMETERS);
547}
J-Alvesfdd29272022-07-19 13:16:31 +0100548
549struct ffa_value plat_ffa_other_world_mem_send_continue(
550 struct vm *from, void *fragment, uint32_t fragment_length,
551 ffa_memory_handle_t handle, struct mpool *page_pool)
552{
553 (void)from;
554 (void)fragment;
555 (void)fragment_length;
556 (void)handle;
557 (void)page_pool;
558
559 return ffa_error(FFA_INVALID_PARAMETERS);
560}
J-Alves27b71962022-12-12 15:29:58 +0000561
562struct ffa_value plat_ffa_msg_send(ffa_vm_id_t sender_vm_id,
563 ffa_vm_id_t receiver_vm_id, uint32_t size,
564 struct vcpu *current, struct vcpu **next)
565{
566 (void)sender_vm_id;
567 (void)receiver_vm_id;
568 (void)size;
569 (void)current;
570 (void)next;
571
572 return ffa_error(FFA_NOT_SUPPORTED);
573}
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600574
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600575struct ffa_value plat_ffa_yield_prepare(struct vcpu_locked current_locked,
Madhukar Pappireddy184501c2023-05-23 17:24:06 -0500576 struct vcpu **next,
577 uint32_t timeout_low,
578 uint32_t timeout_high)
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600579{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600580 (void)current_locked;
Madhukar Pappireddyb3fb8712023-05-23 17:10:34 -0500581 (void)next;
Madhukar Pappireddy184501c2023-05-23 17:24:06 -0500582 (void)timeout_low;
583 (void)timeout_high;
Madhukar Pappireddyb3fb8712023-05-23 17:10:34 -0500584
585 return ffa_error(FFA_NOT_SUPPORTED);
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600586}
Olivier Deprezd9d409f2023-03-17 11:47:57 +0100587
588bool arch_vm_init_mm(struct vm *vm, struct mpool *ppool)
589{
590 (void)vm;
591 (void)ppool;
592
593 return true;
594}
595
596bool arch_vm_identity_prepare(struct vm_locked vm_locked, paddr_t begin,
597 paddr_t end, uint32_t mode, struct mpool *ppool)
598{
599 (void)vm_locked;
600 (void)begin;
601 (void)end;
602 (void)mode;
603 (void)ppool;
604
605 return true;
606}
607
608void arch_vm_identity_commit(struct vm_locked vm_locked, paddr_t begin,
609 paddr_t end, uint32_t mode, struct mpool *ppool,
610 ipaddr_t *ipa)
611{
612 (void)vm_locked;
613 (void)begin;
614 (void)end;
615 (void)mode;
616 (void)ppool;
617 (void)ipa;
618}
619
620bool arch_vm_unmap(struct vm_locked vm_locked, paddr_t begin, paddr_t end,
621 struct mpool *ppool)
622{
623 (void)vm_locked;
624 (void)begin;
625 (void)end;
626 (void)ppool;
627
628 return true;
629}
630
631void arch_vm_ptable_defrag(struct vm_locked vm_locked, struct mpool *ppool)
632{
633 (void)vm_locked;
634 (void)ppool;
635}
636
637bool arch_vm_mem_get_mode(struct vm_locked vm_locked, ipaddr_t begin,
638 ipaddr_t end, uint32_t *mode) // NOLINT
639{
640 (void)vm_locked;
641 (void)begin;
642 (void)end;
643 (void)mode;
644
645 return true;
646}
Olivier Deprez878bd5b2021-04-15 19:05:10 +0200647
648ffa_memory_attributes_t plat_ffa_memory_security_mode(
649 ffa_memory_attributes_t attributes, uint32_t mode)
650{
651 (void)mode;
652
653 return attributes;
654}
Kathleen Capella6ab05132023-05-10 12:27:35 -0400655
656struct ffa_value plat_ffa_error_32(struct vcpu *current, struct vcpu **next,
657 uint32_t error_code)
658{
659 (void)current;
660 (void)next;
661 (void)error_code;
J-Alves2ced1672022-12-12 14:35:38 +0000662
663 return ffa_error(FFA_NOT_SUPPORTED);
664}
665
666struct ffa_value plat_ffa_msg_recv(bool block,
667 struct vcpu_locked current_locked,
668 struct vcpu **next)
669{
670 (void)block;
671 (void)current_locked;
672 (void)next;
673
Kathleen Capella6ab05132023-05-10 12:27:35 -0400674 return ffa_error(FFA_NOT_SUPPORTED);
675}
Raghu Krishnamurthye74d6532023-06-07 12:21:54 -0700676
677bool plat_ffa_partition_info_get_regs_forward_allowed(void)
678{
679 return false;
680}