Lines Matching refs:irte
56 struct irte irte_entry;
160 struct irte *irte_modified)
164 struct irte *irte;
175 irte = &iommu->ir_table->base[index];
177 if ((irte->pst == 1) || (irte_modified->pst == 1)) {
184 u128 old = irte->irte;
185 WARN_ON(!try_cmpxchg128(&irte->irte, &old, irte_modified->irte));
187 WRITE_ONCE(irte->low, irte_modified->low);
188 WRITE_ONCE(irte->high, irte_modified->high);
190 __iommu_flush_cache(iommu, irte, sizeof(*irte));
195 irq_iommu->mode = irte->pst ? IRQ_POSTING : IRQ_REMAPPING;
232 struct irte *start, *entry, *end;
277 * set SVT, SQ and SID fields of irte to verify
280 static void set_irte_sid(struct irte *irte, unsigned int svt,
285 irte->svt = svt;
286 irte->sq = sq;
287 irte->sid = sid;
295 static void set_irte_verify_bus(struct irte *irte, unsigned int start_bus,
298 set_irte_sid(irte, SVT_VERIFY_BUS, SQ_ALL_16,
302 static int set_ioapic_sid(struct irte *irte, int apic)
307 if (!irte)
322 set_irte_sid(irte, SVT_VERIFY_SID_SQ, SQ_ALL_16, sid);
327 static int set_hpet_sid(struct irte *irte, u8 id)
332 if (!irte)
352 set_irte_sid(irte, SVT_VERIFY_SID_SQ, SQ_13_IGNORE_3, sid);
378 static int set_msi_sid(struct irte *irte, struct pci_dev *dev)
382 if (!irte || !dev)
408 set_irte_verify_bus(irte, PCI_BUS_NUM(data.alias),
411 set_irte_verify_bus(irte, dev->bus->number, dev->bus->number);
413 set_irte_sid(irte, SVT_VERIFY_SID_SQ, SQ_ALL_16, data.alias);
415 set_irte_sid(irte, SVT_VERIFY_SID_SQ, SQ_ALL_16,
423 struct irte *old_ir_table;
436 size = INTR_REMAP_TABLE_ENTRIES*sizeof(struct irte);
1101 static void prepare_irte(struct irte *irte, int vector, unsigned int dest)
1103 memset(irte, 0, sizeof(*irte));
1105 irte->present = 1;
1106 irte->dst_mode = apic->dest_mode_logical;
1114 irte->trigger_mode = 0;
1115 irte->dlvry_mode = apic->delivery_mode;
1116 irte->vector = vector;
1117 irte->dest_id = IRTE_DEST(dest);
1118 irte->redir_hint = 1;
1132 struct irte *irte = &ir_data->irte_entry;
1139 irte->vector = cfg->vector;
1140 irte->dest_id = IRTE_DEST(cfg->dest_apicid);
1144 modify_irte(&ir_data->irq_2_iommu, irte);
1201 struct irte irte_pi;
1256 struct irte *irte = &data->irte_entry;
1258 prepare_irte(irte, irq_cfg->vector, irq_cfg->dest_apicid);
1263 set_ioapic_sid(irte, info->devid);
1265 info->devid, irte->present, irte->fpd,
1266 irte->dst_mode, irte->redir_hint,
1267 irte->trigger_mode, irte->dlvry_mode,
1268 irte->avail, irte->vector, irte->dest_id,
1269 irte->sid, irte->sq, irte->svt);
1273 set_hpet_sid(irte, info->devid);
1277 set_msi_sid(irte,
1395 struct irte entry;