Lines Matching refs:seg
61 static spinlock_t* get_intremap_lock(int seg, int req_id) in get_intremap_lock() argument
64 &get_ivrs_mappings(seg)[req_id].intremap_lock: in get_intremap_lock()
68 static int get_intremap_requestor_id(int seg, int bdf) in get_intremap_requestor_id() argument
71 return get_ivrs_mappings(seg)[bdf].dte_requestor_id; in get_intremap_requestor_id()
74 static unsigned int alloc_intremap_entry(int seg, int bdf, unsigned int nr) in alloc_intremap_entry() argument
76 unsigned long *inuse = get_ivrs_mappings(seg)[bdf].intremap_inuse; in alloc_intremap_entry()
104 static u32 *get_intremap_entry(int seg, int bdf, int offset) in get_intremap_entry() argument
106 u32 *table = get_ivrs_mappings(seg)[bdf].intremap_table; in get_intremap_entry()
113 static void free_intremap_entry(int seg, int bdf, int offset) in free_intremap_entry() argument
115 u32 *entry = get_intremap_entry(seg, bdf, offset); in free_intremap_entry()
118 __clear_bit(offset, get_ivrs_mappings(seg)[bdf].intremap_inuse); in free_intremap_entry()
172 req_id = get_intremap_requestor_id(iommu->seg, bdf); in update_intremap_entry_from_ioapic()
173 lock = get_intremap_lock(iommu->seg, req_id); in update_intremap_entry_from_ioapic()
185 offset = alloc_intremap_entry(iommu->seg, req_id, 1); in update_intremap_entry_from_ioapic()
196 entry = get_intremap_entry(iommu->seg, req_id, offset); in update_intremap_entry_from_ioapic()
234 u16 seg, bdf, req_id; in amd_iommu_setup_ioapic_remapping() local
256 seg = ioapic_sbdf[idx].seg; in amd_iommu_setup_ioapic_remapping()
257 iommu = find_iommu_for_device(seg, bdf); in amd_iommu_setup_ioapic_remapping()
261 "device id = %04x:%04x\n", seg, bdf); in amd_iommu_setup_ioapic_remapping()
265 req_id = get_intremap_requestor_id(iommu->seg, bdf); in amd_iommu_setup_ioapic_remapping()
266 lock = get_intremap_lock(iommu->seg, req_id); in amd_iommu_setup_ioapic_remapping()
274 offset = alloc_intremap_entry(seg, req_id, 1); in amd_iommu_setup_ioapic_remapping()
276 entry = get_intremap_entry(iommu->seg, req_id, offset); in amd_iommu_setup_ioapic_remapping()
307 int saved_mask, seg, bdf, rc; in amd_iommu_ioapic_update_ire() local
323 seg = ioapic_sbdf[idx].seg; in amd_iommu_ioapic_update_ire()
324 iommu = find_iommu_for_device(seg, bdf); in amd_iommu_ioapic_update_ire()
328 " %04x:%04x\n", seg, bdf); in amd_iommu_ioapic_update_ire()
408 u16 seg = ioapic_sbdf[idx].seg; in amd_iommu_read_ioapic_from_ire() local
409 u16 req_id = get_intremap_requestor_id(seg, bdf); in amd_iommu_read_ioapic_from_ire()
410 const u32 *entry = get_intremap_entry(seg, req_id, offset); in amd_iommu_read_ioapic_from_ire()
436 req_id = get_dma_requestor_id(iommu->seg, bdf); in update_intremap_entry_from_msi_msg()
437 alias_id = get_intremap_requestor_id(iommu->seg, bdf); in update_intremap_entry_from_msi_msg()
441 lock = get_intremap_lock(iommu->seg, req_id); in update_intremap_entry_from_msi_msg()
444 free_intremap_entry(iommu->seg, req_id, *remap_index + i); in update_intremap_entry_from_msi_msg()
449 lock = get_intremap_lock(iommu->seg, req_id); in update_intremap_entry_from_msi_msg()
460 offset = alloc_intremap_entry(iommu->seg, bdf, nr); in update_intremap_entry_from_msi_msg()
469 entry = get_intremap_entry(iommu->seg, req_id, offset); in update_intremap_entry_from_msi_msg()
483 get_ivrs_mappings(iommu->seg)[alias_id].intremap_table != NULL ) in update_intremap_entry_from_msi_msg()
485 BUG_ON(get_ivrs_mappings(iommu->seg)[req_id].intremap_table != in update_intremap_entry_from_msi_msg()
486 get_ivrs_mappings(iommu->seg)[alias_id].intremap_table); in update_intremap_entry_from_msi_msg()
502 static struct amd_iommu *_find_iommu_for_device(int seg, int bdf) in _find_iommu_for_device() argument
507 if ( iommu->seg == seg && iommu->bdf == bdf ) in _find_iommu_for_device()
510 iommu = find_iommu_for_device(seg, bdf); in _find_iommu_for_device()
515 seg, PCI_BUS(bdf), PCI_SLOT(bdf), PCI_FUNC(bdf)); in _find_iommu_for_device()
523 int bdf, seg, rc; in amd_iommu_msi_msg_update_ire() local
529 seg = pdev ? pdev->seg : hpet_sbdf.seg; in amd_iommu_msi_msg_update_ire()
531 iommu = _find_iommu_for_device(seg, bdf); in amd_iommu_msi_msg_update_ire()
583 u16 seg = pdev ? pdev->seg : hpet_sbdf.seg; in amd_iommu_read_msi_from_ire() local
586 if ( IS_ERR_OR_NULL(_find_iommu_for_device(seg, bdf)) ) in amd_iommu_read_msi_from_ire()
589 entry = get_intremap_entry(seg, get_dma_requestor_id(seg, bdf), offset); in amd_iommu_read_msi_from_ire()
609 u16 seg, struct ivrs_mappings *ivrs_mapping) in amd_iommu_free_intremap_table() argument
652 lock = get_intremap_lock(hpet_sbdf.seg, hpet_sbdf.bdf); in amd_setup_hpet_msi()
655 msi_desc->remap_index = alloc_intremap_entry(hpet_sbdf.seg, in amd_setup_hpet_msi()
683 static int dump_intremap_mapping(u16 seg, struct ivrs_mappings *ivrs_mapping) in dump_intremap_mapping() argument
690 printk(" %04x:%02x:%02x:%u:\n", seg, in dump_intremap_mapping()