| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * include/linux/irqchip/arm-vgic-info.h |
| * |
| * Copyright (C) 2016 ARM Limited, All Rights Reserved. |
| */ |
| #ifndef __LINUX_IRQCHIP_ARM_VGIC_INFO_H |
| #define __LINUX_IRQCHIP_ARM_VGIC_INFO_H |
| |
| #include <linux/types.h> |
| #include <linux/ioport.h> |
| |
| enum gic_type { |
| /* Full GICv2 */ |
| GIC_V2, |
| /* Full GICv3, optionally with v2 compat */ |
| GIC_V3, |
| }; |
| |
| struct gic_kvm_info { |
| /* GIC type */ |
| enum gic_type type; |
| /* Virtual CPU interface */ |
| struct resource vcpu; |
| /* Interrupt number */ |
| unsigned int maint_irq; |
| /* No interrupt mask, no need to use the above field */ |
| bool no_maint_irq_mask; |
| /* Virtual control interface */ |
| struct resource vctrl; |
| /* vlpi support */ |
| bool has_v4; |
| /* rvpeid support */ |
| bool has_v4_1; |
| /* Deactivation impared, subpar stuff */ |
| bool no_hw_deactivation; |
| }; |
| |
| #ifdef CONFIG_KVM |
| void vgic_set_kvm_info(const struct gic_kvm_info *info); |
| #else |
| static inline void vgic_set_kvm_info(const struct gic_kvm_info *info) {} |
| #endif |
| |
| #endif |