blob: a786114266af6939451a6b4e56e55a1781eb65a2 [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 Meakinfa1dcb82025-02-10 16:47:50 +000033void ffa_interrupts_mask(struct vcpu_locked receiver_vcpu_locked);
34void ffa_interrupts_unmask(struct vcpu *current);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000035/**
36 * Reconfigure the interrupt belonging to the current partition at runtime.
37 */
Karl Meakin117c8082024-12-04 16:03:28 +000038int64_t ffa_interrupts_reconfigure(uint32_t int_id, uint32_t command,
39 uint32_t value, struct vcpu *current);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000040
Karl Meakin117c8082024-12-04 16:03:28 +000041uint32_t ffa_interrupts_get(struct vcpu_locked current_locked);