bus: fsl-mc: use raw spin lock to serialize mc cmds
authorLaurentiu Tudor <laurentiu.tudor@nxp.com>
Fri, 17 Jul 2020 15:47:59 +0000 (18:47 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Jul 2020 14:54:33 +0000 (16:54 +0200)
Replace the spinlock that serializes the MC commands with a raw
spinlock. This is needed for the RT kernel because there are MC
commands sent in interrupt context.

Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Reviewed-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
Link: https://lore.kernel.org/r/20200717154800.17169-3-ioana.ciornei@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/bus/fsl-mc/mc-io.c
drivers/bus/fsl-mc/mc-sys.c
include/linux/fsl/mc.h

index 6ae48ad..a30b53f 100644 (file)
@@ -82,7 +82,7 @@ int __must_check fsl_create_mc_io(struct device *dev,
        mc_io->portal_phys_addr = mc_portal_phys_addr;
        mc_io->portal_size = mc_portal_size;
        if (flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)
-               spin_lock_init(&mc_io->spinlock);
+               raw_spin_lock_init(&mc_io->spinlock);
        else
                mutex_init(&mc_io->mutex);
 
index 3221a7f..85a0225 100644 (file)
@@ -251,7 +251,7 @@ int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd)
                return -EINVAL;
 
        if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)
-               spin_lock_irqsave(&mc_io->spinlock, irq_flags);
+               raw_spin_lock_irqsave(&mc_io->spinlock, irq_flags);
        else
                mutex_lock(&mc_io->mutex);
 
@@ -287,7 +287,7 @@ int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd)
        error = 0;
 common_exit:
        if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)
-               spin_unlock_irqrestore(&mc_io->spinlock, irq_flags);
+               raw_spin_unlock_irqrestore(&mc_io->spinlock, irq_flags);
        else
                mutex_unlock(&mc_io->mutex);
 
index cdb03ac..a428c61 100644 (file)
@@ -339,7 +339,7 @@ struct fsl_mc_io {
                 * This field is only meaningful if the
                 * FSL_MC_IO_ATOMIC_CONTEXT_PORTAL flag is set
                 */
-               spinlock_t spinlock;    /* serializes mc_send_command() */
+               raw_spinlock_t spinlock; /* serializes mc_send_command() */
        };
 };