blob: 9a0f70cebc46899e4beb00c45d57b5c2e47a6c6f [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(
Daniel Boulbyd49d0772025-01-15 11:19:36 +000022 struct vcpu_locked next_locked, struct vm_locked receiver_locked);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000023
Karl Meakin117c8082024-12-04 16:03:28 +000024bool ffa_interrupts_intercept_call(struct vcpu_locked current_locked,
25 struct vcpu_locked next_locked,
26 struct ffa_value *signal_interrupt);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000027
Karl Meakin117c8082024-12-04 16:03:28 +000028struct vcpu *ffa_interrupts_unwind_nwd_call_chain(struct vcpu *current);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000029
Karl Meakin117c8082024-12-04 16:03:28 +000030void ffa_interrupts_enable_virtual_interrupts(struct vcpu_locked current_locked,
31 struct vm_locked vm_locked);
Karl Meakinfa1dcb82025-02-10 16:47:50 +000032void ffa_interrupts_mask(struct vcpu_locked receiver_vcpu_locked);
33void ffa_interrupts_unmask(struct vcpu *current);
Karl Meakin8e58ddc2024-11-08 23:19:34 +000034/**
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);