GNU Linux-libre 5.15.54-gnu
[releases.git] / include / linux / irqchip / arm-vgic-info.h
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