1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * include/linux/irqchip/arm-vgic-info.h 4 * 5 * Copyright (C) 2016 ARM Limited, All Rights Reserved. 6 */ 7 #ifndef __LINUX_IRQCHIP_ARM_VGIC_INFO_H 8 #define __LINUX_IRQCHIP_ARM_VGIC_INFO_H 9 10 #include <linux/types.h> 11 #include <linux/ioport.h> 12 13 enum gic_type { 14 /* Full GICv2 */ 15 GIC_V2, 16 /* Full GICv3, optionally with v2 compat */ 17 GIC_V3, 18 }; 19 20 struct gic_kvm_info { 21 /* GIC type */ 22 enum gic_type type; 23 /* Virtual CPU interface */ 24 struct resource vcpu; 25 /* Interrupt number */ 26 unsigned int maint_irq; 27 /* No interrupt mask, no need to use the above field */ 28 bool no_maint_irq_mask; 29 /* Virtual control interface */ 30 struct resource vctrl; 31 /* vlpi support */ 32 bool has_v4; 33 /* rvpeid support */ 34 bool has_v4_1; 35 /* Deactivation impared, subpar stuff */ 36 bool no_hw_deactivation; 37 }; 38 39 #ifdef CONFIG_KVM 40 void vgic_set_kvm_info(const struct gic_kvm_info *info); 41 #else 42 static inline void vgic_set_kvm_info(const struct gic_kvm_info *info) {} 43 #endif 44 45 #endif 46