blob: f2c005544e3a4f4eea58fd4c93a3ef1583432e30 [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
J-Alves19e20cf2023-08-02 12:48:55 +010017ffa_id_t arch_ffa_spmc_id_get(void)
Daniel Boulbyb2fb80e2021-02-03 15:09:23 +000018{
19 return HF_SPMC_VM_ID;
20}
Olivier Deprez55a189e2021-06-09 15:45:27 +020021
22void plat_ffa_log_init(void)
23{
24}
25
J-Alvesc9227c82024-04-24 21:00:58 +010026bool plat_ffa_is_memory_send_valid(ffa_id_t receiver, ffa_id_t sender,
27 uint32_t share_func, bool multiple_borrower)
Maksims Svecovsa3d570c2021-12-08 11:16:32 +000028{
Maksims Svecovsa3d570c2021-12-08 11:16:32 +000029 (void)share_func;
J-Alvesc9227c82024-04-24 21:00:58 +010030 (void)receiver;
31 (void)sender;
32 (void)multiple_borrower;
Maksims Svecovsa3d570c2021-12-08 11:16:32 +000033
34 return true;
35}
36
Olivier Deprez55a189e2021-06-09 15:45:27 +020037bool plat_ffa_is_direct_request_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +010038 ffa_id_t sender_vm_id,
39 ffa_id_t receiver_vm_id)
Olivier Deprez55a189e2021-06-09 15:45:27 +020040{
41 (void)current;
42 (void)sender_vm_id;
43 (void)receiver_vm_id;
44
45 return true;
46}
47
J-Alves439ac972021-11-18 17:32:03 +000048bool plat_ffa_is_direct_request_supported(struct vm *sender_vm,
Kathleen Capella41fea932023-06-23 17:39:28 -040049 struct vm *receiver_vm, uint32_t func)
J-Alves439ac972021-11-18 17:32:03 +000050{
51 (void)sender_vm;
52 (void)receiver_vm;
Kathleen Capella41fea932023-06-23 17:39:28 -040053 (void)func;
J-Alves439ac972021-11-18 17:32:03 +000054
55 return false;
56}
57
Olivier Deprez55a189e2021-06-09 15:45:27 +020058bool plat_ffa_is_direct_response_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +010059 ffa_id_t sender_vm_id,
60 ffa_id_t receiver_vm_id)
Olivier Deprez55a189e2021-06-09 15:45:27 +020061{
62 (void)current;
63 (void)sender_vm_id;
64 (void)receiver_vm_id;
65
66 return true;
67}
68
J-Alves19e20cf2023-08-02 12:48:55 +010069bool plat_ffa_run_forward(ffa_id_t vm_id, ffa_vcpu_index_t vcpu_idx,
Raghu Krishnamurthy62f97a72021-07-27 02:14:59 -070070 struct ffa_value *ret)
71{
72 (void)vm_id;
73 (void)vcpu_idx;
74 (void)ret;
75
76 return false;
77}
78
Federico Recanati10bd06c2022-02-23 17:32:59 +010079void plat_ffa_vm_destroy(struct vm_locked to_destroy_locked)
80{
81 (void)to_destroy_locked;
82}
83
J-Alves70079932022-12-07 17:32:20 +000084void plat_ffa_rxtx_unmap_forward(struct vm_locked vm_locked)
Federico Recanati8da9e332022-02-10 11:00:17 +010085{
J-Alves70079932022-12-07 17:32:20 +000086 (void)vm_locked;
Federico Recanati8da9e332022-02-10 11:00:17 +010087}
88
J-Alves19e20cf2023-08-02 12:48:55 +010089bool plat_ffa_direct_request_forward(ffa_id_t receiver_vm_id,
Olivier Deprez55a189e2021-06-09 15:45:27 +020090 struct ffa_value args,
91 struct ffa_value *ret)
92{
93 (void)receiver_vm_id;
94 (void)args;
95 (void)ret;
96 return false;
97}
98
Federico Recanati7bef0b92022-03-17 14:56:22 +010099bool plat_ffa_rx_release_forward(struct vm_locked vm_locked,
100 struct ffa_value *ret)
101{
102 (void)vm_locked;
103 (void)ret;
104
105 return false;
106}
107
Federico Recanati644f0462022-03-17 12:04:00 +0100108bool plat_ffa_acquire_receiver_rx(struct vm_locked to_locked,
109 struct ffa_value *ret)
110{
111 (void)to_locked;
112 (void)ret;
113
114 return false;
115}
116
Federico Recanati25053ee2022-03-14 15:01:53 +0100117bool plat_ffa_is_indirect_msg_supported(struct vm_locked sender_locked,
118 struct vm_locked receiver_locked)
119{
120 (void)sender_locked;
121 (void)receiver_locked;
122
123 return false;
124}
125
J-Alves19e20cf2023-08-02 12:48:55 +0100126bool plat_ffa_msg_send2_forward(ffa_id_t receiver_vm_id, ffa_id_t sender_vm_id,
127 struct ffa_value *ret)
Federico Recanati25053ee2022-03-14 15:01:53 +0100128{
129 (void)receiver_vm_id;
130 (void)sender_vm_id;
131 (void)ret;
132
133 return false;
134}
135
Olivier Deprez55a189e2021-06-09 15:45:27 +0200136ffa_memory_handle_t plat_ffa_memory_handle_make(uint64_t index)
137{
138 return index;
139}
140
141bool plat_ffa_memory_handle_allocated_by_current_world(
142 ffa_memory_handle_t handle)
143{
144 (void)handle;
145 return false;
146}
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100147
J-Alves7db32002021-12-14 14:44:50 +0000148uint32_t plat_ffa_other_world_mode(void)
149{
150 return 0U;
151}
152
J-Alvesc003a7a2021-03-18 13:06:53 +0000153bool plat_ffa_is_notifications_bind_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100154 ffa_id_t sender_id,
155 ffa_id_t receiver_id)
J-Alvesc003a7a2021-03-18 13:06:53 +0000156{
157 (void)current;
158 (void)sender_id;
159 (void)receiver_id;
160 return false;
161}
162
J-Alvesb15e9402021-09-08 11:44:42 +0100163bool plat_ffa_notifications_update_bindings_forward(
J-Alves19e20cf2023-08-02 12:48:55 +0100164 ffa_id_t receiver_id, ffa_id_t sender_id, uint32_t flags,
J-Alvesb15e9402021-09-08 11:44:42 +0100165 ffa_notifications_bitmap_t bitmap, bool is_bind, struct ffa_value *ret)
166{
167 (void)ret;
168 (void)receiver_id;
169 (void)sender_id;
170 (void)flags;
171 (void)bitmap;
172 (void)is_bind;
173 (void)ret;
174
175 return false;
176}
177
Federico Recanati8d8b1cf2022-04-14 13:16:00 +0200178void plat_ffa_rxtx_map_forward(struct vm_locked vm_locked)
179{
180 (void)vm_locked;
181}
182
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100183ffa_partition_properties_t plat_ffa_partition_properties(
J-Alves19e20cf2023-08-02 12:48:55 +0100184 ffa_id_t vm_id, const struct vm *target)
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100185{
J-Alvesfa782092021-10-13 16:02:16 +0100186 (void)vm_id;
Maksims Svecovsb596eab2021-04-27 00:52:27 +0100187 (void)target;
188 return 0;
189}
Maksims Svecovs9ddf86a2021-05-06 17:17:21 +0100190
191bool plat_ffa_vm_managed_exit_supported(struct vm *vm)
192{
193 (void)vm;
194 return false;
195}
J-Alvesa0f317d2021-06-09 13:31:59 +0100196
J-Alves7ccaccf2024-02-01 14:25:23 +0000197/**
198 * Check validity of the calls:
199 * FFA_NOTIFICATION_BITMAP_CREATE/FFA_NOTIFICATION_BITMAP_DESTROY.
200 */
201struct ffa_value plat_ffa_is_notifications_bitmap_access_valid(
202 struct vcpu *current, ffa_id_t vm_id)
J-Alvesa0f317d2021-06-09 13:31:59 +0100203{
J-Alves7ccaccf2024-02-01 14:25:23 +0000204 /*
205 * Call should only be used by the Hypervisor, so any attempt of
206 * invocation from NWd FF-A endpoints should fail.
207 */
J-Alvesa0f317d2021-06-09 13:31:59 +0100208 (void)current;
209 (void)vm_id;
210
J-Alves7ccaccf2024-02-01 14:25:23 +0000211 return ffa_error(FFA_NOT_SUPPORTED);
J-Alvesa0f317d2021-06-09 13:31:59 +0100212}
213
J-Alvesaa79c012021-07-09 14:29:45 +0100214bool plat_ffa_is_notification_set_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100215 ffa_id_t sender_id,
216 ffa_id_t receiver_id)
J-Alvesaa79c012021-07-09 14:29:45 +0100217{
218 (void)current;
219 (void)sender_id;
220 (void)receiver_id;
221 return false;
222}
223
224bool plat_ffa_is_notification_get_valid(struct vcpu *current,
J-Alves19e20cf2023-08-02 12:48:55 +0100225 ffa_id_t receiver_id, uint32_t flags)
J-Alvesaa79c012021-07-09 14:29:45 +0100226{
J-Alvesfc95a302022-04-22 14:18:23 +0100227 (void)flags;
J-Alvesaa79c012021-07-09 14:29:45 +0100228 (void)current;
229 (void)receiver_id;
230 return false;
231}
232
J-Alves98ff9562021-09-09 14:39:41 +0100233bool plat_ffa_notifications_get_from_sp(
234 struct vm_locked receiver_locked, ffa_vcpu_index_t vcpu_id,
J-Alvesfa782092021-10-13 16:02:16 +0100235 ffa_notifications_bitmap_t *from_sp, // NOLINT
236 struct ffa_value *ret) // NOLINT
J-Alves98ff9562021-09-09 14:39:41 +0100237{
238 (void)receiver_locked;
239 (void)vcpu_id;
240 (void)from_sp;
241 (void)ret;
242
243 return false;
244}
245
J-Alvesd605a092022-03-28 14:20:48 +0100246bool plat_ffa_notifications_get_framework_notifications(
247 struct vm_locked receiver_locked,
248 ffa_notifications_bitmap_t *from_fwk, // NOLINT
249 uint32_t flags, ffa_vcpu_index_t vcpu_id, struct ffa_value *ret)
250{
251 (void)receiver_locked;
252 (void)from_fwk;
253 (void)flags;
254 (void)vcpu_id;
255 (void)ret;
256
257 return false;
258}
259
J-Alves19e20cf2023-08-02 12:48:55 +0100260bool plat_ffa_notification_set_forward(ffa_id_t sender_vm_id,
261 ffa_id_t receiver_vm_id, uint32_t flags,
J-Alvesde7bd2f2021-09-09 19:54:35 +0100262 ffa_notifications_bitmap_t bitmap,
263 struct ffa_value *ret)
264{
265 (void)sender_vm_id;
266 (void)receiver_vm_id;
267 (void)flags;
268 (void)bitmap;
269 (void)ret;
270
271 return false;
272}
273
J-Alvesa0f317d2021-06-09 13:31:59 +0100274struct ffa_value plat_ffa_notifications_bitmap_create(
J-Alves19e20cf2023-08-02 12:48:55 +0100275 ffa_id_t vm_id, ffa_vcpu_count_t vcpu_count)
J-Alvesa0f317d2021-06-09 13:31:59 +0100276{
277 (void)vm_id;
278 (void)vcpu_count;
279
280 return ffa_error(FFA_NOT_SUPPORTED);
281}
282
J-Alves19e20cf2023-08-02 12:48:55 +0100283struct ffa_value plat_ffa_notifications_bitmap_destroy(ffa_id_t vm_id)
J-Alvesa0f317d2021-06-09 13:31:59 +0100284{
285 (void)vm_id;
286
287 return ffa_error(FFA_NOT_SUPPORTED);
288}
J-Alvesc003a7a2021-03-18 13:06:53 +0000289
J-Alves19e20cf2023-08-02 12:48:55 +0100290struct vm_locked plat_ffa_vm_find_locked(ffa_id_t vm_id)
J-Alvesc003a7a2021-03-18 13:06:53 +0000291{
292 (void)vm_id;
293 return (struct vm_locked){.vm = NULL};
294}
295
J-Alves19e20cf2023-08-02 12:48:55 +0100296struct vm_locked plat_ffa_vm_find_locked_create(ffa_id_t vm_id)
Federico Recanati8d8b1cf2022-04-14 13:16:00 +0200297{
298 (void)vm_id;
299 return (struct vm_locked){.vm = NULL};
300}
301
J-Alvesfa782092021-10-13 16:02:16 +0100302bool plat_ffa_vm_notifications_info_get( // NOLINTNEXTLINE
303 uint16_t *ids, uint32_t *ids_count, // NOLINTNEXTLINE
304 uint32_t *lists_sizes, // NOLINTNEXTLINE
305 uint32_t *lists_count, const uint32_t ids_count_max)
J-Alvesc8e8a222021-06-08 17:33:52 +0100306{
307 (void)ids;
308 (void)ids_count;
309 (void)lists_sizes;
310 (void)lists_count;
311 (void)ids_count_max;
312
313 return false;
314}
Raghu Krishnamurthyea6d25f2021-09-14 15:27:06 -0700315
316bool plat_ffa_is_mem_perm_get_valid(const struct vcpu *current)
317{
318 (void)current;
319 return false;
320}
321
322bool plat_ffa_is_mem_perm_set_valid(const struct vcpu *current)
323{
324 (void)current;
325 return false;
326}
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500327
328/**
329 * Check if current VM can resume target VM/SP using FFA_RUN ABI.
330 */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600331bool plat_ffa_run_checks(struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100332 ffa_id_t target_vm_id, ffa_vcpu_index_t vcpu_idx,
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600333 struct ffa_value *run_ret, struct vcpu **next)
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500334{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600335 (void)current_locked;
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500336 (void)target_vm_id;
337 (void)run_ret;
338 (void)next;
Raghu Krishnamurthy048d63f2021-12-11 12:45:41 -0800339 (void)vcpu_idx;
Madhukar Pappireddyb11e0d12021-08-02 19:44:35 -0500340 return true;
341}
J-Alvesca058c22021-09-10 14:02:07 +0100342
343void plat_ffa_notification_info_get_forward( // NOLINTNEXTLINE
344 uint16_t *ids, uint32_t *ids_count, // NOLINTNEXTLINE
345 uint32_t *lists_sizes, uint32_t *lists_count,
346 const uint32_t ids_count_max)
347{
348 (void)ids;
349 (void)ids_count;
350 (void)lists_sizes;
351 (void)lists_count;
352 (void)ids_count_max;
353}
J-Alves13394022021-06-30 13:48:49 +0100354
355void plat_ffa_sri_state_set(enum plat_ffa_sri_state state)
356{
357 (void)state;
358}
359
360void plat_ffa_sri_trigger_if_delayed(struct cpu *cpu)
361{
362 (void)cpu;
363}
364
365void plat_ffa_sri_trigger_not_delayed(struct cpu *cpu)
366{
367 (void)cpu;
368}
369
J-Alves6e2abc62021-12-02 14:58:56 +0000370bool plat_ffa_inject_notification_pending_interrupt(
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600371 struct vcpu_locked target_locked, struct vcpu_locked current_locked,
J-Alves6e2abc62021-12-02 14:58:56 +0000372 struct vm_locked receiver_locked)
J-Alves7461ef22021-10-18 17:21:33 +0100373{
J-Alves6e2abc62021-12-02 14:58:56 +0000374 (void)target_locked;
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600375 (void)current_locked;
J-Alves6e2abc62021-12-02 14:58:56 +0000376 (void)receiver_locked;
377
378 return false;
J-Alves7461ef22021-10-18 17:21:33 +0100379}
Olivier Depreze562e542020-06-11 17:31:54 +0200380
Raghu Krishnamurthyef432cb2022-12-29 06:56:32 -0800381bool plat_ffa_partition_info_get_regs_forward( // NOLINTNEXTLINE
382 const struct ffa_uuid *uuid,
383 const uint16_t start_index, // NOLINTNEXTLINE
384 const uint16_t tag,
385 struct ffa_partition_info *partitions, // NOLINTNEXTLINE
386 uint16_t partitions_len, ffa_vm_count_t *ret_count)
387{
388 (void)uuid;
389 (void)start_index;
390 (void)tag;
391 (void)partitions;
392 (void)partitions_len;
393 (void)ret_count;
394 return true;
395}
396
Olivier Depreze562e542020-06-11 17:31:54 +0200397void plat_ffa_partition_info_get_forward( // NOLINTNEXTLINE
398 const struct ffa_uuid *uuid, // NOLINTNEXTLINE
Daniel Boulbyb46cad12021-12-13 17:47:21 +0000399 const uint32_t flags, // NOLINTNEXTLINE
Olivier Depreze562e542020-06-11 17:31:54 +0200400 struct ffa_partition_info *partitions, ffa_vm_count_t *ret_count)
401{
402 (void)uuid;
Daniel Boulbyb46cad12021-12-13 17:47:21 +0000403 (void)flags;
Olivier Depreze562e542020-06-11 17:31:54 +0200404 (void)partitions;
405 (void)ret_count;
406}
Olivier Deprezd614d322021-06-18 15:21:00 +0200407
408bool plat_ffa_is_secondary_ep_register_supported(void)
409{
410 return false;
411}
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500412
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600413struct ffa_value plat_ffa_msg_wait_prepare(struct vcpu_locked current_locked,
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500414 struct vcpu **next)
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600415{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600416 (void)current_locked;
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600417 (void)next;
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600418
Madhukar Pappireddydd883202022-10-24 16:49:28 -0500419 return (struct ffa_value){.func = FFA_INTERRUPT_32};
Madhukar Pappireddy5522c672021-12-17 16:35:51 -0600420}
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500421
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600422bool plat_ffa_check_runtime_state_transition(struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100423 ffa_id_t vm_id,
424 ffa_id_t receiver_vm_id,
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600425 struct vcpu_locked receiver_locked,
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500426 uint32_t func, // NOLINTNEXTLINE
427 enum vcpu_state *next_state)
428{
429 /* Perform state transition checks only for Secure Partitions. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600430 (void)current_locked;
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500431 (void)vm_id;
432 (void)receiver_vm_id;
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600433 (void)receiver_locked;
Madhukar Pappireddy0ea239a2022-06-21 17:26:57 -0500434 (void)func;
435 (void)next_state;
436
437 return true;
438}
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500439
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600440void plat_ffa_init_schedule_mode_ffa_run(struct vcpu_locked current_locked,
Madhukar Pappireddy1480fce2022-06-21 18:09:25 -0500441 struct vcpu_locked target_locked)
442{
443 /* Scheduling mode not supported in the Hypervisor/VMs. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600444 (void)current_locked;
Madhukar Pappireddy1480fce2022-06-21 18:09:25 -0500445 (void)target_locked;
446}
447
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500448void plat_ffa_wind_call_chain_ffa_direct_req(
449 struct vcpu_locked current_locked,
J-Alves19e20cf2023-08-02 12:48:55 +0100450 struct vcpu_locked receiver_vcpu_locked, ffa_id_t sender_vm_id)
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500451{
452 /* Calls chains not supported in the Hypervisor/VMs. */
453 (void)current_locked;
454 (void)receiver_vcpu_locked;
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700455 (void)sender_vm_id;
Madhukar Pappireddy49fe6702022-06-21 17:52:23 -0500456}
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500457
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600458void plat_ffa_unwind_call_chain_ffa_direct_resp(
459 struct vcpu_locked current_locked, struct vcpu_locked next_locked)
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500460{
461 /* Calls chains not supported in the Hypervisor/VMs. */
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600462 (void)current_locked;
463 (void)next_locked;
Madhukar Pappireddyc0fb87e2022-06-21 17:59:15 -0500464}
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500465
J-Alves19e20cf2023-08-02 12:48:55 +0100466bool plat_ffa_is_spmd_lp_id(ffa_id_t vm_id)
Raghu Krishnamurthya9ccf122023-03-27 20:42:01 -0700467{
468 (void)vm_id;
469 return false;
470}
471
Madhukar Pappireddy2f76e492022-09-06 15:21:59 -0500472bool plat_ffa_intercept_direct_response(struct vcpu_locked current_locked,
473 struct vcpu **next,
474 struct ffa_value to_ret,
475 struct ffa_value *signal_interrupt)
476{
477 /*
478 * Only applicable to SPMC as it signals virtual secure interrupt to
479 * S-EL0 partitions.
480 */
481 (void)current_locked;
482 (void)next;
483 (void)to_ret;
484 (void)signal_interrupt;
485
486 return false;
487}
488
Madhukar Pappireddy486360d2022-09-06 15:32:24 -0500489void plat_ffa_enable_virtual_interrupts(struct vcpu_locked current_locked,
490 struct vm_locked vm_locked)
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500491{
492 (void)current_locked;
Madhukar Pappireddy486360d2022-09-06 15:32:24 -0500493 (void)vm_locked;
Madhukar Pappireddy046dad02022-06-21 18:43:33 -0500494}
J-Alves66652252022-07-06 09:49:51 +0100495
496struct 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
J-Alvesfdd29272022-07-19 13:16:31 +0100523struct ffa_value plat_ffa_other_world_mem_send_continue(
524 struct vm *from, void *fragment, uint32_t fragment_length,
525 ffa_memory_handle_t handle, struct mpool *page_pool)
526{
527 (void)from;
528 (void)fragment;
529 (void)fragment_length;
530 (void)handle;
531 (void)page_pool;
532
533 return ffa_error(FFA_INVALID_PARAMETERS);
534}
J-Alves27b71962022-12-12 15:29:58 +0000535
J-Alves19e20cf2023-08-02 12:48:55 +0100536struct ffa_value plat_ffa_msg_send(ffa_id_t sender_vm_id,
537 ffa_id_t receiver_vm_id, uint32_t size,
J-Alves27b71962022-12-12 15:29:58 +0000538 struct vcpu *current, struct vcpu **next)
539{
540 (void)sender_vm_id;
541 (void)receiver_vm_id;
542 (void)size;
543 (void)current;
544 (void)next;
545
546 return ffa_error(FFA_NOT_SUPPORTED);
547}
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600548
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600549struct ffa_value plat_ffa_yield_prepare(struct vcpu_locked current_locked,
Madhukar Pappireddy184501c2023-05-23 17:24:06 -0500550 struct vcpu **next,
551 uint32_t timeout_low,
552 uint32_t timeout_high)
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600553{
Madhukar Pappireddybd10e572023-03-06 16:39:49 -0600554 (void)current_locked;
Madhukar Pappireddyb3fb8712023-05-23 17:10:34 -0500555 (void)next;
Madhukar Pappireddy184501c2023-05-23 17:24:06 -0500556 (void)timeout_low;
557 (void)timeout_high;
Madhukar Pappireddyb3fb8712023-05-23 17:10:34 -0500558
559 return ffa_error(FFA_NOT_SUPPORTED);
Madhukar Pappireddy1f2f2132023-02-14 17:48:44 -0600560}
Olivier Deprezd9d409f2023-03-17 11:47:57 +0100561
562bool arch_vm_init_mm(struct vm *vm, struct mpool *ppool)
563{
564 (void)vm;
565 (void)ppool;
566
567 return true;
568}
569
Madhukar Pappireddy070f49e2024-01-12 13:02:27 -0600570bool arch_vm_iommu_init_mm(struct vm *vm, struct mpool *ppool)
571{
572 (void)vm;
573 (void)ppool;
574
575 return true;
576}
577
Olivier Deprezd9d409f2023-03-17 11:47:57 +0100578bool arch_vm_identity_prepare(struct vm_locked vm_locked, paddr_t begin,
579 paddr_t end, uint32_t mode, struct mpool *ppool)
580{
581 (void)vm_locked;
582 (void)begin;
583 (void)end;
584 (void)mode;
585 (void)ppool;
586
587 return true;
588}
589
590void arch_vm_identity_commit(struct vm_locked vm_locked, paddr_t begin,
591 paddr_t end, uint32_t mode, struct mpool *ppool,
592 ipaddr_t *ipa)
593{
594 (void)vm_locked;
595 (void)begin;
596 (void)end;
597 (void)mode;
598 (void)ppool;
599 (void)ipa;
600}
601
602bool arch_vm_unmap(struct vm_locked vm_locked, paddr_t begin, paddr_t end,
603 struct mpool *ppool)
604{
605 (void)vm_locked;
606 (void)begin;
607 (void)end;
608 (void)ppool;
609
610 return true;
611}
612
613void arch_vm_ptable_defrag(struct vm_locked vm_locked, struct mpool *ppool)
614{
615 (void)vm_locked;
616 (void)ppool;
617}
618
619bool arch_vm_mem_get_mode(struct vm_locked vm_locked, ipaddr_t begin,
620 ipaddr_t end, uint32_t *mode) // NOLINT
621{
622 (void)vm_locked;
623 (void)begin;
624 (void)end;
625 (void)mode;
626
627 return true;
628}
Olivier Deprez878bd5b2021-04-15 19:05:10 +0200629
630ffa_memory_attributes_t plat_ffa_memory_security_mode(
631 ffa_memory_attributes_t attributes, uint32_t mode)
632{
633 (void)mode;
634
635 return attributes;
636}
Kathleen Capella6ab05132023-05-10 12:27:35 -0400637
638struct ffa_value plat_ffa_error_32(struct vcpu *current, struct vcpu **next,
Karl Meakin1064a9c2024-06-04 17:20:43 +0100639 enum ffa_error error_code)
Kathleen Capella6ab05132023-05-10 12:27:35 -0400640{
641 (void)current;
642 (void)next;
643 (void)error_code;
J-Alves2ced1672022-12-12 14:35:38 +0000644
645 return ffa_error(FFA_NOT_SUPPORTED);
646}
647
J-Alves19e20cf2023-08-02 12:48:55 +0100648int64_t plat_ffa_mailbox_waiter_get(ffa_id_t vm_id, const struct vcpu *current)
J-Alves2ced1672022-12-12 14:35:38 +0000649{
J-Alvesbc7ab4f2022-12-13 12:09:25 +0000650 (void)vm_id;
651 (void)current;
J-Alves2ced1672022-12-12 14:35:38 +0000652
J-Alvesbc7ab4f2022-12-13 12:09:25 +0000653 return -1;
654}
655
656int64_t plat_ffa_mailbox_writable_get(const struct vcpu *current)
657{
658 (void)current;
659
660 return -1;
Kathleen Capella6ab05132023-05-10 12:27:35 -0400661}
Raghu Krishnamurthye74d6532023-06-07 12:21:54 -0700662
663bool plat_ffa_partition_info_get_regs_forward_allowed(void)
664{
665 return false;
666}
Madhukar Pappireddy9e09d7a2023-08-08 14:53:49 -0500667
668void plat_ffa_free_vm_resources(struct vm_locked vm_locked)
669{
670 (void)vm_locked;
671}
Madhukar Pappireddy0e57d3d2023-10-11 15:49:05 -0500672
673bool arch_vm_iommu_mm_identity_map(struct vm_locked vm_locked, paddr_t begin,
674 paddr_t end, uint32_t mode,
675 struct mpool *ppool, ipaddr_t *ipa,
676 struct dma_device_properties *dma_prop)
677{
678 (void)vm_locked;
679 (void)begin;
680 (void)end;
681 (void)mode;
682 (void)ppool;
683 (void)ipa;
684 (void)dma_prop;
685
686 return true;
687}
Madhukar Pappireddyc64d0642024-08-07 16:55:46 -0500688
689uint32_t plat_ffa_interrupt_get(struct vcpu_locked current_locked)
690{
691 (void)current_locked;
692
693 return 0;
694}