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
476 entry->msi_attrib.is_msix ? "msix" : "msi"); in msi_mode_show()
494 /* Determine how many msi entries we have */ in populate_msi_sysfs()
500 /* Dynamically create the MSI attributes for the PCI device */ in populate_msi_sysfs()
568 /* MSI Entry Initialization */ in msi_setup_entry()
605 pci_err(dev, "Device has broken 64-bit MSI but arch" in msi_verify_entries()
613 * msi_capability_init - configure device's MSI capability structure
614 * @dev: pointer to the pci_dev data structure of MSI device function
618 * Setup the MSI capability structure of the device with the requested
620 * setup of an entry with the new MSI IRQ. A negative return value indicates
631 pci_msi_set_enable(dev, 0); /* Disable MSI during set up */ in msi_capability_init()
643 /* Configure MSI capability structure */ in msi_capability_init()
665 /* Set MSI enabled bits */ in msi_capability_init()
765 * msix_capability_init - configure device's MSI-X capability
766 * @dev: pointer to the pci_dev data structure of MSI-X device function
771 * Setup the MSI-X capability structure of device function with a
772 * single MSI-X IRQ. A return of zero indicates the successful setup of
773 * requested MSI-X entries with allocated IRQs or non-zero for otherwise.
782 /* Ensure MSI-X is disabled while it is set up */ in msix_capability_init()
786 /* Request & Map MSI-X table region */ in msix_capability_init()
799 /* Check if all MSI entries honor device restrictions */ in msix_capability_init()
805 * Some devices require MSI-X to be enabled before we can touch the in msix_capability_init()
806 * MSI-X registers. We need to mask all the vectors to prevent in msix_capability_init()
818 /* Set MSI-X enabled bits and unmask the function */ in msix_capability_init()
850 * pci_msi_supported - check whether MSI may be enabled on a device
851 * @dev: pointer to the pci_dev data structure of MSI device function
855 * to determine if MSI/-X are supported for the device. If MSI/-X is
862 /* MSI must be globally enabled and supported by the device */ in pci_msi_supported()
878 * Any bridge which does NOT route MSI transactions from its in pci_msi_supported()
892 * pci_msi_vec_count - Return the number of MSI vectors a device can send
895 * This function returns the number of MSI vectors a device requested via
897 * device is not capable sending MSI interrupts. Otherwise, the call succeeds
899 * MSI specification.
931 /* Return the device with MSI unmasked as initial states */ in pci_msi_shutdown()
952 * pci_msix_vec_count - return the number of device's MSI-X table entries
953 * @dev: pointer to the pci_dev data structure of MSI-X device function
954 * This function returns the number of device's MSI-X table entries and
955 * therefore the number of MSI-X vectors device is capable of sending.
956 * It returns a negative errno if the device is not capable of sending MSI-X
998 /* Check whether driver already requested for MSI IRQ */ in __pci_enable_msix()
1000 pci_info(dev, "can't enable MSI-X (MSI IRQ already assigned)\n"); in __pci_enable_msix()
1018 /* Return the device with MSI-X masked as initial states */ in pci_msix_shutdown()
1046 * pci_msi_enabled - is MSI enabled?
1048 * Returns true if MSI has not been disabled by the command-line option
1066 /* Check whether driver already requested MSI-X IRQs */ in __pci_enable_msi_range()
1068 pci_info(dev, "can't enable MSI (MSI-X already enabled)\n"); in __pci_enable_msi_range()
1151 * pci_enable_msix_range - configure device's MSI-X capability structure
1152 * @dev: pointer to the pci_dev data structure of MSI-X device function
1153 * @entries: pointer to an array of MSI-X entries
1154 * @minvec: minimum number of MSI-X IRQs requested
1155 * @maxvec: maximum number of MSI-X IRQs requested
1157 * Setup the MSI-X capability structure of device function with a maximum
1159 * upon its software driver call to request for MSI-X mode enabled on its
1162 * indicates the successful configuration of MSI-X capability structure
1163 * with new allocated MSI-X interrupts.
1180 * Allocate up to @max_vecs interrupt vectors for @dev, using MSI-X or MSI
1285 * pci_irq_get_affinity - return the affinity of a particular MSI vector
1332 * pci_msi_domain_write_msg - Helper to write MSI message to PCI config space
1333 * @irq_data: Pointer to interrupt data of the MSI interrupt
1341 * For MSI-X desc->irq is always equal to irq_data->irq. For in pci_msi_domain_write_msg()
1342 * MSI only the first interrupt of MULTI MSI passes the test. in pci_msi_domain_write_msg()
1349 * pci_msi_domain_calc_hwirq - Generate a unique ID for an MSI source
1350 * @desc: Pointer to the MSI descriptor
1377 * 1 if Multi MSI is requested, but the domain does not support it
1448 * pci_msi_create_irq_domain - Create a MSI interrupt domain
1450 * @info: MSI domain info
1453 * Updates the domain and chip ops and creates a MSI interrupt domain.
1476 /* PCI-MSI is oneshot-safe */ in pci_msi_create_irq_domain()
1489 * Users of the generic MSI infrastructure expect a device to have a single ID,
1513 * pci_msi_domain_get_msi_rid - Get the MSI requester id (RID)
1537 * pci_msi_get_device_domain - Get the MSI domain for a given PCI device
1540 * Use the firmware data to find a device-specific MSI domain
1543 * Returns: The corresponding MSI domain or NULL if none has been found.
1560 * a non-standard PCI-MSI domain
1564 * non-standard PCI/MSI.