Lines Matching full:ite

261 	struct its_ite *ite;  in find_ite()  local
267 list_for_each_entry(ite, &device->itt_head, ite_list) in find_ite()
268 if (ite->event_id == event_id) in find_ite()
269 return ite; in find_ite()
275 #define for_each_lpi_its(dev, ite, its) \ argument
277 list_for_each_entry(ite, &(dev)->itt_head, ite_list)
386 static void update_affinity_ite(struct kvm *kvm, struct its_ite *ite) in update_affinity_ite() argument
390 if (!its_is_collection_mapped(ite->collection)) in update_affinity_ite()
393 vcpu = collection_to_vcpu(kvm, ite->collection); in update_affinity_ite()
394 update_affinity(ite->irq, vcpu); in update_affinity_ite()
405 struct its_ite *ite; in update_affinity_collection() local
407 for_each_lpi_its(device, ite, its) { in update_affinity_collection()
408 if (ite->collection != coll) in update_affinity_collection()
411 update_affinity_ite(kvm, ite); in update_affinity_collection()
606 * its_lock, as the ITE (and the reference it holds) cannot be freed. in vgic_its_cache_translation()
665 struct its_ite *ite; in vgic_its_resolve_lpi() local
670 ite = find_ite(its, devid, eventid); in vgic_its_resolve_lpi()
671 if (!ite || !its_is_collection_mapped(ite->collection)) in vgic_its_resolve_lpi()
674 vcpu = collection_to_vcpu(kvm, ite->collection); in vgic_its_resolve_lpi()
681 vgic_its_cache_translation(kvm, its, devid, eventid, ite->irq); in vgic_its_resolve_lpi()
683 *irq = ite->irq; in vgic_its_resolve_lpi()
787 static void its_free_ite(struct kvm *kvm, struct its_ite *ite) in its_free_ite() argument
789 list_del(&ite->ite_list); in its_free_ite()
792 if (ite->irq) { in its_free_ite()
793 if (ite->irq->hw) in its_free_ite()
794 WARN_ON(its_unmap_vlpi(ite->irq->host_irq)); in its_free_ite()
796 vgic_put_irq(kvm, ite->irq); in its_free_ite()
799 kfree(ite); in its_free_ite()
826 struct its_ite *ite; in vgic_its_cmd_handle_discard() local
828 ite = find_ite(its, device_id, event_id); in vgic_its_cmd_handle_discard()
829 if (ite && its_is_collection_mapped(ite->collection)) { in vgic_its_cmd_handle_discard()
832 gpa_t gpa = device->itt_addr + ite->event_id * ite_esz; in vgic_its_cmd_handle_discard()
840 its_free_ite(kvm, ite); in vgic_its_cmd_handle_discard()
842 return vgic_its_write_entry_lock(its, gpa, 0ULL, ite); in vgic_its_cmd_handle_discard()
859 struct its_ite *ite; in vgic_its_cmd_handle_movi() local
862 ite = find_ite(its, device_id, event_id); in vgic_its_cmd_handle_movi()
863 if (!ite) in vgic_its_cmd_handle_movi()
866 if (!its_is_collection_mapped(ite->collection)) in vgic_its_cmd_handle_movi()
873 ite->collection = collection; in vgic_its_cmd_handle_movi()
878 return update_affinity(ite->irq, vcpu); in vgic_its_cmd_handle_movi()
1013 struct its_ite *ite; in vgic_its_free_collection() local
1024 for_each_lpi_its(device, ite, its) in vgic_its_free_collection()
1025 if (ite->collection && in vgic_its_free_collection()
1026 ite->collection->collection_id == coll_id) in vgic_its_free_collection()
1027 ite->collection = NULL; in vgic_its_free_collection()
1038 struct its_ite *ite; in vgic_its_alloc_ite() local
1040 ite = kzalloc(sizeof(*ite), GFP_KERNEL_ACCOUNT); in vgic_its_alloc_ite()
1041 if (!ite) in vgic_its_alloc_ite()
1044 ite->event_id = event_id; in vgic_its_alloc_ite()
1045 ite->collection = collection; in vgic_its_alloc_ite()
1047 list_add_tail(&ite->ite_list, &device->itt_head); in vgic_its_alloc_ite()
1048 return ite; in vgic_its_alloc_ite()
1061 struct its_ite *ite; in vgic_its_cmd_handle_mapi() local
1100 ite = vgic_its_alloc_ite(device, collection, event_id); in vgic_its_cmd_handle_mapi()
1101 if (IS_ERR(ite)) { in vgic_its_cmd_handle_mapi()
1104 return PTR_ERR(ite); in vgic_its_cmd_handle_mapi()
1114 its_free_ite(kvm, ite); in vgic_its_cmd_handle_mapi()
1117 ite->irq = irq; in vgic_its_cmd_handle_mapi()
1126 struct its_ite *ite, *temp; in vgic_its_free_device() local
1133 list_for_each_entry_safe(ite, temp, &device->itt_head, ite_list) in vgic_its_free_device()
1134 its_free_ite(kvm, ite); in vgic_its_free_device()
1279 struct its_ite *ite; in vgic_its_cmd_handle_clear() local
1282 ite = find_ite(its, device_id, event_id); in vgic_its_cmd_handle_clear()
1283 if (!ite) in vgic_its_cmd_handle_clear()
1286 ite->irq->pending_latch = false; in vgic_its_cmd_handle_clear()
1288 if (ite->irq->hw) in vgic_its_cmd_handle_clear()
1289 return irq_set_irqchip_state(ite->irq->host_irq, in vgic_its_cmd_handle_clear()
1309 struct its_ite *ite; in vgic_its_cmd_handle_inv() local
1312 ite = find_ite(its, device_id, event_id); in vgic_its_cmd_handle_inv()
1313 if (!ite) in vgic_its_cmd_handle_inv()
1316 return vgic_its_inv_lpi(kvm, ite->irq); in vgic_its_cmd_handle_inv()
2056 static u32 compute_next_eventid_offset(struct list_head *h, struct its_ite *ite) in compute_next_eventid_offset() argument
2061 if (list_is_last(&ite->ite_list, h)) in compute_next_eventid_offset()
2063 next = list_next_entry(ite, ite_list); in compute_next_eventid_offset()
2064 next_offset = next->event_id - ite->event_id; in compute_next_eventid_offset()
2137 struct its_ite *ite, gpa_t gpa) in vgic_its_save_ite() argument
2142 next_offset = compute_next_eventid_offset(&dev->itt_head, ite); in vgic_its_save_ite()
2144 ((u64)ite->irq->intid << KVM_ITS_ITE_PINTID_SHIFT) | in vgic_its_save_ite()
2145 ite->collection->collection_id; in vgic_its_save_ite()
2148 return vgic_its_write_entry_lock(its, gpa, val, ite); in vgic_its_save_ite()
2156 * @ptr: pointer to the ITE entry
2170 struct its_ite *ite; in vgic_its_restore_ite() local
2197 ite = vgic_its_alloc_ite(dev, collection, event_id); in vgic_its_restore_ite()
2198 if (IS_ERR(ite)) in vgic_its_restore_ite()
2199 return PTR_ERR(ite); in vgic_its_restore_ite()
2206 its_free_ite(kvm, ite); in vgic_its_restore_ite()
2209 ite->irq = irq; in vgic_its_restore_ite()
2230 struct its_ite *ite; in vgic_its_save_itt() local
2236 list_for_each_entry(ite, &device->itt_head, ite_list) { in vgic_its_save_itt()
2237 gpa_t gpa = base + ite->event_id * ite_esz; in vgic_its_save_itt()
2245 if (ite->irq->hw && !kvm_vgic_global_state.has_gicv4_1) in vgic_its_save_itt()
2248 ret = vgic_its_save_ite(its, device, ite, gpa); in vgic_its_save_itt()