linux/kernel/irq
Julien Grall aaebdf8d68 genirq/msi: Add a new field in msi_desc to store an IOMMU cookie
When an MSI doorbell is located downstream of an IOMMU, it is required
to swizzle the physical address with an appropriately-mapped IOVA for any
device attached to one of our DMA ops domain.

At the moment, the allocation of the mapping may be done when composing
the message. However, the composing may be done in non-preemtible
context while the allocation requires to be called from preemptible
context.

A follow-up change will split the current logic in two functions
requiring to keep an IOMMU cookie per MSI.

A new field is introduced in msi_desc to store an IOMMU cookie. As the
cookie may not be required in some configuration, the field is protected
under a new config CONFIG_IRQ_MSI_IOMMU.

A pair of helpers has also been introduced to access the field.

Signed-off-by: Julien Grall <julien.grall@arm.com>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
2019-05-03 15:19:20 +01:00
..
affinity.c genirq/affinity: Remove the leftovers of the original set support 2019-02-18 11:21:29 +01:00
autoprobe.c genirq: Cleanup top of file comments 2018-03-20 14:23:27 +01:00
chip.c genirq: Introduce irq_chip_{request,release}_resource_parent() apis 2019-05-01 10:41:38 +01:00
cpuhotplug.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
debug.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk 2018-02-01 13:36:15 -08:00
debugfs.c irqchip updates for Linux 5.1 2019-02-23 10:53:31 +01:00
devres.c genirq/devres: Remove excess parameter from kernel doc 2019-03-22 13:34:12 +01:00
dummychip.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
generic-chip.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
handle.c genirq: Correctly annotate implicit fall through 2019-01-15 10:40:53 +01:00
internals.h irqchip updates for Linux 5.1 2019-02-23 10:53:31 +01:00
ipi.c genirq: Fix various typos in comments 2018-12-18 14:22:28 +01:00
irq_sim.c irq/irq_sim: add irq_set_type() callback 2019-02-19 17:42:28 +01:00
irqdesc.c genirq: Initialize request_mutex if CONFIG_SPARSE_IRQ=n 2019-04-05 14:37:56 +02:00
irqdomain.c irq/irqdomain: Fix typo in the comment on top of __irq_domain_alloc_irqs() 2019-04-29 15:45:00 +01:00
Kconfig genirq/msi: Add a new field in msi_desc to store an IOMMU cookie 2019-05-03 15:19:20 +01:00
Makefile Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-13 17:33:11 -08:00
manage.c genirq: Mark expected switch case fall-through 2019-03-23 12:32:01 +01:00
matrix.c genirq/matrix: Improve target CPU selection for managed interrupts. 2018-11-06 23:20:13 +01:00
migration.c genirq/migration: Avoid out of line call if pending is not set 2018-06-06 15:18:20 +02:00
msi.c genirq/core: Introduce struct irq_affinity_desc 2018-12-19 11:32:08 +01:00
pm.c genirq: Add missing SPDX identifiers 2018-03-20 14:23:28 +01:00
proc.c genirq: Speedup show_interrupts() 2018-06-22 14:22:58 +02:00
resend.c genirq: Cleanup top of file comments 2018-03-20 14:23:27 +01:00
settings.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
spurious.c genirq: Fix various typos in comments 2018-12-18 14:22:28 +01:00
timings.c genirq: Remove license boilerplate/references 2018-03-20 14:23:28 +01:00