Lines Matching full:msi
69 static inline uint64_t msi_addr64(XenPTMSI *msi) in msi_addr64() argument
71 return (uint64_t)msi->addr_hi << 32 | msi->addr_lo; in msi_addr64()
88 XEN_PT_ERR(&s->dev, "Failed to read MSI/MSI-X register (0x%x), rc:%d\n", in msi_msix_enable()
99 XEN_PT_ERR(&s->dev, "Failed to write MSI/MSI-X register (0x%x), rc:%d\n", in msi_msix_enable()
125 XEN_PT_LOG(&s->dev, "requested pirq %d for MSI%s" in msi_msix_setup()
145 "Mapping of MSI%s (err: %i, vec: 0x%x, entry 0x%x)\n", in msi_msix_setup()
168 XEN_PT_LOG(d, "Updating MSI%s with pirq %d gvec 0x%x gflags 0x%x" in msi_msix_update()
182 XEN_PT_ERR(d, "Updating of MSI%s failed. (err: %d)\n", in msi_msix_update()
186 XEN_PT_ERR(d, "Unmapping of MSI%s pirq %d failed. (err: %d)\n", in msi_msix_update()
211 XEN_PT_LOG(d, "Unbind MSI%s with pirq %d, gvec 0x%x\n", in msi_msix_disable()
215 XEN_PT_ERR(d, "Unbinding of MSI%s failed. (err: %d, pirq: %d, gvec: 0x%x)\n", in msi_msix_disable()
221 XEN_PT_LOG(d, "Unmap MSI%s pirq %d\n", is_msix ? "-X" : "", pirq); in msi_msix_disable()
224 XEN_PT_ERR(d, "Unmapping of MSI%s pirq %d failed. (err: %i)\n", in msi_msix_disable()
233 * MSI virtualization functions
238 XEN_PT_LOG(&s->dev, "%s MSI.\n", enable ? "enabling" : "disabling"); in xen_pt_msi_set_enable()
240 if (!s->msi) { in xen_pt_msi_set_enable()
244 return msi_msix_enable(s, s->msi->ctrl_offset, PCI_MSI_FLAGS_ENABLE, in xen_pt_msi_set_enable()
248 /* setup physical msi, but don't enable it */
253 XenPTMSI *msi = s->msi; in xen_pt_msi_setup() local
255 if (msi->initialized) { in xen_pt_msi_setup()
257 "Setup physical MSI when it has been properly initialized.\n"); in xen_pt_msi_setup()
261 rc = msi_msix_setup(s, msi_addr64(msi), msi->data, &pirq, false, 0, true); in xen_pt_msi_setup()
271 msi->pirq = pirq; in xen_pt_msi_setup()
272 XEN_PT_LOG(&s->dev, "MSI mapped with pirq %d.\n", pirq); in xen_pt_msi_setup()
279 XenPTMSI *msi = s->msi; in xen_pt_msi_update() local
281 /* Current MSI emulation in QEMU only supports 1 vector */ in xen_pt_msi_update()
282 return msi_msix_update(s, msi_addr64(msi), msi->data, msi->pirq, in xen_pt_msi_update()
283 false, 0, &msi->pirq, msi->mask & 1); in xen_pt_msi_update()
288 XenPTMSI *msi = s->msi; in xen_pt_msi_disable() local
290 if (!msi) { in xen_pt_msi_disable()
296 msi_msix_disable(s, msi_addr64(msi), msi->data, msi->pirq, false, in xen_pt_msi_disable()
297 msi->initialized); in xen_pt_msi_disable()
299 /* clear msi info */ in xen_pt_msi_disable()
300 msi->flags &= ~PCI_MSI_FLAGS_ENABLE; in xen_pt_msi_disable()
301 msi->initialized = false; in xen_pt_msi_disable()
302 msi->mapped = false; in xen_pt_msi_disable()
303 msi->pirq = XEN_PT_UNASSIGNED_PIRQ; in xen_pt_msi_disable()
307 * MSI-X virtualization functions
312 XEN_PT_LOG(&s->dev, "%s MSI-X.\n", enabled ? "enabling" : "disabling"); in msix_set_enable()
344 * Addr and data changes while the MSI-X entry is unmasked get deferred in xen_pt_msix_update_one()
397 /* clear MSI-X info */ in xen_pt_msix_disable()
418 XEN_PT_ERR(&s->dev, "unbind MSI-X entry %d failed (err: %d)\n", in xen_pt_msix_update_remap()
486 XEN_PT_ERR(&s->dev, "asked MSI-X entry '%i' invalid!\n", entry_nr); in pci_msix_read()
577 XEN_PT_LOG(d, "get MSI-X table BAR base 0x%"PRIx64"\n", msix->table_base); in xen_pt_msix_init()
598 XEN_PT_ERR(d, "Can't map physical MSI-X table: %s\n", strerror(errno)); in xen_pt_msix_init()
604 XEN_PT_LOG(d, "mapping physical MSI-X table to %p\n", in xen_pt_msix_init()
627 /* unmap the MSI-X memory mapped register area */ in xen_pt_msix_unmap()
629 XEN_PT_LOG(&s->dev, "unmapping physical MSI-X table from %p\n", in xen_pt_msix_unmap()