blob: a7a30b6f4de1845034fa6c4185f239d416af962b [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-Alves19e20cf2023-08-02 12:48:55 +010032bool plat_ffa_is_memory_send_valid(ffa_id_t receiver_vm_id, uint32_t share_func)
Maksims Svecovsa3d570c2021-12-08 11:16:32 +000033{
34 (void)receiver_vm_id;
35 (void)share_func;
36
37 return true;
38}
39
Olivier Deprez55a189e2021-06-09 15:45:27 +020040bool plat_ffa_is_direct_request_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +010041 ffa_id_t sender_vm_id,
42 ffa_id_t receiver_vm_id)
Olivier Deprez55a189e2021-06-09 15:45:27 +020043{
44 (void)current;
45 (void)sender_vm_id;
46 (void)receiver_vm_id;
47
48 return true;
49}
50
J-Alves439ac972021-11-18 17:32:03 +000051bool plat_ffa_is_direct_request_supported(struct vm *sender_vm,
52 struct vm *receiver_vm)
53{
54 (void)sender_vm;
55 (void)receiver_vm;
56
57 return false;
58}
59
Olivier Deprez55a189e2021-06-09 15:45:27 +020060bool plat_ffa_is_direct_response_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +010061 ffa_id_t sender_vm_id,
62 ffa_id_t receiver_vm_id)
Olivier Deprez55a189e2021-06-09 15:45:27 +020063{
64 (void)current;
65 (void)sender_vm_id;
66 (void)receiver_vm_id;
67
68 return true;
69}
70
J-Alves19e20cf2023-08-02 12:48:55 +010071bool plat_ffa_run_forward(ffa_id_t vm_id, ffa_vcpu_index_t vcpu_idx,
Raghu Krishnamurthy62f97a72021-07-27 02:14:59 -070072 struct ffa_value *ret)
73{
74 (void)vm_id;
75 (void)vcpu_idx;
76 (void)ret;
77
78 return false;
79}
80
Federico Recanati10bd06c2022-02-23 17:32:59 +010081void plat_ffa_vm_destroy(struct vm_locked to_destroy_locked)
82{
83 (void)to_destroy_locked;
84}
85
J-Alves70079932022-12-07 17:32:20 +000086void plat_ffa_rxtx_unmap_forward(struct vm_locked vm_locked)
Federico Recanati8da9e332022-02-10 11:00:17 +010087{
J-Alves70079932022-12-07 17:32:20 +000088 (void)vm_locked;
Federico Recanati8da9e332022-02-10 11:00:17 +010089}
90
J-Alves19e20cf2023-08-02 12:48:55 +010091bool plat_ffa_direct_request_forward(ffa_id_t receiver_vm_id,
Olivier Deprez55a189e2021-06-09 15:45:27 +020092 struct ffa_value args,
93 struct ffa_value *ret)
94{
95 (void)receiver_vm_id;
96 (void)args;
97 (void)ret;
98 return false;
99}
100
Federico Recanati7bef0b92022-03-17 14:56:22 +0100101bool plat_ffa_rx_release_forward(struct vm_locked vm_locked,
102 struct ffa_value *ret)
103{
104 (void)vm_locked;
105 (void)ret;
106
107 return false;
108}
109
Federico Recanati644f0462022-03-17 12:04:00 +0100110bool plat_ffa_acquire_receiver_rx(struct vm_locked to_locked,
111 struct ffa_value *ret)
112{
113 (void)to_locked;
114 (void)ret;
115
116 return false;
117}
118
Federico Recanati25053ee2022-03-14 15:01:53 +0100119bool plat_ffa_is_indirect_msg_supported(struct vm_locked sender_locked,
120 struct vm_locked receiver_locked)
121{
122 (void)sender_locked;
123 (void)receiver_locked;
124
125 return false;
126}
127
J-Alves19e20cf2023-08-02 12:48:55 +0100128bool plat_ffa_msg_send2_forward(ffa_id_t receiver_vm_id, ffa_id_t sender_vm_id,
129 struct ffa_value *ret)
Federico Recanati25053ee2022-03-14 15:01:53 +0100130{
131 (void)receiver_vm_id;
132 (void)sender_vm_id;
133 (void)ret;
134
135 return false;
136}
137
Olivier Deprez55a189e2021-06-09 15:45:27 +0200138ffa_memory_handle_t plat_ffa_memory_handle_make(uint64_t index)
139{
140 return index;
141}
142
143bool plat_ffa_memory_handle_allocated_by_current_world(
144 ffa_memory_handle_t handle)
145{
146 (void)handle;
147 return false;
148}
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100149
J-Alves7db32002021-12-14 14:44:50 +0000150uint32_t plat_ffa_other_world_mode(void)
151{
152 return 0U;
153}
154
J-Alvesc003a7a2021-03-18 13:06:53 +0000155bool plat_ffa_is_notifications_bind_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100156 ffa_id_t sender_id,
157 ffa_id_t receiver_id)
J-Alvesc003a7a2021-03-18 13:06:53 +0000158{
159 (void)current;
160 (void)sender_id;
161 (void)receiver_id;
162 return false;
163}
164
J-Alvesb15e9402021-09-08 11:44:42 +0100165bool plat_ffa_notifications_update_bindings_forward(
J-Alves19e20cf2023-08-02 12:48:55 +0100166 ffa_id_t receiver_id, ffa_id_t sender_id, uint32_t flags,
J-Alvesb15e9402021-09-08 11:44:42 +0100167 ffa_notifications_bitmap_t bitmap, bool is_bind, struct ffa_value *ret)
168{
169 (void)ret;
170 (void)receiver_id;
171 (void)sender_id;
172 (void)flags;
173 (void)bitmap;
174 (void)is_bind;
175 (void)ret;
176
177 return false;
178}
179
Federico Recanati8d8b1cf2022-04-14 13:16:00 +0200180void plat_ffa_rxtx_map_forward(struct vm_locked vm_locked)
181{
182 (void)vm_locked;
183}
184
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100185ffa_partition_properties_t plat_ffa_partition_properties(
J-Alves19e20cf2023-08-02 12:48:55 +0100186 ffa_id_t vm_id, const struct vm *target)
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100187{
J-Alvesfa782092021-10-13 16:02:16 +0100188 (void)vm_id;
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100189 (void)target;
190 return 0;
191}
Maksims Svecovs9ddf86a2021-05-06 17:17:21 +0100192
193bool plat_ffa_vm_managed_exit_supported(struct vm *vm)
194{
195 (void)vm;
196 return false;
197}
J-Alvesa0f317d2021-06-09 13:31:59 +0100198
199bool plat_ffa_is_notifications_create_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100200 ffa_id_t vm_id)
J-Alvesa0f317d2021-06-09 13:31:59 +0100201{
202 (void)current;
203 (void)vm_id;
204
205 return false;
206}
207
J-Alvesaa79c012021-07-09 14:29:45 +0100208bool plat_ffa_is_notification_set_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100209 ffa_id_t sender_id,
210 ffa_id_t receiver_id)
J-Alvesaa79c012021-07-09 14:29:45 +0100211{
212 (void)current;
213 (void)sender_id;
214 (void)receiver_id;
215 return false;
216}
217
218bool plat_ffa_is_notification_get_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100219 ffa_id_t receiver_id, uint32_t flags)
J-Alvesaa79c012021-07-09 14:29:45 +0100220{
J-Alvesfc95a302022-04-22 14:18:23 +0100221 (void)flags;
J-Alvesaa79c012021-07-09 14:29:45 +0100222 (void)current;
223 (void)receiver_id;
224 return false;
225}
226
J-Alves98ff9562021-09-09 14:39:41 +0100227bool plat_ffa_notifications_get_from_sp(
228 struct vm_locked receiver_locked, ffa_vcpu_index_t vcpu_id,
J-Alvesfa782092021-10-13 16:02:16 +0100229 ffa_notifications_bitmap_t *from_sp, // NOLINT
230 struct ffa_value *ret) // NOLINT
J-Alves98ff9562021-09-09 14:39:41 +0100231{
232 (void)receiver_locked;
233 (void)vcpu_id;
234 (void)from_sp;
235 (void)ret;
236
237 return false;
238}
239
J-Alvesd605a092022-03-28 14:20:48 +0100240bool plat_ffa_notifications_get_framework_notifications(
241 struct vm_locked receiver_locked,
242 ffa_notifications_bitmap_t *from_fwk, // NOLINT
243 uint32_t flags, ffa_vcpu_index_t vcpu_id, struct ffa_value *ret)
244{
245 (void)receiver_locked;
246 (void)from_fwk;
247 (void)flags;
248 (void)vcpu_id;
249 (void)ret;
250
251 return false;
252}
253
J-Alves19e20cf2023-08-02 12:48:55 +0100254bool plat_ffa_notification_set_forward(ffa_id_t sender_vm_id,
255 ffa_id_t receiver_vm_id, uint32_t flags,
J-Alvesde7bd2f2021-09-09 19:54:35 +0100256 ffa_notifications_bitmap_t bitmap,
257 struct ffa_value *ret)
258{
259 (void)sender_vm_id;
260 (void)receiver_vm_id;
261 (void)flags;
262 (void)bitmap;
263 (void)ret;
264
265 return false;
266}
267
J-Alvesa0f317d2021-06-09 13:31:59 +0100268struct ffa_value plat_ffa_notifications_bitmap_create(
J-Alves19e20cf2023-08-02 12:48:55 +0100269 ffa_id_t vm_id, ffa_vcpu_count_t vcpu_count)
J-Alvesa0f317d2021-06-09 13:31:59 +0100270{
271 (void)vm_id;
272 (void)vcpu_count;
273
274 return ffa_error(FFA_NOT_SUPPORTED);
275}
276
J-Alves19e20cf2023-08-02 12:48:55 +0100277struct ffa_value plat_ffa_notifications_bitmap_destroy(ffa_id_t vm_id)
J-Alvesa0f317d2021-06-09 13:31:59 +0100278{
279 (void)vm_id;
280
281 return ffa_error(FFA_NOT_SUPPORTED);
282}
J-Alvesc003a7a2021-03-18 13:06:53 +0000283
J-Alves19e20cf2023-08-02 12:48:55 +0100284struct vm_locked plat_ffa_vm_find_locked(ffa_id_t vm_id)
J-Alvesc003a7a2021-03-18 13:06:53 +0000285{
286 (void)vm_id;
287 return (struct vm_locked){.vm = NULL};
288}
289
J-Alves19e20cf2023-08-02 12:48:55 +0100290struct vm_locked plat_ffa_vm_find_locked_create(ffa_id_t vm_id)
Federico Recanati8d8b1cf2022-04-14 13:16:00 +0200291{
292 (void)vm_id;
293 return (struct vm_locked){.vm = NULL};
294}
295
J-Alvesfa782092021-10-13 16:02:16 +0100296bool plat_ffa_vm_notifications_info_get( // NOLINTNEXTLINE
297 uint16_t *ids, uint32_t *ids_count, // NOLINTNEXTLINE
298 uint32_t *lists_sizes, // NOLINTNEXTLINE
299 uint32_t *lists_count, const uint32_t ids_count_max)
J-Alvesc8e8a222021-06-08 17:33:52 +0100300{
301 (void)ids;
302 (void)ids_count;
303 (void)lists_sizes;
304 (void)lists_count;
305 (void)ids_count_max;
306
307 return false;
308}
Raghu Krishnamurthyea6d25f2021-09-14 15:27:06 -0700309
310bool plat_ffa_is_mem_perm_get_valid(const struct vcpu *current)
311{
312 (void)current;
313 return false;
314}
315
316bool plat_ffa_is_mem_perm_set_valid(const struct vcpu *current)
317{
318 (void)current;
319 return false;
320}
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500321
322/**
323 * Check if current VM can resume target VM/SP using FFA_RUN ABI.
324 */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600325bool plat_ffa_run_checks(struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100326 ffa_id_t target_vm_id, ffa_vcpu_index_t vcpu_idx,
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600327 struct ffa_value *run_ret, struct vcpu **next)
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500328{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600329 (void)current_locked;
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500330 (void)target_vm_id;
331 (void)run_ret;
332 (void)next;
Raghu Krishnamurthy048d63f2021-12-11 12:45:41 -0800333 (void)vcpu_idx;
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500334 return true;
335}
J-Alvesca058c22021-09-10 14:02:07 +0100336
337void plat_ffa_notification_info_get_forward( // NOLINTNEXTLINE
338 uint16_t *ids, uint32_t *ids_count, // NOLINTNEXTLINE
339 uint32_t *lists_sizes, uint32_t *lists_count,
340 const uint32_t ids_count_max)
341{
342 (void)ids;
343 (void)ids_count;
344 (void)lists_sizes;
345 (void)lists_count;
346 (void)ids_count_max;
347}
J-Alves13394022021-06-30 13:48:49 +0100348
349void plat_ffa_sri_state_set(enum plat_ffa_sri_state state)
350{
351 (void)state;
352}
353
354void plat_ffa_sri_trigger_if_delayed(struct cpu *cpu)
355{
356 (void)cpu;
357}
358
359void plat_ffa_sri_trigger_not_delayed(struct cpu *cpu)
360{
361 (void)cpu;
362}
363
J-Alves6e2abc62021-12-02 14:58:56 +0000364bool plat_ffa_inject_notification_pending_interrupt(
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600365 struct vcpu_locked target_locked, struct vcpu_locked current_locked,
J-Alves6e2abc62021-12-02 14:58:56 +0000366 struct vm_locked receiver_locked)
J-Alves7461ef22021-10-18 17:21:33 +0100367{
J-Alves6e2abc62021-12-02 14:58:56 +0000368 (void)target_locked;
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600369 (void)current_locked;
J-Alves6e2abc62021-12-02 14:58:56 +0000370 (void)receiver_locked;
371
372 return false;
J-Alves7461ef22021-10-18 17:21:33 +0100373}
Olivier Depreze562e542020-06-11 17:31:54 +0200374
Raghu Krishnamurthyef432cb2022-12-29 06:56:32 -0800375bool plat_ffa_partition_info_get_regs_forward( // NOLINTNEXTLINE
376 const struct ffa_uuid *uuid,
377 const uint16_t start_index, // NOLINTNEXTLINE
378 const uint16_t tag,
379 struct ffa_partition_info *partitions, // NOLINTNEXTLINE
380 uint16_t partitions_len, ffa_vm_count_t *ret_count)
381{
382 (void)uuid;
383 (void)start_index;
384 (void)tag;
385 (void)partitions;
386 (void)partitions_len;
387 (void)ret_count;
388 return true;
389}
390
Olivier Depreze562e542020-06-11 17:31:54 +0200391void plat_ffa_partition_info_get_forward( // NOLINTNEXTLINE
392 const struct ffa_uuid *uuid, // NOLINTNEXTLINE
Daniel Boulbyb46cad12021-12-13 17:47:21 +0000393 const uint32_t flags, // NOLINTNEXTLINE
Olivier Depreze562e542020-06-11 17:31:54 +0200394 struct ffa_partition_info *partitions, ffa_vm_count_t *ret_count)
395{
396 (void)uuid;
Daniel Boulbyb46cad12021-12-13 17:47:21 +0000397 (void)flags;
Olivier Depreze562e542020-06-11 17:31:54 +0200398 (void)partitions;
399 (void)ret_count;
400}
Olivier Deprezd614d322021-06-18 15:21:00 +0200401
402bool plat_ffa_is_secondary_ep_register_supported(void)
403{
404 return false;
405}
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500406
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600407struct ffa_value plat_ffa_msg_wait_prepare(struct vcpu_locked current_locked,
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500408 struct vcpu **next)
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600409{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600410 (void)current_locked;
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600411 (void)next;
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600412
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500413 return (struct ffa_value){.func = FFA_INTERRUPT_32};
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600414}
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500415
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600416bool plat_ffa_check_runtime_state_transition(struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100417 ffa_id_t vm_id,
418 ffa_id_t receiver_vm_id,
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600419 struct vcpu_locked receiver_locked,
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500420 uint32_t func, // NOLINTNEXTLINE
421 enum vcpu_state *next_state)
422{
423 /* Perform state transition checks only for Secure Partitions. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600424 (void)current_locked;
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500425 (void)vm_id;
426 (void)receiver_vm_id;
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600427 (void)receiver_locked;
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500428 (void)func;
429 (void)next_state;
430
431 return true;
432}
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500433
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600434void plat_ffa_init_schedule_mode_ffa_run(struct vcpu_locked current_locked,
Madhukar Pappireddy1480fce2022-06-21 18:09:25 -0500435 struct vcpu_locked target_locked)
436{
437 /* Scheduling mode not supported in the Hypervisor/VMs. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600438 (void)current_locked;
Madhukar Pappireddy1480fce2022-06-21 18:09:25 -0500439 (void)target_locked;
440}
441
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500442void plat_ffa_wind_call_chain_ffa_direct_req(
443 struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100444 struct vcpu_locked receiver_vcpu_locked, ffa_id_t sender_vm_id)
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500445{
446 /* Calls chains not supported in the Hypervisor/VMs. */
447 (void)current_locked;
448 (void)receiver_vcpu_locked;
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700449 (void)sender_vm_id;
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500450}
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500451
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600452void plat_ffa_unwind_call_chain_ffa_direct_resp(
453 struct vcpu_locked current_locked, struct vcpu_locked next_locked)
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500454{
455 /* Calls chains not supported in the Hypervisor/VMs. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600456 (void)current_locked;
457 (void)next_locked;
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500458}
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500459
J-Alves19e20cf2023-08-02 12:48:55 +0100460bool plat_ffa_is_spmd_lp_id(ffa_id_t vm_id)
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700461{
462 (void)vm_id;
463 return false;
464}
465
Madhukar Pappireddy2f76e492022-09-06 15:21:59 -0500466bool plat_ffa_intercept_direct_response(struct vcpu_locked current_locked,
467 struct vcpu **next,
468 struct ffa_value to_ret,
469 struct ffa_value *signal_interrupt)
470{
471 /*
472 * Only applicable to SPMC as it signals virtual secure interrupt to
473 * S-EL0 partitions.
474 */
475 (void)current_locked;
476 (void)next;
477 (void)to_ret;
478 (void)signal_interrupt;
479
480 return false;
481}
482
Madhukar Pappireddy486360d2022-09-06 15:32:24 -0500483void plat_ffa_enable_virtual_interrupts(struct vcpu_locked current_locked,
484 struct vm_locked vm_locked)
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500485{
486 (void)current_locked;
Madhukar Pappireddy486360d2022-09-06 15:32:24 -0500487 (void)vm_locked;
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500488}
J-Alves66652252022-07-06 09:49:51 +0100489
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600490bool plat_ffa_is_direct_response_interrupted(struct vcpu_locked current_locked)
Madhukar Pappireddy5fd32482022-01-07 14:53:26 -0600491{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600492 (void)current_locked;
Madhukar Pappireddy5fd32482022-01-07 14:53:26 -0600493 return false;
494}
495
J-Alves66652252022-07-06 09:49:51 +0100496struct ffa_value plat_ffa_other_world_mem_send(
497 struct vm *from, uint32_t share_func,
498 struct ffa_memory_region **memory_region, uint32_t length,
499 uint32_t fragment_length, struct mpool *page_pool)
500{
501 (void)from;
502 (void)memory_region;
503 (void)length;
504 (void)fragment_length;
505 (void)page_pool;
506 (void)share_func;
507
508 return (struct ffa_value){0};
509}
J-Alvesfc19b372022-07-06 12:17:35 +0100510
511struct ffa_value plat_ffa_other_world_mem_reclaim(
512 struct vm *to, ffa_memory_handle_t handle,
513 ffa_memory_region_flags_t flags, struct mpool *page_pool)
514{
515 (void)handle;
516 (void)flags;
517 (void)page_pool;
518 (void)to;
519
520 return ffa_error(FFA_INVALID_PARAMETERS);
521}
J-Alvesb5084cf2022-07-06 14:20:12 +0100522
523struct ffa_value plat_ffa_other_world_mem_retrieve(
524 struct vm_locked to_locked, struct ffa_memory_region *retrieve_request,
525 uint32_t length, struct mpool *page_pool)
526{
527 (void)to_locked;
528 (void)retrieve_request;
529 (void)length;
530 (void)page_pool;
531
532 return ffa_error(FFA_INVALID_PARAMETERS);
533}
J-Alvesfdd29272022-07-19 13:16:31 +0100534
535struct ffa_value plat_ffa_other_world_mem_send_continue(
536 struct vm *from, void *fragment, uint32_t fragment_length,
537 ffa_memory_handle_t handle, struct mpool *page_pool)
538{
539 (void)from;
540 (void)fragment;
541 (void)fragment_length;
542 (void)handle;
543 (void)page_pool;
544
545 return ffa_error(FFA_INVALID_PARAMETERS);
546}
J-Alves27b71962022-12-12 15:29:58 +0000547
J-Alves19e20cf2023-08-02 12:48:55 +0100548struct ffa_value plat_ffa_msg_send(ffa_id_t sender_vm_id,
549 ffa_id_t receiver_vm_id, uint32_t size,
J-Alves27b71962022-12-12 15:29:58 +0000550 struct vcpu *current, struct vcpu **next)
551{
552 (void)sender_vm_id;
553 (void)receiver_vm_id;
554 (void)size;
555 (void)current;
556 (void)next;
557
558 return ffa_error(FFA_NOT_SUPPORTED);
559}
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600560
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600561struct ffa_value plat_ffa_yield_prepare(struct vcpu_locked current_locked,
Madhukar Pappireddy184501c2023-05-23 17:24:06 -0500562 struct vcpu **next,
563 uint32_t timeout_low,
564 uint32_t timeout_high)
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600565{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600566 (void)current_locked;
Madhukar Pappireddyb3fb8712023-05-23 17:10:34 -0500567 (void)next;
Madhukar Pappireddy184501c2023-05-23 17:24:06 -0500568 (void)timeout_low;
569 (void)timeout_high;
Madhukar Pappireddyb3fb8712023-05-23 17:10:34 -0500570
571 return ffa_error(FFA_NOT_SUPPORTED);
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600572}
Olivier Deprezd9d409f2023-03-17 11:47:57 +0100573
574bool arch_vm_init_mm(struct vm *vm, struct mpool *ppool)
575{
576 (void)vm;
577 (void)ppool;
578
579 return true;
580}
581
582bool arch_vm_identity_prepare(struct vm_locked vm_locked, paddr_t begin,
583 paddr_t end, uint32_t mode, struct mpool *ppool)
584{
585 (void)vm_locked;
586 (void)begin;
587 (void)end;
588 (void)mode;
589 (void)ppool;
590
591 return true;
592}
593
594void arch_vm_identity_commit(struct vm_locked vm_locked, paddr_t begin,
595 paddr_t end, uint32_t mode, struct mpool *ppool,
596 ipaddr_t *ipa)
597{
598 (void)vm_locked;
599 (void)begin;
600 (void)end;
601 (void)mode;
602 (void)ppool;
603 (void)ipa;
604}
605
606bool arch_vm_unmap(struct vm_locked vm_locked, paddr_t begin, paddr_t end,
607 struct mpool *ppool)
608{
609 (void)vm_locked;
610 (void)begin;
611 (void)end;
612 (void)ppool;
613
614 return true;
615}
616
617void arch_vm_ptable_defrag(struct vm_locked vm_locked, struct mpool *ppool)
618{
619 (void)vm_locked;
620 (void)ppool;
621}
622
623bool arch_vm_mem_get_mode(struct vm_locked vm_locked, ipaddr_t begin,
624 ipaddr_t end, uint32_t *mode) // NOLINT
625{
626 (void)vm_locked;
627 (void)begin;
628 (void)end;
629 (void)mode;
630
631 return true;
632}
Olivier Deprez878bd5b2021-04-15 19:05:10 +0200633
634ffa_memory_attributes_t plat_ffa_memory_security_mode(
635 ffa_memory_attributes_t attributes, uint32_t mode)
636{
637 (void)mode;
638
639 return attributes;
640}
Kathleen Capella6ab05132023-05-10 12:27:35 -0400641
642struct ffa_value plat_ffa_error_32(struct vcpu *current, struct vcpu **next,
643 uint32_t error_code)
644{
645 (void)current;
646 (void)next;
647 (void)error_code;
J-Alves2ced1672022-12-12 14:35:38 +0000648
649 return ffa_error(FFA_NOT_SUPPORTED);
650}
651
J-Alves19e20cf2023-08-02 12:48:55 +0100652int64_t plat_ffa_mailbox_waiter_get(ffa_id_t vm_id, const struct vcpu *current)
J-Alves2ced1672022-12-12 14:35:38 +0000653{
J-Alvesbc7ab4f2022-12-13 12:09:25 +0000654 (void)vm_id;
655 (void)current;
J-Alves2ced1672022-12-12 14:35:38 +0000656
J-Alvesbc7ab4f2022-12-13 12:09:25 +0000657 return -1;
658}
659
660int64_t plat_ffa_mailbox_writable_get(const struct vcpu *current)
661{
662 (void)current;
663
664 return -1;
Kathleen Capella6ab05132023-05-10 12:27:35 -0400665}
Raghu Krishnamurthye74d6532023-06-07 12:21:54 -0700666
667bool plat_ffa_partition_info_get_regs_forward_allowed(void)
668{
669 return false;
670}
Madhukar Pappireddy9e09d7a2023-08-08 14:53:49 -0500671
672void plat_ffa_free_vm_resources(struct vm_locked vm_locked)
673{
674 (void)vm_locked;
675}