blob: 9bae658f1eb2d5359354e8e07a4a12a5b0631d20 [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.
*/
#include "hf/api.h"
#include "hf/check.h"
#include "hf/vm.h"
void ffa_interrupts_handle_secure_interrupt(struct vcpu *current,
struct vcpu **next)
{
(void)current;
(void)next;
/*
* SPMD uses FFA_INTERRUPT ABI to convey secure interrupt to
* SPMC. Execution should not reach hypervisor with this ABI.
*/
CHECK(false);
}
bool ffa_interrupts_inject_notification_pending_interrupt(
struct vcpu_locked target_locked, struct vcpu_locked current_locked,
struct vm_locked receiver_locked)
{
(void)target_locked;
(void)current_locked;
(void)receiver_locked;
return false;
}
/**
* Enable relevant virtual interrupts for VMs.
*/
void ffa_interrupts_enable_virtual_interrupts(struct vcpu_locked current_locked,
struct vm_locked vm_locked)
{
struct vcpu *current;
struct interrupts *interrupts;
current = current_locked.vcpu;
interrupts = &current->interrupts;
if (vm_locked.vm->notifications.enabled) {
vcpu_virt_interrupt_set_enabled(interrupts,
HF_NOTIFICATION_PENDING_INTID);
}
}
uint32_t ffa_interrupts_get(struct vcpu_locked current_locked)
{
return api_interrupt_get(current_locked);
}
bool ffa_interrupts_intercept_call(struct vcpu_locked current_locked,
struct vcpu_locked next_locked,
struct ffa_value *signal_interrupt)
{
(void)current_locked;
(void)next_locked;
(void)signal_interrupt;
return false;
}