its_vm
cpu_if->its_vpe.its_vm || !cpu_if->vgic_sre)
cpu_if->its_vpe.its_vm || !cpu_if->vgic_sre)
if (vcpu->arch.vgic_cpu.vgic_v3.its_vpe.its_vm)
for (i = 0; i < dist->its_vm.nr_vpes; i++)
free_irq(dist->its_vm.vpes[i]->irq, kvm_get_vcpu(kvm, i));
for (i = 0; i < dist->its_vm.nr_vpes; i++)
dist->its_vm.vpes[i]->irq));
if (dist->its_vm.vpes)
dist->its_vm.vpes = kzalloc_objs(*dist->its_vm.vpes, nr_vcpus,
if (!dist->its_vm.vpes)
dist->its_vm.nr_vpes = nr_vcpus;
dist->its_vm.vpes[i] = &vcpu->arch.vgic_cpu.vgic_v3.its_vpe;
ret = its_alloc_vcpu_irqs(&dist->its_vm);
kfree(dist->its_vm.vpes);
dist->its_vm.nr_vpes = 0;
dist->its_vm.vpes = NULL;
int irq = dist->its_vm.vpes[i]->irq;
dist->its_vm.nr_vpes = i;
struct its_vm *its_vm = &kvm->arch.vgic.its_vm;
if (!its_vm->vpes)
for (i = 0; i < its_vm->nr_vpes; i++) {
int irq = its_vm->vpes[i]->irq;
its_free_vcpu_irqs(its_vm);
kfree(its_vm->vpes);
its_vm->nr_vpes = 0;
its_vm->vpes = NULL;
.vm = &kvm->arch.vgic.its_vm,
desc.its_vmovp_cmd.its_list = get_its_list(vpe->its_vm);
if (!require_its_list_vmovp(vpe->its_vm, its))
struct its_vm *vm;
static void its_map_vm(struct its_node *its, struct its_vm *vm)
static void its_unmap_vm(struct its_node *its, struct its_vm *vm)
static bool require_its_list_vmovp(struct its_vm *vm, struct its_node *its)
static u16 get_its_list(struct its_vm *vm)
raw_spin_lock(&vpe->its_vm->vmapp_lock);
raw_spin_unlock(&vpe->its_vm->vmapp_lock);
val = virt_to_phys(page_address(vpe->its_vm->vprop_page)) &
guard(raw_spinlock_irqsave)(&vpe->its_vm->vmapp_lock);
if (its_list_map && !vpe->its_vm->vlpi_count[its->list_nr])
struct its_vm *vm = domain->host_data;
BUG_ON(vm != vpe->its_vm);
struct its_vm *vm = args;
vconf_addr = virt_to_phys(page_address(desc->its_vmapp_cmd.vpe->its_vm->vprop_page));
int its_alloc_vcpu_irqs(struct its_vm *vm)
vm->vpes[i]->its_vm = vm;
static void its_free_sgi_irqs(struct its_vm *vm)
void its_free_vcpu_irqs(struct its_vm *vm)
struct its_vm its_vm;
struct its_vm *vm;
int its_alloc_vcpu_irqs(struct its_vm *vm);
void its_free_vcpu_irqs(struct its_vm *vm);
struct its_vm *its_vm;