Lines Matching refs:vm

136 int its_alloc_vcpu_irqs(struct its_vm *vm)  in its_alloc_vcpu_irqs()  argument
140 vm->fwnode = irq_domain_alloc_named_id_fwnode("GICv4-vpe", in its_alloc_vcpu_irqs()
142 if (!vm->fwnode) in its_alloc_vcpu_irqs()
145 vm->domain = irq_domain_create_hierarchy(gic_domain, 0, vm->nr_vpes, in its_alloc_vcpu_irqs()
146 vm->fwnode, vpe_domain_ops, in its_alloc_vcpu_irqs()
147 vm); in its_alloc_vcpu_irqs()
148 if (!vm->domain) in its_alloc_vcpu_irqs()
151 for (i = 0; i < vm->nr_vpes; i++) { in its_alloc_vcpu_irqs()
152 vm->vpes[i]->its_vm = vm; in its_alloc_vcpu_irqs()
153 vm->vpes[i]->idai = true; in its_alloc_vcpu_irqs()
156 vpe_base_irq = __irq_domain_alloc_irqs(vm->domain, -1, vm->nr_vpes, in its_alloc_vcpu_irqs()
157 NUMA_NO_NODE, vm, in its_alloc_vcpu_irqs()
162 for (i = 0; i < vm->nr_vpes; i++) { in its_alloc_vcpu_irqs()
164 vm->vpes[i]->irq = vpe_base_irq + i; in its_alloc_vcpu_irqs()
165 ret = its_alloc_vcpu_sgis(vm->vpes[i], i); in its_alloc_vcpu_irqs()
173 if (vm->domain) in its_alloc_vcpu_irqs()
174 irq_domain_remove(vm->domain); in its_alloc_vcpu_irqs()
175 if (vm->fwnode) in its_alloc_vcpu_irqs()
176 irq_domain_free_fwnode(vm->fwnode); in its_alloc_vcpu_irqs()
181 static void its_free_sgi_irqs(struct its_vm *vm) in its_free_sgi_irqs() argument
188 for (i = 0; i < vm->nr_vpes; i++) { in its_free_sgi_irqs()
189 unsigned int irq = irq_find_mapping(vm->vpes[i]->sgi_domain, 0); in its_free_sgi_irqs()
195 irq_domain_remove(vm->vpes[i]->sgi_domain); in its_free_sgi_irqs()
196 irq_domain_free_fwnode(vm->vpes[i]->fwnode); in its_free_sgi_irqs()
200 void its_free_vcpu_irqs(struct its_vm *vm) in its_free_vcpu_irqs() argument
202 its_free_sgi_irqs(vm); in its_free_vcpu_irqs()
203 irq_domain_free_irqs(vm->vpes[0]->irq, vm->nr_vpes); in its_free_vcpu_irqs()
204 irq_domain_remove(vm->domain); in its_free_vcpu_irqs()
205 irq_domain_free_fwnode(vm->fwnode); in its_free_vcpu_irqs()