blob: 9a0f70cebc46899e4beb00c45d57b5c2e47a6c6f [file] [log] [blame]
/*
* Copyright 2024 The Hafnium Authors.
*
* Use of this source code is governed by a BSD-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/BSD-3-Clause.
*/
#pragma once
#include "hf/vm.h"
/**
* Deactivate interrupt.
*/
int64_t ffa_interrupts_deactivate(uint32_t pint_id, uint32_t vint_id,
struct vcpu *current);
void ffa_interrupts_handle_secure_interrupt(struct vcpu *current,
struct vcpu **next);
bool ffa_interrupts_inject_notification_pending_interrupt(
struct vcpu_locked next_locked, struct vm_locked receiver_locked);
bool ffa_interrupts_intercept_call(struct vcpu_locked current_locked,
struct vcpu_locked next_locked,
struct ffa_value *signal_interrupt);
struct vcpu *ffa_interrupts_unwind_nwd_call_chain(struct vcpu *current);
void ffa_interrupts_enable_virtual_interrupts(struct vcpu_locked current_locked,
struct vm_locked vm_locked);
void ffa_interrupts_mask(struct vcpu_locked receiver_vcpu_locked);
void ffa_interrupts_unmask(struct vcpu *current);
/**
* Reconfigure the interrupt belonging to the current partition at runtime.
*/
int64_t ffa_interrupts_reconfigure(uint32_t int_id, uint32_t command,
uint32_t value, struct vcpu *current);
uint32_t ffa_interrupts_get(struct vcpu_locked current_locked);