Lines Matching refs:collection

144 	struct its_collection *collection;
158 * @cte_esz: collection table entry size
256 * Finds and returns a collection in the ITS collection table.
261 struct its_collection *collection;
263 list_for_each_entry(collection, &its->collection_list, coll_list) {
264 if (coll_id == collection->collection_id)
265 return collection;
384 * Needs to be called whenever either the collection for a LPIs has
385 * changed or the collection itself got retargeted.
391 if (!its_is_collection_mapped(ite->collection))
394 vcpu = kvm_get_vcpu(kvm, ite->collection->target_addr);
399 * Updates the target VCPU for every LPI targeting this collection.
409 if (ite->collection != coll)
686 if (!ite || !its_is_collection_mapped(ite->collection))
689 vcpu = kvm_get_vcpu(kvm, ite->collection->target_addr);
857 if (ite && its_is_collection_mapped(ite->collection)) {
873 * The MOVI command moves an ITTE to a different collection.
884 struct its_collection *collection;
890 if (!its_is_collection_mapped(ite->collection))
893 collection = find_collection(its, coll_id);
894 if (!its_is_collection_mapped(collection))
897 ite->collection = collection;
898 vcpu = kvm_get_vcpu(kvm, collection->target_addr);
939 /* as GITS_TYPER.CIL == 0, ITS supports 16-bit collection ID */
1011 * Add a new collection into the ITS collection table.
1018 struct its_collection *collection;
1020 collection = kzalloc(sizeof(*collection), GFP_KERNEL_ACCOUNT);
1021 if (!collection)
1024 collection->collection_id = coll_id;
1025 collection->target_addr = COLLECTION_NOT_MAPPED;
1027 list_add_tail(&collection->coll_list, &its->collection_list);
1028 *colp = collection;
1035 struct its_collection *collection;
1040 * Clearing the mapping for that collection ID removes the
1044 collection = find_collection(its, coll_id);
1045 if (!collection)
1049 if (ite->collection &&
1050 ite->collection->collection_id == coll_id)
1051 ite->collection = NULL;
1053 list_del(&collection->coll_list);
1054 kfree(collection);
1059 struct its_collection *collection,
1069 ite->collection = collection;
1088 struct its_collection *collection, *new_coll = NULL;
1111 collection = find_collection(its, coll_id);
1112 if (!collection) {
1118 ret = vgic_its_alloc_collection(its, &collection, coll_id);
1121 new_coll = collection;
1124 ite = vgic_its_alloc_ite(device, collection, event_id);
1131 if (its_is_collection_mapped(collection))
1132 vcpu = kvm_get_vcpu(kvm, collection->target_addr);
1246 * The MAPC command maps collection IDs to redistributors.
1254 struct its_collection *collection;
1268 collection = find_collection(its, coll_id);
1270 if (!collection) {
1277 ret = vgic_its_alloc_collection(its, &collection,
1281 collection->target_addr = target_addr;
1283 collection->target_addr = target_addr;
1284 update_affinity_collection(kvm, its, collection);
1345 * collection, and we don't need to hold the its_lock, since no ITS is
1375 * The INVALL command requests flushing of all IRQ data in this collection.
1376 * Find the VCPU mapped to that collection, then iterate over the VM's list
1386 struct its_collection *collection;
1389 collection = find_collection(its, coll_id);
1390 if (!its_is_collection_mapped(collection))
1393 vcpu = kvm_get_vcpu(kvm, collection->target_addr);
1784 * device/collection BASER are invalid
2217 ite->collection->collection_id;
2232 struct its_collection *collection;
2259 collection = find_collection(its, coll_id);
2260 if (!collection)
2266 ite = vgic_its_alloc_ite(dev, collection, event_id);
2270 if (its_is_collection_mapped(collection))
2271 vcpu = kvm_get_vcpu(kvm, collection->target_addr);
2549 struct its_collection *collection,
2555 ((u64)collection->target_addr << KVM_ITS_CTE_RDBASE_SHIFT) |
2556 collection->collection_id);
2562 * Restore a collection entry into the ITS collection table.
2568 struct its_collection *collection;
2589 collection = find_collection(its, coll_id);
2590 if (collection)
2596 ret = vgic_its_alloc_collection(its, &collection, coll_id);
2599 collection->target_addr = target_addr;
2604 * vgic_its_save_collection_table - Save the collection table into
2612 struct its_collection *collection;
2622 list_for_each_entry(collection, &its->collection_list, coll_list) {
2623 ret = vgic_its_save_cte(its, collection, gpa, cte_esz);
2644 * vgic_its_restore_collection_table - reads the collection table