genirq/msi: Add a new field in msi_desc to store an IOMMU cookie
authorJulien Grall <julien.grall@arm.com>
Wed, 1 May 2019 13:58:18 +0000 (14:58 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Fri, 3 May 2019 14:19:20 +0000 (15:19 +0100)
commitaaebdf8d68479f78d9f72b239684f70fbb0722c6
tree3e230716bc5a5db48c10f4241c58f752e4e9fb44
parent009669e7481361470f7667c96a96893c8ba5f461
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>
include/linux/msi.h
kernel/irq/Kconfig