Lines Matching defs:vm
141 int its_alloc_vcpu_irqs(struct its_vm *vm)
145 vm->fwnode = irq_domain_alloc_named_id_fwnode("GICv4-vpe", task_pid_nr(current));
146 if (!vm->fwnode) {
150 vm->domain = irq_domain_create_hierarchy(gic_domain, 0, vm->nr_vpes, vm->fwnode, vpe_domain_ops, vm);
151 if (!vm->domain) {
155 for (i = 0; i < vm->nr_vpes; i++) {
156 vm->vpes[i]->its_vm = vm;
157 vm->vpes[i]->idai = true;
160 vpe_base_irq = __irq_domain_alloc_irqs(vm->domain, -1, vm->nr_vpes, NUMA_NO_NODE, vm, false, NULL);
165 for (i = 0; i < vm->nr_vpes; i++) {
167 vm->vpes[i]->irq = vpe_base_irq + i;
168 ret = its_alloc_vcpu_sgis(vm->vpes[i], i);
177 if (vm->domain) {
178 irq_domain_remove(vm->domain);
180 if (vm->fwnode) {
181 irq_domain_free_fwnode(vm->fwnode);
187 static void its_free_sgi_irqs(struct its_vm *vm)
195 for (i = 0; i < vm->nr_vpes; i++) {
196 unsigned int irq = irq_find_mapping(vm->vpes[i]->sgi_domain, 0);
202 irq_domain_remove(vm->vpes[i]->sgi_domain);
203 irq_domain_free_fwnode(vm->vpes[i]->fwnode);
207 void its_free_vcpu_irqs(struct its_vm *vm)
209 its_free_sgi_irqs(vm);
210 irq_domain_free_irqs(vm->vpes[0]->irq, vm->nr_vpes);
211 irq_domain_remove(vm->domain);
212 irq_domain_free_fwnode(vm->fwnode);