Lines Matching refs:devid
175 return p->devid; in get_acpihid_device_id()
183 int devid; in get_device_id() local
186 devid = get_pci_device_id(dev); in get_device_id()
188 devid = get_acpihid_device_id(dev, NULL); in get_device_id()
190 return devid; in get_device_id()
204 static struct iommu_dev_data *alloc_dev_data(u16 devid) in alloc_dev_data() argument
212 dev_data->devid = devid; in alloc_dev_data()
219 static struct iommu_dev_data *search_dev_data(u16 devid) in search_dev_data() argument
229 if (dev_data->devid == devid) in search_dev_data()
245 u16 devid, ivrs_alias, pci_alias; in get_alias() local
248 devid = get_device_id(dev); in get_alias()
252 return devid; in get_alias()
254 ivrs_alias = amd_iommu_alias_table[devid]; in get_alias()
270 if (ivrs_alias == devid) { in get_alias()
273 amd_iommu_rlookup_table[devid]; in get_alias()
275 amd_iommu_dev_table[devid].data, in get_alias()
293 if (pci_alias == devid && in get_alias()
304 static struct iommu_dev_data *find_dev_data(u16 devid) in find_dev_data() argument
307 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in find_dev_data()
309 dev_data = search_dev_data(devid); in find_dev_data()
312 dev_data = alloc_dev_data(devid); in find_dev_data()
335 int devid; in acpihid_device_group() local
337 devid = get_acpihid_device_id(dev, &entry); in acpihid_device_group()
338 if (devid < 0) in acpihid_device_group()
339 return ERR_PTR(devid); in acpihid_device_group()
342 if ((devid == p->devid) && p->group) in acpihid_device_group()
390 int devid; in check_device() local
395 devid = get_device_id(dev); in check_device()
396 if (devid < 0) in check_device()
400 if (devid > amd_iommu_last_bdf) in check_device()
403 if (amd_iommu_rlookup_table[devid] == NULL) in check_device()
424 int devid; in iommu_init_device() local
429 devid = get_device_id(dev); in iommu_init_device()
430 if (devid < 0) in iommu_init_device()
431 return devid; in iommu_init_device()
433 iommu = amd_iommu_rlookup_table[devid]; in iommu_init_device()
435 dev_data = find_dev_data(devid); in iommu_init_device()
444 iommu = amd_iommu_rlookup_table[dev_data->devid]; in iommu_init_device()
458 int devid; in iommu_ignore_device() local
460 devid = get_device_id(dev); in iommu_ignore_device()
461 if (devid < 0) in iommu_ignore_device()
466 memset(&amd_iommu_dev_table[devid], 0, sizeof(struct dev_table_entry)); in iommu_ignore_device()
469 amd_iommu_rlookup_table[devid] = NULL; in iommu_ignore_device()
477 int devid; in iommu_uninit_device() local
479 devid = get_device_id(dev); in iommu_uninit_device()
480 if (devid < 0) in iommu_uninit_device()
483 iommu = amd_iommu_rlookup_table[devid]; in iommu_uninit_device()
485 dev_data = search_dev_data(devid); in iommu_uninit_device()
511 static void dump_dte_entry(u16 devid) in dump_dte_entry() argument
517 amd_iommu_dev_table[devid].data[i]); in dump_dte_entry()
529 static void amd_iommu_report_page_fault(u16 devid, u16 domain_id, in amd_iommu_report_page_fault() argument
535 pdev = pci_get_domain_bus_and_slot(0, PCI_BUS_NUM(devid), in amd_iommu_report_page_fault()
536 devid & 0xff); in amd_iommu_report_page_fault()
545 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in amd_iommu_report_page_fault()
556 int type, devid, pasid, flags, tag; in iommu_print_event() local
563 devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK; in iommu_print_event()
579 amd_iommu_report_page_fault(devid, pasid, address, flags); in iommu_print_event()
588 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
590 dump_dte_entry(devid); in iommu_print_event()
595 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
600 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
613 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
618 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
626 PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), in iommu_print_event()
884 static void build_inv_dte(struct iommu_cmd *cmd, u16 devid) in build_inv_dte() argument
887 cmd->data[0] = devid; in build_inv_dte()
922 static void build_inv_iotlb_pages(struct iommu_cmd *cmd, u16 devid, int qdep, in build_inv_iotlb_pages() argument
943 cmd->data[0] = devid; in build_inv_iotlb_pages()
945 cmd->data[1] = devid; in build_inv_iotlb_pages()
971 static void build_inv_iotlb_pasid(struct iommu_cmd *cmd, u16 devid, int pasid, in build_inv_iotlb_pasid() argument
978 cmd->data[0] = devid; in build_inv_iotlb_pasid()
981 cmd->data[1] = devid; in build_inv_iotlb_pasid()
991 static void build_complete_ppr(struct iommu_cmd *cmd, u16 devid, int pasid, in build_complete_ppr() argument
996 cmd->data[0] = devid; in build_complete_ppr()
1013 static void build_inv_irt(struct iommu_cmd *cmd, u16 devid) in build_inv_irt() argument
1016 cmd->data[0] = devid; in build_inv_irt()
1112 static int iommu_flush_dte(struct amd_iommu *iommu, u16 devid) in iommu_flush_dte() argument
1116 build_inv_dte(&cmd, devid); in iommu_flush_dte()
1123 u32 devid; in amd_iommu_flush_dte_all() local
1125 for (devid = 0; devid <= 0xffff; ++devid) in amd_iommu_flush_dte_all()
1126 iommu_flush_dte(iommu, devid); in amd_iommu_flush_dte_all()
1159 static void iommu_flush_irt(struct amd_iommu *iommu, u16 devid) in iommu_flush_irt() argument
1163 build_inv_irt(&cmd, devid); in iommu_flush_irt()
1170 u32 devid; in amd_iommu_flush_irt_all() local
1172 for (devid = 0; devid <= MAX_DEV_TABLE_ENTRIES; devid++) in amd_iommu_flush_irt_all()
1173 iommu_flush_irt(iommu, devid); in amd_iommu_flush_irt_all()
1200 iommu = amd_iommu_rlookup_table[dev_data->devid]; in device_flush_iotlb()
1202 build_inv_iotlb_pages(&cmd, dev_data->devid, qdep, address, size); in device_flush_iotlb()
1216 iommu = amd_iommu_rlookup_table[dev_data->devid]; in device_flush_dte()
1219 ret = iommu_flush_dte(iommu, dev_data->devid); in device_flush_dte()
1220 if (!ret && alias != dev_data->devid) in device_flush_dte()
1829 static void set_dte_entry(u16 devid, struct protection_domain *domain, in set_dte_entry() argument
1842 flags = amd_iommu_dev_table[devid].data[1]; in set_dte_entry()
1848 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in set_dte_entry()
1883 amd_iommu_dev_table[devid].data[1] = flags; in set_dte_entry()
1884 amd_iommu_dev_table[devid].data[0] = pte_root; in set_dte_entry()
1887 static void clear_dte_entry(u16 devid) in clear_dte_entry() argument
1890 amd_iommu_dev_table[devid].data[0] = DTE_FLAG_V | DTE_FLAG_TV; in clear_dte_entry()
1891 amd_iommu_dev_table[devid].data[1] &= DTE_FLAG_MASK; in clear_dte_entry()
1893 amd_iommu_apply_erratum_63(devid); in clear_dte_entry()
1903 iommu = amd_iommu_rlookup_table[dev_data->devid]; in do_attach()
1916 set_dte_entry(dev_data->devid, domain, ats, dev_data->iommu_v2); in do_attach()
1917 if (alias != dev_data->devid) in do_attach()
1928 iommu = amd_iommu_rlookup_table[dev_data->devid]; in do_detach()
1938 clear_dte_entry(dev_data->devid); in do_detach()
1939 if (alias != dev_data->devid) in do_detach()
2171 int ret, devid; in amd_iommu_add_device() local
2176 devid = get_device_id(dev); in amd_iommu_add_device()
2177 if (devid < 0) in amd_iommu_add_device()
2178 return devid; in amd_iommu_add_device()
2180 iommu = amd_iommu_rlookup_table[devid]; in amd_iommu_add_device()
2217 int devid; in amd_iommu_remove_device() local
2222 devid = get_device_id(dev); in amd_iommu_remove_device()
2223 if (devid < 0) in amd_iommu_remove_device()
2226 iommu = amd_iommu_rlookup_table[devid]; in amd_iommu_remove_device()
2282 set_dte_entry(dev_data->devid, domain, dev_data->ats.enabled, in update_device_table()
2285 if (dev_data->devid == dev_data->alias) in update_device_table()
2957 int devid; in amd_iommu_detach_device() local
2962 devid = get_device_id(dev); in amd_iommu_detach_device()
2963 if (devid < 0) in amd_iommu_detach_device()
2969 iommu = amd_iommu_rlookup_table[devid]; in amd_iommu_detach_device()
2995 iommu = amd_iommu_rlookup_table[dev_data->devid]; in amd_iommu_attach_device()
3096 int devid; in amd_iommu_get_resv_regions() local
3098 devid = get_device_id(dev); in amd_iommu_get_resv_regions()
3099 if (devid < 0) in amd_iommu_get_resv_regions()
3106 if (devid < entry->devid_start || devid > entry->devid_end) in amd_iommu_get_resv_regions()
3337 iommu = amd_iommu_rlookup_table[dev_data->devid]; in __flush_pasid()
3339 build_inv_iotlb_pasid(&cmd, dev_data->devid, pasid, in __flush_pasid()
3500 iommu = amd_iommu_rlookup_table[dev_data->devid]; in amd_iommu_complete_ppr()
3502 build_complete_ppr(&cmd, dev_data->devid, pasid, status, in amd_iommu_complete_ppr()
3593 static void set_dte_irq_entry(u16 devid, struct irq_remap_table *table) in set_dte_irq_entry() argument
3597 dte = amd_iommu_dev_table[devid].data[2]; in set_dte_irq_entry()
3604 amd_iommu_dev_table[devid].data[2] = dte; in set_dte_irq_entry()
3607 static struct irq_remap_table *get_irq_table(u16 devid) in get_irq_table() argument
3611 if (WARN_ONCE(!amd_iommu_rlookup_table[devid], in get_irq_table()
3612 "%s: no iommu for devid %x\n", __func__, devid)) in get_irq_table()
3615 table = irq_lookup_table[devid]; in get_irq_table()
3616 if (WARN_ONCE(!table, "%s: no table for devid %x\n", __func__, devid)) in get_irq_table()
3646 static void set_remap_table_entry(struct amd_iommu *iommu, u16 devid, in set_remap_table_entry() argument
3649 irq_lookup_table[devid] = table; in set_remap_table_entry()
3650 set_dte_irq_entry(devid, table); in set_remap_table_entry()
3651 iommu_flush_dte(iommu, devid); in set_remap_table_entry()
3654 static struct irq_remap_table *alloc_irq_table(u16 devid) in alloc_irq_table() argument
3664 iommu = amd_iommu_rlookup_table[devid]; in alloc_irq_table()
3668 table = irq_lookup_table[devid]; in alloc_irq_table()
3672 alias = amd_iommu_alias_table[devid]; in alloc_irq_table()
3675 set_remap_table_entry(iommu, devid, table); in alloc_irq_table()
3687 table = irq_lookup_table[devid]; in alloc_irq_table()
3693 set_remap_table_entry(iommu, devid, table); in alloc_irq_table()
3700 set_remap_table_entry(iommu, devid, table); in alloc_irq_table()
3701 if (devid != alias) in alloc_irq_table()
3717 static int alloc_irq_index(u16 devid, int count, bool align) in alloc_irq_index() argument
3722 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in alloc_irq_index()
3727 table = alloc_irq_table(devid); in alloc_irq_index()
3766 static int modify_irte_ga(u16 devid, int index, struct irte_ga *irte, in modify_irte_ga() argument
3774 iommu = amd_iommu_rlookup_table[devid]; in modify_irte_ga()
3778 table = get_irq_table(devid); in modify_irte_ga()
3795 iommu_flush_irt(iommu, devid); in modify_irte_ga()
3801 static int modify_irte(u16 devid, int index, union irte *irte) in modify_irte() argument
3807 iommu = amd_iommu_rlookup_table[devid]; in modify_irte()
3811 table = get_irq_table(devid); in modify_irte()
3819 iommu_flush_irt(iommu, devid); in modify_irte()
3825 static void free_irte(u16 devid, int index) in free_irte() argument
3831 iommu = amd_iommu_rlookup_table[devid]; in free_irte()
3835 table = get_irq_table(devid); in free_irte()
3843 iommu_flush_irt(iommu, devid); in free_irte()
3849 u8 vector, u32 dest_apicid, int devid) in irte_prepare() argument
3863 u8 vector, u32 dest_apicid, int devid) in irte_ga_prepare() argument
3877 static void irte_activate(void *entry, u16 devid, u16 index) in irte_activate() argument
3882 modify_irte(devid, index, irte); in irte_activate()
3885 static void irte_ga_activate(void *entry, u16 devid, u16 index) in irte_ga_activate() argument
3890 modify_irte_ga(devid, index, irte, NULL); in irte_ga_activate()
3893 static void irte_deactivate(void *entry, u16 devid, u16 index) in irte_deactivate() argument
3898 modify_irte(devid, index, irte); in irte_deactivate()
3901 static void irte_ga_deactivate(void *entry, u16 devid, u16 index) in irte_ga_deactivate() argument
3906 modify_irte_ga(devid, index, irte, NULL); in irte_ga_deactivate()
3909 static void irte_set_affinity(void *entry, u16 devid, u16 index, in irte_set_affinity() argument
3916 modify_irte(devid, index, irte); in irte_set_affinity()
3919 static void irte_ga_set_affinity(void *entry, u16 devid, u16 index, in irte_ga_set_affinity() argument
3930 modify_irte_ga(devid, index, irte, NULL); in irte_ga_set_affinity()
3982 int devid = -1; in get_devid() local
3986 devid = get_ioapic_devid(info->ioapic_id); in get_devid()
3989 devid = get_hpet_devid(info->hpet_id); in get_devid()
3993 devid = get_device_id(&info->msi_dev->dev); in get_devid()
4000 return devid; in get_devid()
4006 int devid; in get_ir_irq_domain() local
4011 devid = get_devid(info); in get_ir_irq_domain()
4012 if (devid >= 0) { in get_ir_irq_domain()
4013 iommu = amd_iommu_rlookup_table[devid]; in get_ir_irq_domain()
4024 int devid; in get_irq_domain() local
4032 devid = get_device_id(&info->msi_dev->dev); in get_irq_domain()
4033 if (devid < 0) in get_irq_domain()
4036 iommu = amd_iommu_rlookup_table[devid]; in get_irq_domain()
4060 int devid, int index, int sub_handle) in irq_remapping_prepare_irte() argument
4065 struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; in irq_remapping_prepare_irte()
4070 data->irq_2_irte.devid = devid; in irq_remapping_prepare_irte()
4074 irq_cfg->dest_apicid, devid); in irq_remapping_prepare_irte()
4132 int i, ret, devid; in irq_remapping_alloc() local
4148 devid = get_devid(info); in irq_remapping_alloc()
4149 if (devid < 0) in irq_remapping_alloc()
4160 table = alloc_irq_table(devid); in irq_remapping_alloc()
4168 iommu = amd_iommu_rlookup_table[devid]; in irq_remapping_alloc()
4180 index = alloc_irq_index(devid, nr_irqs, align); in irq_remapping_alloc()
4211 irq_data->hwirq = (devid << 16) + i; in irq_remapping_alloc()
4214 irq_remapping_prepare_irte(data, cfg, info, devid, index, i); in irq_remapping_alloc()
4227 free_irte(devid, index + i); in irq_remapping_alloc()
4246 free_irte(irte_info->devid, irte_info->index); in irq_remapping_free()
4264 struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid]; in irq_remapping_activate()
4270 iommu->irte_ops->activate(data->entry, irte_info->devid, in irq_remapping_activate()
4281 struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid]; in irq_remapping_deactivate()
4284 iommu->irte_ops->deactivate(data->entry, irte_info->devid, in irq_remapping_deactivate()
4303 struct iommu_dev_data *dev_data = search_dev_data(irte_info->devid); in amd_ir_set_vcpu_affinity()
4324 iommu = amd_iommu_rlookup_table[irte_info->devid]; in amd_ir_set_vcpu_affinity()
4360 return modify_irte_ga(irte_info->devid, irte_info->index, irte, ir_data); in amd_ir_set_vcpu_affinity()
4374 iommu->irte_ops->set_affinity(ir_data->entry, irte_info->devid, in amd_ir_update_irte()
4386 struct amd_iommu *iommu = amd_iommu_rlookup_table[irte_info->devid]; in amd_ir_set_affinity()
4447 int devid = ir_data->irq_2_irte.devid; in amd_iommu_update_ga() local
4455 iommu = amd_iommu_rlookup_table[devid]; in amd_iommu_update_ga()
4459 table = get_irq_table(devid); in amd_iommu_update_ga()
4478 iommu_flush_irt(iommu, devid); in amd_iommu_update_ga()