Lines Matching refs:msix

135             table_base = s->msix->table_base;  in msi_msix_setup()
173 table_addr = s->msix->mmio_base_addr; in msi_msix_update()
314 if (!s->msix) { in msix_set_enable()
318 return msi_msix_enable(s, s->msix->ctrl_offset, PCI_MSIX_FLAGS_ENABLE, in msix_set_enable()
329 if (entry_nr < 0 || entry_nr >= s->msix->total_entries) { in xen_pt_msix_update_one()
333 entry = &s->msix->msix_entry[entry_nr]; in xen_pt_msix_update_one()
347 if (pirq == XEN_PT_UNASSIGNED_PIRQ || s->msix->maskall || in xen_pt_msix_update_one()
376 XenPTMSIX *msix = s->msix; in xen_pt_msix_update() local
379 for (i = 0; i < msix->total_entries; i++) { in xen_pt_msix_update()
380 xen_pt_msix_update_one(s, i, msix->msix_entry[i].latch(VECTOR_CTRL)); in xen_pt_msix_update()
392 for (i = 0; i < s->msix->total_entries; i++) { in xen_pt_msix_disable()
393 XenPTMSIXEntry *entry = &s->msix->msix_entry[i]; in xen_pt_msix_disable()
408 if (!(s->msix && s->msix->bar_index == bar_index)) { in xen_pt_msix_update_remap()
412 for (i = 0; i < s->msix->total_entries; i++) { in xen_pt_msix_update_remap()
413 entry = &s->msix->msix_entry[i]; in xen_pt_msix_update_remap()
443 XenPTMSIX *msix = s->msix; in pci_msix_write() local
448 if (entry_nr >= msix->total_entries) { in pci_msix_write()
451 entry = &msix->msix_entry[entry_nr]; in pci_msix_write()
461 } else if (msix->enabled && entry->updated && in pci_msix_write()
469 vec_ctrl = s->msix->phys_iomem_base + entry_nr * PCI_MSIX_ENTRY_SIZE in pci_msix_write()
481 XenPTMSIX *msix = s->msix; in pci_msix_read() local
492 if (addr < msix->total_entries * PCI_MSIX_ENTRY_SIZE) { in pci_msix_read()
493 return get_entry_value(&msix->msix_entry[entry_nr], offset); in pci_msix_read()
496 return *(uint32_t *)(msix->phys_iomem_base + addr); in pci_msix_read()
533 XenPTMSIX *msix = NULL; in xen_pt_msix_init() local
554 s->msix = g_malloc0(sizeof (XenPTMSIX) in xen_pt_msix_init()
556 msix = s->msix; in xen_pt_msix_init()
558 msix->total_entries = total_entries; in xen_pt_msix_init()
560 msix->msix_entry[i].pirq = XEN_PT_UNASSIGNED_PIRQ; in xen_pt_msix_init()
563 memory_region_init_io(&msix->mmio, OBJECT(s), &pci_msix_ops, in xen_pt_msix_init()
574 bar_index = msix->bar_index = table_off & PCI_MSIX_FLAGS_BIRMASK; in xen_pt_msix_init()
576 msix->table_base = s->real_device.io_regions[bar_index].base_addr; in xen_pt_msix_init()
577 XEN_PT_LOG(d, "get MSI-X table BAR base 0x%"PRIx64"\n", msix->table_base); in xen_pt_msix_init()
587 msix->table_offset_adjust = table_off & 0x0fff; in xen_pt_msix_init()
588 msix->phys_iomem_base = in xen_pt_msix_init()
590 total_entries * PCI_MSIX_ENTRY_SIZE + msix->table_offset_adjust, in xen_pt_msix_init()
594 msix->table_base + table_off - msix->table_offset_adjust); in xen_pt_msix_init()
596 if (msix->phys_iomem_base == MAP_FAILED) { in xen_pt_msix_init()
601 msix->phys_iomem_base = (char *)msix->phys_iomem_base in xen_pt_msix_init()
602 + msix->table_offset_adjust; in xen_pt_msix_init()
605 msix->phys_iomem_base); in xen_pt_msix_init()
608 &msix->mmio, in xen_pt_msix_init()
614 g_free(s->msix); in xen_pt_msix_init()
615 s->msix = NULL; in xen_pt_msix_init()
621 XenPTMSIX *msix = s->msix; in xen_pt_msix_unmap() local
623 if (!msix) { in xen_pt_msix_unmap()
628 if (msix->phys_iomem_base) { in xen_pt_msix_unmap()
630 msix->phys_iomem_base); in xen_pt_msix_unmap()
631 munmap(msix->phys_iomem_base, msix->total_entries * PCI_MSIX_ENTRY_SIZE in xen_pt_msix_unmap()
632 + msix->table_offset_adjust); in xen_pt_msix_unmap()
635 memory_region_del_subregion(&s->bar[msix->bar_index], &msix->mmio); in xen_pt_msix_unmap()
640 XenPTMSIX *msix = s->msix; in xen_pt_msix_delete() local
642 if (!msix) { in xen_pt_msix_delete()
646 object_unparent(OBJECT(&msix->mmio)); in xen_pt_msix_delete()
648 g_free(s->msix); in xen_pt_msix_delete()
649 s->msix = NULL; in xen_pt_msix_delete()