03 May, 2019

1 commit

  • The functions mbi_compose_m{b, s}i_msg may be called from non-preemptible
    context. However, on RT, iommu_dma_map_msi_msg() requires to be called
    from a preemptible context.

    A recent patch split iommu_dma_map_msi_msg in two new functions:
    one that should be called in preemptible context, the other does
    not have any requirement.

    The GICv3 MSI driver is reworked to avoid executing preemptible code in
    non-preemptible context. This can be achieved by preparing the MSI
    mapping when allocating the MSI interrupt.

    Signed-off-by: Julien Grall
    [maz: only call iommu_dma_prepare_msi once, fix commit log accordingly]
    Signed-off-by: Marc Zyngier

    Julien Grall
     

18 Jan, 2019

1 commit


13 May, 2018

2 commits

  • You would hope that if you have a GICv3 in your system, you'd use the ITS,
    as it provides a large interrupt ID space and device isolation. Sadly,
    some SoC integrations are less than perfect, and the ITS is not usesable on
    those.

    The only solution for these systems is to use the MBI interface, and
    rely on a very small number of possible vectors.

    This patch thus adds minimal support for PCI/MSI on top of the GICv3
    MBI driver. Please don't use it if you can avoid it.

    Signed-off-by: Marc Zyngier
    Signed-off-by: Thomas Gleixner
    Tested-by: Ard Biesheuvel
    Tested-by: Srinivas Kandagatla
    Cc: Rob Herring
    Cc: Jason Cooper
    Cc: Thomas Petazzoni
    Cc: Miquel Raynal
    Link: https://lkml.kernel.org/r/20180508121438.11301-9-marc.zyngier@arm.com

    Marc Zyngier
     
  • GICv3 offers the possibility to signal SPIs using a pair of doorbells
    (SETPI, CLRSPI) under the name of Message Based Interrupts (MBI).
    They can be used as either traditional (edge) MSIs, or the more exotic
    level-triggered flavour.

    Let's implement support for platform MSI, which is the original intent
    for this feature.

    Signed-off-by: Marc Zyngier
    Signed-off-by: Thomas Gleixner
    Cc: Rob Herring
    Cc: Jason Cooper
    Cc: Ard Biesheuvel
    Cc: Srinivas Kandagatla
    Cc: Thomas Petazzoni
    Cc: Miquel Raynal
    Link: https://lkml.kernel.org/r/20180508121438.11301-8-marc.zyngier@arm.com

    Marc Zyngier