blob: 398585d7c4da74ea8b84c8d1168a23a15c19f761 [file] [log] [blame]
Karl Meakin8e58ddc2024-11-08 23:19:34 +00001/*
2 * Copyright 2024 The Hafnium Authors.
3 *
4 * Use of this source code is governed by a BSD-style
5 * license that can be found in the LICENSE file or at
6 * https://opensource.org/licenses/BSD-3-Clause.
7 */
8
9#pragma once
10
11#include "hf/vm.h"
12
13/**
14 * Deactivate interrupt.
15 */
Karl Meakin117c8082024-12-04 16:03:28 +000016int64_t ffa_interrupts_deactivate(uint32_t pint_id, uint32_t vint_id,
17 struct vcpu *current);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000018
Karl Meakin117c8082024-12-04 16:03:28 +000019void ffa_interrupts_handle_secure_interrupt(struct vcpu *current,
20 struct vcpu **next);
21bool ffa_interrupts_inject_notification_pending_interrupt(
Karl Meakin8e58ddc2024-11-08 23:19:34 +000022 struct vcpu_locked next_locked, struct vcpu_locked current_locked,
23 struct vm_locked receiver_locked);
24
Karl Meakin117c8082024-12-04 16:03:28 +000025bool ffa_interrupts_intercept_call(struct vcpu_locked current_locked,
26 struct vcpu_locked next_locked,
27 struct ffa_value *signal_interrupt);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000028
Karl Meakin117c8082024-12-04 16:03:28 +000029struct vcpu *ffa_interrupts_unwind_nwd_call_chain(struct vcpu *current);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000030
Karl Meakin117c8082024-12-04 16:03:28 +000031void ffa_interrupts_enable_virtual_interrupts(struct vcpu_locked current_locked,
32 struct vm_locked vm_locked);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000033
34/**
35 * Reconfigure the interrupt belonging to the current partition at runtime.
36 */
Karl Meakin117c8082024-12-04 16:03:28 +000037int64_t ffa_interrupts_reconfigure(uint32_t int_id, uint32_t command,
38 uint32_t value, struct vcpu *current);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000039
Karl Meakin117c8082024-12-04 16:03:28 +000040uint32_t ffa_interrupts_get(struct vcpu_locked current_locked);