Lines Matching refs:vgic

38         return v->arch.vgic.private_irqs;  in vgic_get_rank()
40 return &v->domain->arch.vgic.shared_irqs[rank - 1]; in vgic_get_rank()
98 switch ( d->arch.vgic.version ) in domain_vgic_register()
112 d->domain_id, d->arch.vgic.version); in domain_vgic_register()
124 d->arch.vgic.ctlr = 0; in domain_vgic_init()
130 d->arch.vgic.nr_spis = nr_spis; in domain_vgic_init()
132 spin_lock_init(&d->arch.vgic.lock); in domain_vgic_init()
134 d->arch.vgic.shared_irqs = in domain_vgic_init()
136 if ( d->arch.vgic.shared_irqs == NULL ) in domain_vgic_init()
139 d->arch.vgic.pending_irqs = in domain_vgic_init()
140 xzalloc_array(struct pending_irq, d->arch.vgic.nr_spis); in domain_vgic_init()
141 if ( d->arch.vgic.pending_irqs == NULL ) in domain_vgic_init()
144 for (i=0; i<d->arch.vgic.nr_spis; i++) in domain_vgic_init()
145 vgic_init_pending_irq(&d->arch.vgic.pending_irqs[i], i + 32); in domain_vgic_init()
149 vgic_rank_init(&d->arch.vgic.shared_irqs[i], i + 1, 0); in domain_vgic_init()
151 ret = d->arch.vgic.handler->domain_init(d); in domain_vgic_init()
155 d->arch.vgic.allocated_irqs = in domain_vgic_init()
157 if ( !d->arch.vgic.allocated_irqs ) in domain_vgic_init()
162 set_bit(i, d->arch.vgic.allocated_irqs); in domain_vgic_init()
169 d->arch.vgic.handler = ops; in register_vgic_ops()
177 for ( i = 0; i < (d->arch.vgic.nr_spis); i++ ) in domain_vgic_free()
190 if ( d->arch.vgic.handler ) in domain_vgic_free()
191 d->arch.vgic.handler->domain_free(d); in domain_vgic_free()
192 xfree(d->arch.vgic.shared_irqs); in domain_vgic_free()
193 xfree(d->arch.vgic.pending_irqs); in domain_vgic_free()
194 xfree(d->arch.vgic.allocated_irqs); in domain_vgic_free()
201 v->arch.vgic.private_irqs = xzalloc(struct vgic_irq_rank); in vcpu_vgic_init()
202 if ( v->arch.vgic.private_irqs == NULL ) in vcpu_vgic_init()
206 vgic_rank_init(v->arch.vgic.private_irqs, 0, v->vcpu_id); in vcpu_vgic_init()
208 v->domain->arch.vgic.handler->vcpu_init(v); in vcpu_vgic_init()
210 memset(&v->arch.vgic.pending_irqs, 0, sizeof(v->arch.vgic.pending_irqs)); in vcpu_vgic_init()
212 vgic_init_pending_irq(&v->arch.vgic.pending_irqs[i], i); in vcpu_vgic_init()
214 INIT_LIST_HEAD(&v->arch.vgic.inflight_irqs); in vcpu_vgic_init()
215 INIT_LIST_HEAD(&v->arch.vgic.lr_pending); in vcpu_vgic_init()
216 spin_lock_init(&v->arch.vgic.lock); in vcpu_vgic_init()
223 xfree(v->arch.vgic.private_irqs); in vcpu_vgic_free()
240 return v->domain->arch.vgic.handler->lpi_get_priority(v->domain, virq); in vgic_get_virq_priority()
254 spin_lock_irqsave(&old->arch.vgic.lock, flags); in vgic_migrate_irq()
261 spin_unlock_irqrestore(&old->arch.vgic.lock, flags); in vgic_migrate_irq()
269 spin_unlock_irqrestore(&old->arch.vgic.lock, flags); in vgic_migrate_irq()
278 spin_unlock_irqrestore(&old->arch.vgic.lock, flags); in vgic_migrate_irq()
286 spin_unlock_irqrestore(&old->arch.vgic.lock, flags); in vgic_migrate_irq()
295 spin_unlock_irqrestore(&old->arch.vgic.lock, flags); in vgic_migrate_irq()
345 spin_lock_irqsave(&v_target->arch.vgic.lock, flags); in vgic_disable_irqs()
350 spin_unlock_irqrestore(&v_target->arch.vgic.lock, flags); in vgic_disable_irqs()
394 spin_lock_irqsave(&v_target->arch.vgic.lock, flags); in vgic_enable_irqs()
399 spin_unlock_irqrestore(&v_target->arch.vgic.lock, flags); in vgic_enable_irqs()
484 n = &v->arch.vgic.pending_irqs[irq]; in irq_to_pending()
486 n = v->domain->arch.vgic.handler->lpi_to_pending(v->domain, irq); in irq_to_pending()
488 n = &v->domain->arch.vgic.pending_irqs[irq - 32]; in irq_to_pending()
496 return &d->arch.vgic.pending_irqs[irq - 32]; in spi_to_pending()
504 spin_lock_irqsave(&v->arch.vgic.lock, flags); in vgic_clear_pending_irqs()
505 list_for_each_entry_safe ( p, t, &v->arch.vgic.inflight_irqs, inflight ) in vgic_clear_pending_irqs()
508 spin_unlock_irqrestore(&v->arch.vgic.lock, flags); in vgic_clear_pending_irqs()
518 spin_lock_irqsave(&v->arch.vgic.lock, flags); in vgic_vcpu_inject_irq()
524 spin_unlock_irqrestore(&v->arch.vgic.lock, flags); in vgic_vcpu_inject_irq()
531 spin_unlock_irqrestore(&v->arch.vgic.lock, flags); in vgic_vcpu_inject_irq()
550 list_for_each_entry ( iter, &v->arch.vgic.inflight_irqs, inflight ) in vgic_vcpu_inject_irq()
558 list_add_tail(&n->inflight, &v->arch.vgic.inflight_irqs); in vgic_vcpu_inject_irq()
560 spin_unlock_irqrestore(&v->arch.vgic.lock, flags); in vgic_vcpu_inject_irq()
591 ASSERT(v->domain->arch.vgic.handler->emulate_reg != NULL); in vgic_emulate()
593 return v->domain->arch.vgic.handler->emulate_reg(regs, hsr); in vgic_emulate()
601 return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); in vgic_reserve_virq()
627 virq = find_next_zero_bit(d->arch.vgic.allocated_irqs, end, first); in vgic_allocate_virq()
631 while ( test_and_set_bit(virq, d->arch.vgic.allocated_irqs) ); in vgic_allocate_virq()
638 clear_bit(virq, d->arch.vgic.allocated_irqs); in vgic_free_virq()