Merge branch 'for-next' of git://git.samba.org/sfrench/cifs-2.6
[sfrench/cifs-2.6.git] / include / kvm / arm_vgic.h
index c0b3d999c266f2271d61bd58b042352580faf5d2..97b8d3728b3103f1b54f711f15d06fa84691e372 100644 (file)
@@ -148,7 +148,6 @@ struct vgic_its {
        gpa_t                   vgic_its_base;
 
        bool                    enabled;
-       bool                    initialized;
        struct vgic_io_device   iodev;
        struct kvm_device       *dev;
 
@@ -162,6 +161,9 @@ struct vgic_its {
        u32                     creadr;
        u32                     cwriter;
 
+       /* migration ABI revision in use */
+       u32                     abi_rev;
+
        /* Protects the device and collection lists */
        struct mutex            its_lock;
        struct list_head        device_list;
@@ -225,8 +227,6 @@ struct vgic_dist {
 struct vgic_v2_cpu_if {
        u32             vgic_hcr;
        u32             vgic_vmcr;
-       u32             vgic_misr;      /* Saved only */
-       u64             vgic_eisr;      /* Saved only */
        u64             vgic_elrsr;     /* Saved only */
        u32             vgic_apr;
        u32             vgic_lr[VGIC_V2_MAX_LRS];
@@ -236,8 +236,6 @@ struct vgic_v3_cpu_if {
        u32             vgic_hcr;
        u32             vgic_vmcr;
        u32             vgic_sre;       /* Restored only, change ignored */
-       u32             vgic_misr;      /* Saved only */
-       u32             vgic_eisr;      /* Saved only */
        u32             vgic_elrsr;     /* Saved only */
        u32             vgic_ap0r[4];
        u32             vgic_ap1r[4];
@@ -264,8 +262,6 @@ struct vgic_cpu {
         */
        struct list_head ap_list_head;
 
-       u64 live_lrs;
-
        /*
         * Members below are used with GICv3 emulation only and represent
         * parts of the redistributor.
@@ -289,6 +285,7 @@ extern struct static_key_false vgic_v2_cpuif_trap;
 
 int kvm_vgic_addr(struct kvm *kvm, unsigned long type, u64 *addr, bool write);
 void kvm_vgic_early_init(struct kvm *kvm);
+int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu);
 int kvm_vgic_create(struct kvm *kvm, u32 type);
 void kvm_vgic_destroy(struct kvm *kvm);
 void kvm_vgic_vcpu_early_init(struct kvm_vcpu *vcpu);
@@ -307,6 +304,9 @@ bool kvm_vgic_map_is_active(struct kvm_vcpu *vcpu, unsigned int virt_irq);
 
 int kvm_vgic_vcpu_pending_irq(struct kvm_vcpu *vcpu);
 
+void kvm_vgic_load(struct kvm_vcpu *vcpu);
+void kvm_vgic_put(struct kvm_vcpu *vcpu);
+
 #define irqchip_in_kernel(k)   (!!((k)->arch.vgic.in_kernel))
 #define vgic_initialized(k)    ((k)->arch.vgic.initialized)
 #define vgic_ready(k)          ((k)->arch.vgic.ready)