Lines Matching defs:msix
816 nvec = xe->irq.msix.nvec;
895 xe->irq.msix.nvec = nvec;
896 xa_init_flags(&xe->irq.msix.indexes, XA_FLAGS_ALLOC);
931 bool dynamic_msix, u16 *msix)
937 limit = (dynamic_msix) ? XA_LIMIT(NUM_OF_STATIC_MSIX, xe->irq.msix.nvec - 1) :
938 XA_LIMIT(*msix, *msix);
939 ret = xa_alloc(&xe->irq.msix.indexes, &id, irq_buf, limit, GFP_KERNEL);
944 *msix = id;
949 static void xe_irq_msix_release_vector(struct xe_device *xe, u16 msix)
951 xa_erase(&xe->irq.msix.indexes, msix);
955 void *irq_buf, const char *name, u16 msix)
960 irq = pci_irq_vector(pdev, msix);
972 const char *name, bool dynamic_msix, u16 *msix)
976 ret = xe_irq_msix_alloc_vector(xe, irq_buf, dynamic_msix, msix);
980 ret = xe_irq_msix_request_irq_internal(xe, handler, irq_buf, name, *msix);
982 drm_err(&xe->drm, "Failed to request IRQ for MSI-X %u\n", *msix);
983 xe_irq_msix_release_vector(xe, *msix);
990 void xe_irq_msix_free_irq(struct xe_device *xe, u16 msix)
996 irq_buf = xa_load(&xe->irq.msix.indexes, msix);
1000 irq = pci_irq_vector(pdev, msix);
1002 drm_err(&xe->drm, "MSI-X %u can't be released, there is no matching IRQ\n", msix);
1007 xe_irq_msix_release_vector(xe, msix);
1013 u16 msix;
1015 msix = GUC2HOST_MSIX;
1017 DRIVER_NAME "-guc2host", false, &msix);
1021 msix = DEFAULT_MSIX;
1023 DRIVER_NAME "-default-msix", false, &msix);
1034 unsigned long msix;
1037 xa_for_each(&xe->irq.msix.indexes, msix, dummy)
1038 xe_irq_msix_free_irq(xe, msix);
1039 xa_destroy(&xe->irq.msix.indexes);
1045 unsigned long msix;
1048 xa_for_each(&xe->irq.msix.indexes, msix, dummy)
1049 synchronize_irq(pci_irq_vector(pdev, msix));