162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * ARM Generic Interrupt Controller (GIC) host specific defines 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef SELFTEST_KVM_VGIC_H 762306a36Sopenharmony_ci#define SELFTEST_KVM_VGIC_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/kvm.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "kvm_util.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#define REDIST_REGION_ATTR_ADDR(count, base, flags, index) \ 1462306a36Sopenharmony_ci (((uint64_t)(count) << 52) | \ 1562306a36Sopenharmony_ci ((uint64_t)((base) >> 16) << 16) | \ 1662306a36Sopenharmony_ci ((uint64_t)(flags) << 12) | \ 1762306a36Sopenharmony_ci index) 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ciint vgic_v3_setup(struct kvm_vm *vm, unsigned int nr_vcpus, uint32_t nr_irqs, 2062306a36Sopenharmony_ci uint64_t gicd_base_gpa, uint64_t gicr_base_gpa); 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#define VGIC_MAX_RESERVED 1023 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_civoid kvm_irq_set_level_info(int gic_fd, uint32_t intid, int level); 2562306a36Sopenharmony_ciint _kvm_irq_set_level_info(int gic_fd, uint32_t intid, int level); 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_civoid kvm_arm_irq_line(struct kvm_vm *vm, uint32_t intid, int level); 2862306a36Sopenharmony_ciint _kvm_arm_irq_line(struct kvm_vm *vm, uint32_t intid, int level); 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci/* The vcpu arg only applies to private interrupts. */ 3162306a36Sopenharmony_civoid kvm_irq_write_ispendr(int gic_fd, uint32_t intid, struct kvm_vcpu *vcpu); 3262306a36Sopenharmony_civoid kvm_irq_write_isactiver(int gic_fd, uint32_t intid, struct kvm_vcpu *vcpu); 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#define KVM_IRQCHIP_NUM_PINS (1020 - 32) 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci#endif // SELFTEST_KVM_VGIC_H 37