Lines Matching refs:devid

167 			return p->devid;  in get_acpihid_device_id()
175 int devid; in get_device_id() local
178 devid = get_pci_device_id(dev); in get_device_id()
180 devid = get_acpihid_device_id(dev, NULL); in get_device_id()
182 return devid; in get_device_id()
196 static struct iommu_dev_data *alloc_dev_data(u16 devid) in alloc_dev_data() argument
205 dev_data->devid = devid; in alloc_dev_data()
212 static struct iommu_dev_data *search_dev_data(u16 devid) in search_dev_data() argument
222 if (dev_data->devid == devid) in search_dev_data()
238 u16 devid, ivrs_alias, pci_alias; in get_alias() local
241 devid = get_device_id(dev); in get_alias()
245 return devid; in get_alias()
247 ivrs_alias = amd_iommu_alias_table[devid]; in get_alias()
263 if (ivrs_alias == devid) { in get_alias()
266 amd_iommu_rlookup_table[devid]; in get_alias()
268 amd_iommu_dev_table[devid].data, in get_alias()
286 if (pci_alias == devid && in get_alias()
296 static struct iommu_dev_data *find_dev_data(u16 devid) in find_dev_data() argument
299 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in find_dev_data()
301 dev_data = search_dev_data(devid); in find_dev_data()
304 dev_data = alloc_dev_data(devid); in find_dev_data()
327 int devid; in acpihid_device_group() local
329 devid = get_acpihid_device_id(dev, &entry); in acpihid_device_group()
330 if (devid < 0) in acpihid_device_group()
331 return ERR_PTR(devid); in acpihid_device_group()
334 if ((devid == p->devid) && p->group) in acpihid_device_group()
382 int devid; in check_device() local
387 devid = get_device_id(dev); in check_device()
388 if (devid < 0) in check_device()
392 if (devid > amd_iommu_last_bdf) in check_device()
395 if (amd_iommu_rlookup_table[devid] == NULL) in check_device()
416 int devid; in iommu_init_device() local
421 devid = get_device_id(dev); in iommu_init_device()
422 if (devid < 0) in iommu_init_device()
423 return devid; in iommu_init_device()
425 iommu = amd_iommu_rlookup_table[devid]; in iommu_init_device()
427 dev_data = find_dev_data(devid); in iommu_init_device()
443 iommu = amd_iommu_rlookup_table[dev_data->devid]; in iommu_init_device()
457 int devid; in iommu_ignore_device() local
459 devid = get_device_id(dev); in iommu_ignore_device()
460 if (devid < 0) in iommu_ignore_device()
465 memset(&amd_iommu_dev_table[devid], 0, sizeof(struct dev_table_entry)); in iommu_ignore_device()
468 amd_iommu_rlookup_table[devid] = NULL; in iommu_ignore_device()
476 int devid; in iommu_uninit_device() local
478 devid = get_device_id(dev); in iommu_uninit_device()
479 if (devid < 0) in iommu_uninit_device()
482 iommu = amd_iommu_rlookup_table[devid]; in iommu_uninit_device()
484 dev_data = search_dev_data(devid); in iommu_uninit_device()
533 static void dump_dte_entry(u16 devid) in dump_dte_entry() argument
539 amd_iommu_dev_table[devid].data[i]); in dump_dte_entry()
551 static void amd_iommu_report_page_fault(u16 devid, u16 domain_id, in amd_iommu_report_page_fault() argument
557 pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid), in amd_iommu_report_page_fault()
558 devid & 0xff); in amd_iommu_report_page_fault()
567 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in amd_iommu_report_page_fault()
578 int type, devid, pasid, flags, tag; in iommu_print_event() local
585 devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK; in iommu_print_event()
602 amd_iommu_report_page_fault(devid, pasid, address, flags); in iommu_print_event()
609 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
611 dump_dte_entry(devid); in iommu_print_event()
616 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
621 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
634 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
639 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
647 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
905 static void build_inv_dte(struct iommu_cmd *cmd, u16 devid) in build_inv_dte() argument
908 cmd->data[0] = devid; in build_inv_dte()
943 static void build_inv_iotlb_pages(struct iommu_cmd *cmd, u16 devid, int qdep, in build_inv_iotlb_pages() argument
964 cmd->data[0] = devid; in build_inv_iotlb_pages()
966 cmd->data[1] = devid; in build_inv_iotlb_pages()
992 static void build_inv_iotlb_pasid(struct iommu_cmd *cmd, u16 devid, int pasid, in build_inv_iotlb_pasid() argument
999 cmd->data[0] = devid; in build_inv_iotlb_pasid()
1002 cmd->data[1] = devid; in build_inv_iotlb_pasid()
1012 static void build_complete_ppr(struct iommu_cmd *cmd, u16 devid, int pasid, in build_complete_ppr() argument
1017 cmd->data[0] = devid; in build_complete_ppr()
1034 static void build_inv_irt(struct iommu_cmd *cmd, u16 devid) in build_inv_irt() argument
1037 cmd->data[0] = devid; in build_inv_irt()
1133 static int iommu_flush_dte(struct amd_iommu *iommu, u16 devid) in iommu_flush_dte() argument
1137 build_inv_dte(&cmd, devid); in iommu_flush_dte()
1144 u32 devid; in amd_iommu_flush_dte_all() local
1146 for (devid = 0; devid <= 0xffff; ++devid) in amd_iommu_flush_dte_all()
1147 iommu_flush_dte(iommu, devid); in amd_iommu_flush_dte_all()
1191 static void iommu_flush_irt(struct amd_iommu *iommu, u16 devid) in iommu_flush_irt() argument
1195 build_inv_irt(&cmd, devid); in iommu_flush_irt()
1202 u32 devid; in amd_iommu_flush_irt_all() local
1204 for (devid = 0; devid <= MAX_DEV_TABLE_ENTRIES; devid++) in amd_iommu_flush_irt_all()
1205 iommu_flush_irt(iommu, devid); in amd_iommu_flush_irt_all()
1232 iommu = amd_iommu_rlookup_table[dev_data->devid]; in device_flush_iotlb()
1234 build_inv_iotlb_pages(&cmd, dev_data->devid, qdep, address, size); in device_flush_iotlb()
1248 iommu = amd_iommu_rlookup_table[dev_data->devid]; in device_flush_dte()
1251 ret = iommu_flush_dte(iommu, dev_data->devid); in device_flush_dte()
1252 if (!ret && alias != dev_data->devid) in device_flush_dte()
1954 static void set_dte_entry(u16 devid, struct protection_domain *domain, in set_dte_entry() argument
1968 flags = amd_iommu_dev_table[devid].data[1]; in set_dte_entry()
1974 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in set_dte_entry()
2009 old_domid = amd_iommu_dev_table[devid].data[1] & DEV_DOMID_MASK; in set_dte_entry()
2010 amd_iommu_dev_table[devid].data[1] = flags; in set_dte_entry()
2011 amd_iommu_dev_table[devid].data[0] = pte_root; in set_dte_entry()
2019 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in set_dte_entry()
2025 static void clear_dte_entry(u16 devid) in clear_dte_entry() argument
2028 amd_iommu_dev_table[devid].data[0] = DTE_FLAG_V | DTE_FLAG_TV; in clear_dte_entry()
2029 amd_iommu_dev_table[devid].data[1] &= DTE_FLAG_MASK; in clear_dte_entry()
2031 amd_iommu_apply_erratum_63(devid); in clear_dte_entry()
2041 iommu = amd_iommu_rlookup_table[dev_data->devid]; in do_attach()
2054 set_dte_entry(dev_data->devid, domain, ats, dev_data->iommu_v2); in do_attach()
2055 if (alias != dev_data->devid) in do_attach()
2067 iommu = amd_iommu_rlookup_table[dev_data->devid]; in do_detach()
2073 clear_dte_entry(dev_data->devid); in do_detach()
2074 if (alias != dev_data->devid) in do_detach()
2275 int ret, devid; in amd_iommu_add_device() local
2280 devid = get_device_id(dev); in amd_iommu_add_device()
2281 if (devid < 0) in amd_iommu_add_device()
2282 return devid; in amd_iommu_add_device()
2284 iommu = amd_iommu_rlookup_table[devid]; in amd_iommu_add_device()
2320 int devid; in amd_iommu_remove_device() local
2325 devid = get_device_id(dev); in amd_iommu_remove_device()
2326 if (devid < 0) in amd_iommu_remove_device()
2329 iommu = amd_iommu_rlookup_table[devid]; in amd_iommu_remove_device()
2385 set_dte_entry(dev_data->devid, domain, dev_data->ats.enabled, in update_device_table()
2388 if (dev_data->devid == dev_data->alias) in update_device_table()
3050 int devid; in amd_iommu_detach_device() local
3055 devid = get_device_id(dev); in amd_iommu_detach_device()
3056 if (devid < 0) in amd_iommu_detach_device()
3062 iommu = amd_iommu_rlookup_table[devid]; in amd_iommu_detach_device()
3088 iommu = amd_iommu_rlookup_table[dev_data->devid]; in amd_iommu_attach_device()
3194 int devid; in amd_iommu_get_resv_regions() local
3196 devid = get_device_id(dev); in amd_iommu_get_resv_regions()
3197 if (devid < 0) in amd_iommu_get_resv_regions()
3204 if (devid < entry->devid_start || devid > entry->devid_end) in amd_iommu_get_resv_regions()
3438 iommu = amd_iommu_rlookup_table[dev_data->devid]; in __flush_pasid()
3440 build_inv_iotlb_pasid(&cmd, dev_data->devid, pasid, in __flush_pasid()
3601 iommu = amd_iommu_rlookup_table[dev_data->devid]; in amd_iommu_complete_ppr()
3603 build_complete_ppr(&cmd, dev_data->devid, pasid, status, in amd_iommu_complete_ppr()
3694 static void set_dte_irq_entry(u16 devid, struct irq_remap_table *table) in set_dte_irq_entry() argument
3698 dte = amd_iommu_dev_table[devid].data[2]; in set_dte_irq_entry()
3705 amd_iommu_dev_table[devid].data[2] = dte; in set_dte_irq_entry()
3708 static struct irq_remap_table *get_irq_table(u16 devid) in get_irq_table() argument
3712 if (WARN_ONCE(!amd_iommu_rlookup_table[devid], in get_irq_table()
3713 "%s: no iommu for devid %x\n", __func__, devid)) in get_irq_table()
3716 table = irq_lookup_table[devid]; in get_irq_table()
3717 if (WARN_ONCE(!table, "%s: no table for devid %x\n", __func__, devid)) in get_irq_table()
3747 static void set_remap_table_entry(struct amd_iommu *iommu, u16 devid, in set_remap_table_entry() argument
3750 irq_lookup_table[devid] = table; in set_remap_table_entry()
3751 set_dte_irq_entry(devid, table); in set_remap_table_entry()
3752 iommu_flush_dte(iommu, devid); in set_remap_table_entry()
3755 static struct irq_remap_table *alloc_irq_table(u16 devid) in alloc_irq_table() argument
3765 iommu = amd_iommu_rlookup_table[devid]; in alloc_irq_table()
3769 table = irq_lookup_table[devid]; in alloc_irq_table()
3773 alias = amd_iommu_alias_table[devid]; in alloc_irq_table()
3776 set_remap_table_entry(iommu, devid, table); in alloc_irq_table()
3788 table = irq_lookup_table[devid]; in alloc_irq_table()
3794 set_remap_table_entry(iommu, devid, table); in alloc_irq_table()
3801 set_remap_table_entry(iommu, devid, table); in alloc_irq_table()
3802 if (devid != alias) in alloc_irq_table()
3818 static int alloc_irq_index(u16 devid, int count, bool align) in alloc_irq_index() argument
3823 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in alloc_irq_index()
3828 table = alloc_irq_table(devid); in alloc_irq_index()
3867 static int modify_irte_ga(u16 devid, int index, struct irte_ga *irte, in modify_irte_ga() argument
3875 iommu = amd_iommu_rlookup_table[devid]; in modify_irte_ga()
3879 table = get_irq_table(devid); in modify_irte_ga()
3896 iommu_flush_irt(iommu, devid); in modify_irte_ga()
3902 static int modify_irte(u16 devid, int index, union irte *irte) in modify_irte() argument
3908 iommu = amd_iommu_rlookup_table[devid]; in modify_irte()
3912 table = get_irq_table(devid); in modify_irte()
3920 iommu_flush_irt(iommu, devid); in modify_irte()
3926 static void free_irte(u16 devid, int index) in free_irte() argument
3932 iommu = amd_iommu_rlookup_table[devid]; in free_irte()
3936 table = get_irq_table(devid); in free_irte()
3944 iommu_flush_irt(iommu, devid); in free_irte()
3950 u8 vector, u32 dest_apicid, int devid) in irte_prepare() argument
3964 u8 vector, u32 dest_apicid, int devid) in irte_ga_prepare() argument
3978 static void irte_activate(void *entry, u16 devid, u16 index) in irte_activate() argument
3983 modify_irte(devid, index, irte); in irte_activate()
3986 static void irte_ga_activate(void *entry, u16 devid, u16 index) in irte_ga_activate() argument
3991 modify_irte_ga(devid, index, irte, NULL); in irte_ga_activate()
3994 static void irte_deactivate(void *entry, u16 devid, u16 index) in irte_deactivate() argument
3999 modify_irte(devid, index, irte); in irte_deactivate()
4002 static void irte_ga_deactivate(void *entry, u16 devid, u16 index) in irte_ga_deactivate() argument
4007 modify_irte_ga(devid, index, irte, NULL); in irte_ga_deactivate()
4010 static void irte_set_affinity(void *entry, u16 devid, u16 index, in irte_set_affinity() argument
4017 modify_irte(devid, index, irte); in irte_set_affinity()
4020 static void irte_ga_set_affinity(void *entry, u16 devid, u16 index, in irte_ga_set_affinity() argument
4031 modify_irte_ga(devid, index, irte, NULL); in irte_ga_set_affinity()
4083 int devid = -1; in get_devid() local
4087 devid = get_ioapic_devid(info->ioapic_id); in get_devid()
4090 devid = get_hpet_devid(info->hpet_id); in get_devid()
4094 devid = get_device_id(&info->msi_dev->dev); in get_devid()
4101 return devid; in get_devid()
4107 int devid; in get_ir_irq_domain() local
4112 devid = get_devid(info); in get_ir_irq_domain()
4113 if (devid >= 0) { in get_ir_irq_domain()
4114 iommu = amd_iommu_rlookup_table[devid]; in get_ir_irq_domain()
4125 int devid; in get_irq_domain() local
4133 devid = get_device_id(&info->msi_dev->dev); in get_irq_domain()
4134 if (devid < 0) in get_irq_domain()
4137 iommu = amd_iommu_rlookup_table[devid]; in get_irq_domain()
4161 int devid, int index, int sub_handle) in irq_remapping_prepare_irte() argument
4166 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in irq_remapping_prepare_irte()
4171 data->irq_2_irte.devid = devid; in irq_remapping_prepare_irte()
4175 irq_cfg->dest_apicid, devid); in irq_remapping_prepare_irte()
4233 int i, ret, devid; in irq_remapping_alloc() local
4249 devid = get_devid(info); in irq_remapping_alloc()
4250 if (devid < 0) in irq_remapping_alloc()
4261 table = alloc_irq_table(devid); in irq_remapping_alloc()
4269 iommu = amd_iommu_rlookup_table[devid]; in irq_remapping_alloc()
4281 index = alloc_irq_index(devid, nr_irqs, align); in irq_remapping_alloc()
4312 irq_data->hwirq = (devid << 16) + i; in irq_remapping_alloc()
4315 irq_remapping_prepare_irte(data, cfg, info, devid, index, i); in irq_remapping_alloc()
4328 free_irte(devid, index + i); in irq_remapping_alloc()
4347 free_irte(irte_info->devid, irte_info->index); in irq_remapping_free()
4365 struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid]; in irq_remapping_activate()
4371 iommu->irte_ops->activate(data->entry, irte_info->devid, in irq_remapping_activate()
4382 struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid]; in irq_remapping_deactivate()
4385 iommu->irte_ops->deactivate(data->entry, irte_info->devid, in irq_remapping_deactivate()
4414 return modify_irte_ga(ir_data->irq_2_irte.devid, in amd_iommu_activate_guest_mode()
4440 return modify_irte_ga(ir_data->irq_2_irte.devid, in amd_iommu_deactivate_guest_mode()
4453 struct iommu_dev_data *dev_data = search_dev_data(irte_info->devid); in amd_ir_set_vcpu_affinity()
4475 iommu = amd_iommu_rlookup_table[irte_info->devid]; in amd_ir_set_vcpu_affinity()
4512 iommu->irte_ops->set_affinity(ir_data->entry, irte_info->devid, in amd_ir_update_irte()
4524 struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid]; in amd_ir_set_affinity()
4585 int devid = ir_data->irq_2_irte.devid; in amd_iommu_update_ga() local
4593 iommu = amd_iommu_rlookup_table[devid]; in amd_iommu_update_ga()
4597 table = get_irq_table(devid); in amd_iommu_update_ga()
4616 iommu_flush_irt(iommu, devid); in amd_iommu_update_ga()