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 | |