Lines Matching refs:iter

47 static void iter_next(struct vgic_state_iter *iter)  in iter_next()  argument
49 if (iter->dist_id == 0) { in iter_next()
50 iter->dist_id++; in iter_next()
54 iter->intid++; in iter_next()
55 if (iter->intid == VGIC_NR_PRIVATE_IRQS && in iter_next()
56 ++iter->vcpu_id < iter->nr_cpus) in iter_next()
57 iter->intid = 0; in iter_next()
59 if (iter->intid >= (iter->nr_spis + VGIC_NR_PRIVATE_IRQS)) { in iter_next()
60 if (iter->lpi_idx < iter->nr_lpis) in iter_next()
61 iter->intid = iter->lpi_array[iter->lpi_idx]; in iter_next()
62 iter->lpi_idx++; in iter_next()
66 static void iter_init(struct kvm *kvm, struct vgic_state_iter *iter, in iter_init() argument
71 memset(iter, 0, sizeof(*iter)); in iter_init()
73 iter->nr_cpus = nr_cpus; in iter_init()
74 iter->nr_spis = kvm->arch.vgic.nr_spis; in iter_init()
76 iter->nr_lpis = vgic_copy_lpi_list(kvm, NULL, &iter->lpi_array); in iter_init()
77 if (iter->nr_lpis < 0) in iter_init()
78 iter->nr_lpis = 0; in iter_init()
83 iter_next(iter); in iter_init()
86 static bool end_of_vgic(struct vgic_state_iter *iter) in end_of_vgic() argument
88 return iter->dist_id > 0 && in end_of_vgic()
89 iter->vcpu_id == iter->nr_cpus && in end_of_vgic()
90 iter->intid >= (iter->nr_spis + VGIC_NR_PRIVATE_IRQS) && in end_of_vgic()
91 iter->lpi_idx > iter->nr_lpis; in end_of_vgic()
97 struct vgic_state_iter *iter; in vgic_debug_start() local
100 iter = kvm->arch.vgic.iter; in vgic_debug_start()
101 if (iter) { in vgic_debug_start()
102 iter = ERR_PTR(-EBUSY); in vgic_debug_start()
106 iter = kmalloc(sizeof(*iter), GFP_KERNEL); in vgic_debug_start()
107 if (!iter) { in vgic_debug_start()
108 iter = ERR_PTR(-ENOMEM); in vgic_debug_start()
112 iter_init(kvm, iter, *pos); in vgic_debug_start()
113 kvm->arch.vgic.iter = iter; in vgic_debug_start()
115 if (end_of_vgic(iter)) in vgic_debug_start()
116 iter = NULL; in vgic_debug_start()
119 return iter; in vgic_debug_start()
125 struct vgic_state_iter *iter = kvm->arch.vgic.iter; in vgic_debug_next() local
128 iter_next(iter); in vgic_debug_next()
129 if (end_of_vgic(iter)) in vgic_debug_next()
130 iter = NULL; in vgic_debug_next()
131 return iter; in vgic_debug_next()
137 struct vgic_state_iter *iter; in vgic_debug_stop() local
147 iter = kvm->arch.vgic.iter; in vgic_debug_stop()
148 kfree(iter->lpi_array); in vgic_debug_stop()
149 kfree(iter); in vgic_debug_stop()
150 kvm->arch.vgic.iter = NULL; in vgic_debug_stop()
232 struct vgic_state_iter *iter = (struct vgic_state_iter *)v; in vgic_debug_show() local
237 if (iter->dist_id == 0) { in vgic_debug_show()
245 if (iter->vcpu_id < iter->nr_cpus) in vgic_debug_show()
246 vcpu = kvm_get_vcpu(kvm, iter->vcpu_id); in vgic_debug_show()
248 irq = vgic_get_irq(kvm, vcpu, iter->intid); in vgic_debug_show()
250 seq_printf(s, " LPI %4d freed\n", iter->intid); in vgic_debug_show()