Documentation: bindings: add dt doc for Rockchip USB 3.0 PHY
[firefly-linux-kernel-4.4.55.git] / include / kvm / arm_vgic.h
index 6a3538ef72753cd5ef70ac23605cf1484f852774..13a3d537811b9f7d12b3fa892b8312330f89d70f 100644 (file)
@@ -112,7 +112,6 @@ struct vgic_vmcr {
 struct vgic_ops {
        struct vgic_lr  (*get_lr)(const struct kvm_vcpu *, int);
        void    (*set_lr)(struct kvm_vcpu *, int, struct vgic_lr);
-       void    (*sync_lr_elrsr)(struct kvm_vcpu *, int, struct vgic_lr);
        u64     (*get_elrsr)(const struct kvm_vcpu *vcpu);
        u64     (*get_eisr)(const struct kvm_vcpu *vcpu);
        void    (*clear_eisr)(struct kvm_vcpu *vcpu);
@@ -159,7 +158,6 @@ struct irq_phys_map {
        u32                     virt_irq;
        u32                     phys_irq;
        u32                     irq;
-       bool                    active;
 };
 
 struct irq_phys_map_entry {
@@ -281,6 +279,12 @@ struct vgic_v2_cpu_if {
        u32             vgic_lr[VGIC_V2_MAX_LRS];
 };
 
+/*
+ * LRs are stored in reverse order in memory. make sure we index them
+ * correctly.
+ */
+#define VGIC_V3_LR_INDEX(lr)           (VGIC_V3_MAX_LRS - 1 - lr)
+
 struct vgic_v3_cpu_if {
 #ifdef CONFIG_KVM_ARM_VGIC_V3
        u32             vgic_hcr;
@@ -296,22 +300,16 @@ struct vgic_v3_cpu_if {
 };
 
 struct vgic_cpu {
-       /* per IRQ to LR mapping */
-       u8              *vgic_irq_lr_map;
-
        /* Pending/active/both interrupts on this VCPU */
-       DECLARE_BITMAP( pending_percpu, VGIC_NR_PRIVATE_IRQS);
-       DECLARE_BITMAP( active_percpu, VGIC_NR_PRIVATE_IRQS);
-       DECLARE_BITMAP( pend_act_percpu, VGIC_NR_PRIVATE_IRQS);
+       DECLARE_BITMAP(pending_percpu, VGIC_NR_PRIVATE_IRQS);
+       DECLARE_BITMAP(active_percpu, VGIC_NR_PRIVATE_IRQS);
+       DECLARE_BITMAP(pend_act_percpu, VGIC_NR_PRIVATE_IRQS);
 
        /* Pending/active/both shared interrupts, dynamically sized */
        unsigned long   *pending_shared;
        unsigned long   *active_shared;
        unsigned long   *pend_act_shared;
 
-       /* Bitmap of used/free list registers */
-       DECLARE_BITMAP( lr_used, VGIC_V2_MAX_LRS);
-
        /* Number of list registers on this CPU */
        int             nr_lr;
 
@@ -350,12 +348,10 @@ int kvm_vgic_inject_mapped_irq(struct kvm *kvm, int cpuid,
                               struct irq_phys_map *map, bool level);
 void vgic_v3_dispatch_sgi(struct kvm_vcpu *vcpu, u64 reg);
 int kvm_vgic_vcpu_pending_irq(struct kvm_vcpu *vcpu);
-int kvm_vgic_vcpu_active_irq(struct kvm_vcpu *vcpu);
 struct irq_phys_map *kvm_vgic_map_phys_irq(struct kvm_vcpu *vcpu,
                                           int virt_irq, int irq);
 int kvm_vgic_unmap_phys_irq(struct kvm_vcpu *vcpu, struct irq_phys_map *map);
-bool kvm_vgic_get_phys_irq_active(struct irq_phys_map *map);
-void kvm_vgic_set_phys_irq_active(struct irq_phys_map *map, bool active);
+bool kvm_vgic_map_is_active(struct kvm_vcpu *vcpu, struct irq_phys_map *map);
 
 #define irqchip_in_kernel(k)   (!!((k)->arch.vgic.in_kernel))
 #define vgic_initialized(k)    (!!((k)->arch.vgic.nr_cpus))