Lines Matching full:msi
3 * PCI Message Signaled Interrupt (MSI)
18 #include <linux/msi.h>
65 struct msi_controller *chip = dev->bus->msi; in arch_setup_msi_irq()
92 struct msi_controller *chip = dev->bus->msi; in arch_setup_msi_irqs()
99 * If an architecture wants to support multiple MSI, it needs to in arch_setup_msi_irqs()
169 * PCI 2.3 does not specify mask bits for each MSI interrupt. Attempting to
170 * mask all MSI interrupts by clearing the MSI enable bit does not work
208 * of MSI-X interrupts.
250 * pci_msi_mask_irq - Generic IRQ chip callback to mask PCI/MSI interrupts
260 * pci_msi_unmask_irq - Generic IRQ chip callback to unmask PCI/MSI interrupts
496 entry->msi_attrib.is_msix ? "msix" : "msi"); in msi_mode_show()
514 /* Determine how many msi entries we have */ in populate_msi_sysfs()
520 /* Dynamically create the MSI attributes for the PCI device */ in populate_msi_sysfs()
588 /* MSI Entry Initialization */ in msi_setup_entry()
628 pci_err(dev, "Device has broken 64-bit MSI but arch" in msi_verify_entries()
636 * msi_capability_init - configure device's MSI capability structure
637 * @dev: pointer to the pci_dev data structure of MSI device function
641 * Setup the MSI capability structure of the device with the requested
643 * setup of an entry with the new MSI IRQ. A negative return value indicates
654 pci_msi_set_enable(dev, 0); /* Disable MSI during set up */ in msi_capability_init()
666 /* Configure MSI capability structure */ in msi_capability_init()
688 /* Set MSI enabled bits */ in msi_capability_init()
796 * msix_capability_init - configure device's MSI-X capability
797 * @dev: pointer to the pci_dev data structure of MSI-X device function
802 * Setup the MSI-X capability structure of device function with a
803 * single MSI-X IRQ. A return of zero indicates the successful setup of
804 * requested MSI-X entries with allocated IRQs or non-zero for otherwise.
814 * Some devices require MSI-X to be enabled before the MSI-X in msix_capability_init()
822 /* Request & Map MSI-X table region */ in msix_capability_init()
838 /* Check if all MSI entries honor device restrictions */ in msix_capability_init()
849 /* Set MSI-X enabled bits and unmask the function */ in msix_capability_init()
858 * which takes the MSI-X mask bits into account even in msix_capability_init()
859 * when MSI-X is disabled, which prevents MSI delivery. in msix_capability_init()
894 * pci_msi_supported - check whether MSI may be enabled on a device
895 * @dev: pointer to the pci_dev data structure of MSI device function
899 * to determine if MSI/-X are supported for the device. If MSI/-X is
906 /* MSI must be globally enabled and supported by the device */ in pci_msi_supported()
922 * Any bridge which does NOT route MSI transactions from its in pci_msi_supported()
936 * pci_msi_vec_count - Return the number of MSI vectors a device can send
939 * This function returns the number of MSI vectors a device requested via
941 * device is not capable sending MSI interrupts. Otherwise, the call succeeds
943 * MSI specification.
975 /* Return the device with MSI unmasked as initial states */ in pci_msi_shutdown()
995 * pci_msix_vec_count - return the number of device's MSI-X table entries
996 * @dev: pointer to the pci_dev data structure of MSI-X device function
997 * This function returns the number of device's MSI-X table entries and
998 * therefore the number of MSI-X vectors device is capable of sending.
999 * It returns a negative errno if the device is not capable of sending MSI-X
1041 /* Check whether driver already requested for MSI IRQ */ in __pci_enable_msix()
1043 pci_info(dev, "can't enable MSI-X (MSI IRQ already assigned)\n"); in __pci_enable_msix()
1061 /* Return the device with MSI-X masked as initial states */ in pci_msix_shutdown()
1087 * pci_msi_enabled - is MSI enabled?
1089 * Returns true if MSI has not been disabled by the command-line option
1107 /* Check whether driver already requested MSI-X IRQs */ in __pci_enable_msi_range()
1109 pci_info(dev, "can't enable MSI (MSI-X already enabled)\n"); in __pci_enable_msi_range()
1192 * pci_enable_msix_range - configure device's MSI-X capability structure
1193 * @dev: pointer to the pci_dev data structure of MSI-X device function
1194 * @entries: pointer to an array of MSI-X entries
1195 * @minvec: minimum number of MSI-X IRQs requested
1196 * @maxvec: maximum number of MSI-X IRQs requested
1198 * Setup the MSI-X capability structure of device function with a maximum
1200 * upon its software driver call to request for MSI-X mode enabled on its
1203 * indicates the successful configuration of MSI-X capability structure
1204 * with new allocated MSI-X interrupts.
1221 * Allocate up to @max_vecs interrupt vectors for @dev, using MSI-X or MSI
1297 * MSI-X: The index in the MSI-X vector table
1298 * MSI: The index of the enabled MSI vectors
1331 * pci_irq_get_affinity - return the affinity of a particular MSI vector
1336 * MSI-X: The index in the MSI-X vector table
1337 * MSI: The index of the enabled MSI vectors
1383 * pci_msi_domain_write_msg - Helper to write MSI message to PCI config space
1384 * @irq_data: Pointer to interrupt data of the MSI interrupt
1392 * For MSI-X desc->irq is always equal to irq_data->irq. For in pci_msi_domain_write_msg()
1393 * MSI only the first interrupt of MULTI MSI passes the test. in pci_msi_domain_write_msg()
1400 * pci_msi_domain_calc_hwirq - Generate a unique ID for an MSI source
1401 * @desc: Pointer to the MSI descriptor
1428 * 1 if Multi MSI is requested, but the domain does not support it
1499 * pci_msi_create_irq_domain - Create a MSI interrupt domain
1501 * @info: MSI domain info
1504 * Updates the domain and chip ops and creates a MSI interrupt domain.
1527 /* PCI-MSI is oneshot-safe */ in pci_msi_create_irq_domain()
1540 * Users of the generic MSI infrastructure expect a device to have a single ID,
1564 * pci_msi_domain_get_msi_rid - Get the MSI requester id (RID)
1588 * pci_msi_get_device_domain - Get the MSI domain for a given PCI device
1591 * Use the firmware data to find a device-specific MSI domain
1594 * Returns: The corresponding MSI domain or NULL if none has been found.
1611 * a non-standard PCI-MSI domain
1615 * non-standard PCI/MSI.