| /kernel/linux/linux-5.10/drivers/pci/controller/ |
| D | pcie-iproc-msi.c | 9 #include <linux/msi.h> 34 /* Size of each MSI address region */ 52 * iProc MSI group 54 * One MSI group is allocated per GIC interrupt, serviced by one iProc MSI 57 * @msi: pointer to iProc MSI data 62 struct iproc_msi *msi; member 68 * iProc event queue based MSI 70 * Only meant to be used on platforms without MSI support integrated into the 74 * @reg_offsets: MSI register offsets 75 * @grps: MSI groups [all …]
|
| D | pcie-altera-msi.c | 3 * Altera PCIe MSI support 14 #include <linux/msi.h> 41 static inline void msi_writel(struct altera_msi *msi, const u32 value, in msi_writel() argument 44 writel_relaxed(value, msi->csr_base + reg); in msi_writel() 47 static inline u32 msi_readl(struct altera_msi *msi, const u32 reg) in msi_readl() argument 49 return readl_relaxed(msi->csr_base + reg); in msi_readl() 55 struct altera_msi *msi; in altera_msi_isr() local 61 msi = irq_desc_get_handler_data(desc); in altera_msi_isr() 63 while ((status = msi_readl(msi, MSI_STATUS)) != 0) { in altera_msi_isr() 64 for_each_set_bit(bit, &status, msi->num_of_vectors) { in altera_msi_isr() [all …]
|
| D | pci-xgene-msi.c | 3 * APM X-Gene MSI Driver 12 #include <linux/msi.h> 27 struct xgene_msi *msi; member 48 .name = "X-Gene1 MSI", 62 * X-Gene v1 has 16 groups of MSI termination registers MSInIRx, where 85 * Each index register supports 16 MSI vectors (0..15) to generate interrupt. 86 * There are total 16 GIC IRQs assigned for these 16 groups of MSI termination 89 * Each MSI termination group has 1 MSIINTn register (n is 0..15) to indicate 90 * the MSI pending status caused by 1 of its 8 index registers. 94 static u32 xgene_msi_ir_read(struct xgene_msi *msi, in xgene_msi_ir_read() argument [all …]
|
| /kernel/linux/linux-6.6/drivers/pci/controller/ |
| D | pcie-iproc-msi.c | 9 #include <linux/msi.h> 34 /* Size of each MSI address region */ 52 * struct iproc_msi_grp - iProc MSI group 54 * One MSI group is allocated per GIC interrupt, serviced by one iProc MSI 57 * @msi: pointer to iProc MSI data 62 struct iproc_msi *msi; member 68 * struct iproc_msi - iProc event queue based MSI 70 * Only meant to be used on platforms without MSI support integrated into the 74 * @reg_offsets: MSI register offsets 75 * @grps: MSI groups [all …]
|
| D | pcie-altera-msi.c | 3 * Altera PCIe MSI support 15 #include <linux/msi.h> 41 static inline void msi_writel(struct altera_msi *msi, const u32 value, in msi_writel() argument 44 writel_relaxed(value, msi->csr_base + reg); in msi_writel() 47 static inline u32 msi_readl(struct altera_msi *msi, const u32 reg) in msi_readl() argument 49 return readl_relaxed(msi->csr_base + reg); in msi_readl() 55 struct altera_msi *msi; in altera_msi_isr() local 61 msi = irq_desc_get_handler_data(desc); in altera_msi_isr() 63 while ((status = msi_readl(msi, MSI_STATUS)) != 0) { in altera_msi_isr() 64 for_each_set_bit(bit, &status, msi->num_of_vectors) { in altera_msi_isr() [all …]
|
| D | pci-xgene-msi.c | 3 * APM X-Gene MSI Driver 13 #include <linux/msi.h> 27 struct xgene_msi *msi; member 48 .name = "X-Gene1 MSI", 62 * X-Gene v1 has 16 groups of MSI termination registers MSInIRx, where 85 * Each index register supports 16 MSI vectors (0..15) to generate interrupt. 86 * There are total 16 GIC IRQs assigned for these 16 groups of MSI termination 89 * Each MSI termination group has 1 MSIINTn register (n is 0..15) to indicate 90 * the MSI pending status caused by 1 of its 8 index registers. 94 static u32 xgene_msi_ir_read(struct xgene_msi *msi, in xgene_msi_ir_read() argument [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/pci/ |
| D | pci-msi.txt | 2 relationship between PCI devices and MSI controllers. 18 Requester ID. A mechanism is required to associate a device with both the MSI 22 For generic MSI bindings, see 23 Documentation/devicetree/bindings/interrupt-controller/msi.txt. 32 - msi-map: Maps a Requester ID to an MSI controller and associated 33 msi-specifier data. The property is an arbitrary number of tuples of 34 (rid-base,msi-controller,msi-base,length), where: 38 * msi-controller is a single phandle to an MSI controller 40 * msi-base is an msi-specifier describing the msi-specifier produced for the 47 the listed msi-controller, with the msi-specifier (r - rid-base + msi-base). [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/pci/ |
| D | pci-msi.txt | 2 relationship between PCI devices and MSI controllers. 18 Requester ID. A mechanism is required to associate a device with both the MSI 22 For generic MSI bindings, see 23 Documentation/devicetree/bindings/interrupt-controller/msi.txt. 32 - msi-map: Maps a Requester ID to an MSI controller and associated 33 msi-specifier data. The property is an arbitrary number of tuples of 34 (rid-base,msi-controller,msi-base,length), where: 38 * msi-controller is a single phandle to an MSI controller 40 * msi-base is an msi-specifier describing the msi-specifier produced for the 47 the listed msi-controller, with the msi-specifier (r - rid-base + msi-base). [all …]
|
| D | brcm,iproc-pcie.txt | 44 MSI support (optional): 46 For older platforms without MSI integrated in the GIC, iProc PCIe core provides 47 an event queue based MSI support. The iProc MSI uses host memories to store 48 MSI posted writes in the event queues 50 On newer iProc platforms, gicv2m or gicv3-its based MSI support should be used 52 - msi-map: Maps a Requester ID to an MSI controller and associated MSI 55 - msi-parent: Link to the device node of the MSI controller, used when no MSI 56 sideband data is passed between the iProc PCIe controller and the MSI 60 the use of 'msi-map' and 'msi-parent': 61 Documentation/devicetree/bindings/pci/pci-msi.txt [all …]
|
| /kernel/linux/linux-5.10/arch/powerpc/platforms/4xx/ |
| D | msi.c | 3 * Adding PCI-E MSI support for PPC4XX SoCs. 12 #include <linux/msi.h> 73 dev_dbg(&dev->dev, "PCIE-MSI:%s called. vec %x type %d\n", in ppc4xx_setup_msi_irqs() 76 pr_debug("ppc4xx msi: MSI-X untested, trying anyway.\n"); in ppc4xx_setup_msi_irqs() 87 pr_debug("%s: fail allocating msi interrupt\n", in ppc4xx_setup_msi_irqs() 98 /* Setup msi address space */ in ppc4xx_setup_msi_irqs() 115 dev_dbg(&dev->dev, "PCIE-MSI: tearing down msi irqs\n"); in ppc4xx_teardown_msi_irqs() 128 struct resource res, struct ppc4xx_msi *msi) in ppc4xx_setup_pcieh_hw() argument 141 msi_data = of_get_property(dev->dev.of_node, "msi-data", NULL); in ppc4xx_setup_pcieh_hw() 145 msi_mask = of_get_property(dev->dev.of_node, "msi-mask", NULL); in ppc4xx_setup_pcieh_hw() [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/interrupt-controller/ |
| D | msi.txt | 1 This document describes the generic device tree binding for MSI controllers and 9 those busses to the MSI controllers which they are capable of using, 17 they can address. An MSI controller may feature a number of doorbells. 22 MSI controllers may have restrictions on permitted payloads. 28 MSI controller and device rather than a property of either in isolation). 31 MSI controllers: 34 An MSI controller signals interrupts to a CPU when a write is made to an MMIO 35 address by some master. An MSI controller may feature a number of doorbells. 40 - msi-controller: Identifies the node as an MSI controller. 45 - #msi-cells: The number of cells in an msi-specifier, required if not zero. [all …]
|
| D | loongson,pch-msi.yaml | 4 $id: "http://devicetree.org/schemas/interrupt-controller/loongson,pch-msi.yaml#" 7 title: Loongson PCH MSI Controller 14 transforming interrupts from PCIe MSI into HyperTransport vectorized 19 const: loongson,pch-msi-1.0 24 loongson,msi-base-vec: 27 to PCH MSI. 32 loongson,msi-num-vecs: 35 to PCH MSI. 40 msi-controller: true 45 - msi-controller [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/interrupt-controller/ |
| D | msi.txt | 1 This document describes the generic device tree binding for MSI controllers and 9 those busses to the MSI controllers which they are capable of using, 17 they can address. An MSI controller may feature a number of doorbells. 22 MSI controllers may have restrictions on permitted payloads. 28 MSI controller and device rather than a property of either in isolation). 31 MSI controllers: 34 An MSI controller signals interrupts to a CPU when a write is made to an MMIO 35 address by some master. An MSI controller may feature a number of doorbells. 40 - msi-controller: Identifies the node as an MSI controller. 45 - #msi-cells: The number of cells in an msi-specifier, required if not zero. [all …]
|
| D | loongson,pch-msi.yaml | 4 $id: http://devicetree.org/schemas/interrupt-controller/loongson,pch-msi.yaml# 7 title: Loongson PCH MSI Controller 14 transforming interrupts from PCIe MSI into HyperTransport vectorized 19 const: loongson,pch-msi-1.0 24 loongson,msi-base-vec: 27 to PCH MSI. 32 loongson,msi-num-vecs: 35 to PCH MSI. 40 msi-controller: true 45 - msi-controller [all …]
|
| D | fsl,ls-scfg-msi.txt | 1 * Freescale Layerscape SCFG PCIe MSI controller 5 - compatible: should be "fsl,<soc-name>-msi" to identify 6 Layerscape PCIe MSI controller block such as: 7 "fsl,ls1021a-msi" 8 "fsl,ls1043a-msi" 9 "fsl,ls1046a-msi" 10 "fsl,ls1043a-v1.1-msi" 11 "fsl,ls1012a-msi" 12 - msi-controller: indicates that this is a PCIe MSI controller node 20 Each PCIe node needs to have property msi-parent that points to [all …]
|
| /kernel/linux/linux-6.6/arch/powerpc/sysdev/ |
| D | fsl_msi.c | 11 #include <linux/msi.h> 37 #define msi_hwirq(msi, msir_index, intr_index) \ argument 38 ((msir_index) << (msi)->srs_shift | \ 39 ((intr_index) << (msi)->ibs_shift)) 61 * in the cascade interrupt. So, this MSI interrupt has been acked 76 seq_printf(p, " fsl-msi-%d", cascade_virq); in fsl_msi_print_chip() 150 /* If the msi-address-64 property exists, then use it */ in fsl_compose_msi_msg() 151 reg = of_get_property(hose->dn, "msi-address-64", &len); in fsl_compose_msi_msg() 162 * that neither MSI nor MSI-X can work fine. in fsl_compose_msi_msg() 163 * This is a workaround to allow MSI-X to function in fsl_compose_msi_msg() [all …]
|
| /kernel/linux/linux-5.10/arch/powerpc/sysdev/ |
| D | fsl_msi.c | 11 #include <linux/msi.h> 35 #define msi_hwirq(msi, msir_index, intr_index) \ argument 36 ((msir_index) << (msi)->srs_shift | \ 37 ((intr_index) << (msi)->ibs_shift)) 59 * in the cascade interrupt. So, this MSI interrupt has been acked 74 seq_printf(p, " fsl-msi-%d", cascade_virq); in fsl_msi_print_chip() 151 /* If the msi-address-64 property exists, then use it */ in fsl_compose_msi_msg() 152 reg = of_get_property(hose->dn, "msi-address-64", &len); in fsl_compose_msi_msg() 163 * that neither MSI nor MSI-X can work fine. in fsl_compose_msi_msg() 164 * This is a workaround to allow MSI-X to function in fsl_compose_msi_msg() [all …]
|
| /kernel/linux/linux-6.6/arch/arm64/kvm/vgic/ |
| D | vgic-irqfd.c | 55 e->msi.address_lo = ue->u.msi.address_lo; in kvm_set_routing_entry() 56 e->msi.address_hi = ue->u.msi.address_hi; in kvm_set_routing_entry() 57 e->msi.data = ue->u.msi.data; in kvm_set_routing_entry() 58 e->msi.flags = ue->flags; in kvm_set_routing_entry() 59 e->msi.devid = ue->u.msi.devid; in kvm_set_routing_entry() 70 struct kvm_msi *msi) in kvm_populate_msi() argument 72 msi->address_lo = e->msi.address_lo; in kvm_populate_msi() 73 msi->address_hi = e->msi.address_hi; in kvm_populate_msi() 74 msi->data = e->msi.data; in kvm_populate_msi() 75 msi->flags = e->msi.flags; in kvm_populate_msi() [all …]
|
| /kernel/linux/linux-5.10/arch/arm64/kvm/vgic/ |
| D | vgic-irqfd.c | 55 e->msi.address_lo = ue->u.msi.address_lo; in kvm_set_routing_entry() 56 e->msi.address_hi = ue->u.msi.address_hi; in kvm_set_routing_entry() 57 e->msi.data = ue->u.msi.data; in kvm_set_routing_entry() 58 e->msi.flags = ue->flags; in kvm_set_routing_entry() 59 e->msi.devid = ue->u.msi.devid; in kvm_set_routing_entry() 70 struct kvm_msi *msi) in kvm_populate_msi() argument 72 msi->address_lo = e->msi.address_lo; in kvm_populate_msi() 73 msi->address_hi = e->msi.address_hi; in kvm_populate_msi() 74 msi->data = e->msi.data; in kvm_populate_msi() 75 msi->flags = e->msi.flags; in kvm_populate_msi() [all …]
|
| /kernel/linux/linux-6.6/include/linux/ |
| D | msi.h | 6 * This header file contains MSI data structures and functions which are 9 * - PCI/MSI core code 10 * - MSI interrupt domain implementations 12 * dealing with low level MSI details. 15 * especially storing MSI descriptor pointers in random code is considered 30 #include <asm/msi.h> 56 * msi_msg - Representation of a MSI message 57 * @address_lo: Low 32 bits of msi message address 59 * @address_hi: High 32 bits of msi message address 62 * @data: MSI message data (usually 16 bits) [all …]
|
| /kernel/linux/linux-6.6/Documentation/PCI/ |
| D | msi-howto.rst | 5 The MSI Driver Guide HOWTO 16 the advantages of using MSI over traditional interrupt mechanisms, how 17 to change your driver to use MSI or MSI-X and some basic diagnostics to 27 The MSI capability was first specified in PCI 2.2 and was later enhanced 28 in PCI 3.0 to allow each interrupt to be masked individually. The MSI-X 30 per device than MSI and allows interrupts to be independently configured. 32 Devices may support both MSI and MSI-X, but only one can be enabled at 73 driver has to set up the device to use MSI or MSI-X. Not all machines 80 To support MSI or MSI-X, the kernel must be built with the CONFIG_PCI_MSI 86 Using MSI [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/powerpc/fsl/ |
| D | msi-pic.txt | 1 * Freescale MSI interrupt controller 5 The first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572, 6 etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" or 7 "fsl,mpic-msi-v4.3" depending on the parent type and version. If mpic 8 version is 4.3, the number of MSI registers is increased to 16, MSIIR1 is 9 provided to access these 16 registers, and compatible "fsl,mpic-msi-v4.3" 17 region must be added because different MSI group has different MSIIR1 offset. 21 be set as edge sensitive. If msi-available-ranges is present, only 25 - msi-available-ranges: use <start count> style section to define which 26 msi interrupt can be used in the 256 msi interrupts. This property is [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/powerpc/fsl/ |
| D | msi-pic.txt | 1 * Freescale MSI interrupt controller 5 The first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572, 6 etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" or 7 "fsl,mpic-msi-v4.3" depending on the parent type and version. If mpic 8 version is 4.3, the number of MSI registers is increased to 16, MSIIR1 is 9 provided to access these 16 registers, and compatible "fsl,mpic-msi-v4.3" 17 region must be added because different MSI group has different MSIIR1 offset. 21 be set as edge sensitive. If msi-available-ranges is present, only 25 - msi-available-ranges: use <start count> style section to define which 26 msi interrupt can be used in the 256 msi interrupts. This property is [all …]
|
| /kernel/linux/linux-5.10/Documentation/PCI/ |
| D | msi-howto.rst | 5 The MSI Driver Guide HOWTO 16 the advantages of using MSI over traditional interrupt mechanisms, how 17 to change your driver to use MSI or MSI-X and some basic diagnostics to 27 The MSI capability was first specified in PCI 2.2 and was later enhanced 28 in PCI 3.0 to allow each interrupt to be masked individually. The MSI-X 30 per device than MSI and allows interrupts to be independently configured. 32 Devices may support both MSI and MSI-X, but only one can be enabled at 73 driver has to set up the device to use MSI or MSI-X. Not all machines 80 To support MSI or MSI-X, the kernel must be built with the CONFIG_PCI_MSI 86 Using MSI [all …]
|
| /kernel/linux/linux-6.6/drivers/pci/msi/ |
| D | api.c | 3 * PCI MSI/MSI-X — Exported APIs for device drivers 14 #include "msi.h" 17 * pci_enable_msi() - Enable MSI interrupt mode on device 20 * Legacy device driver API to enable MSI interrupts mode on device and 40 * pci_disable_msi() - Disable MSI interrupt mode on device 43 * Legacy device driver API to disable MSI interrupt mode on device, 64 * pci_msix_vec_count() - Get number of MSI-X interrupt vectors on device 67 * Return: number of MSI-X interrupt vectors available on this device 68 * (i.e., the device's MSI-X capability structure "table size"), -EINVAL 69 * if the device is not MSI-X capable, other errnos otherwise. [all …]
|