Commit 9a872def authored by Laurentiu Tudor's avatar Laurentiu Tudor Committed by Greg Kroah-Hartman

bus: fsl-mc: use raw spin lock to serialize mc cmds

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: default avatarLaurentiu Tudor <laurentiu.tudor@nxp.com>
Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
Reviewed-by: default avatarLaurentiu Tudor <laurentiu.tudor@nxp.com>
Link: https://lore.kernel.org/r/20200717154800.17169-3-ioana.ciornei@nxp.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a3b7a581
...@@ -82,7 +82,7 @@ int __must_check fsl_create_mc_io(struct device *dev, ...@@ -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_phys_addr = mc_portal_phys_addr;
mc_io->portal_size = mc_portal_size; mc_io->portal_size = mc_portal_size;
if (flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL) if (flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)
spin_lock_init(&mc_io->spinlock); raw_spin_lock_init(&mc_io->spinlock);
else else
mutex_init(&mc_io->mutex); mutex_init(&mc_io->mutex);
......
...@@ -251,7 +251,7 @@ int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd) ...@@ -251,7 +251,7 @@ int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd)
return -EINVAL; return -EINVAL;
if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL) 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 else
mutex_lock(&mc_io->mutex); mutex_lock(&mc_io->mutex);
...@@ -287,7 +287,7 @@ int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd) ...@@ -287,7 +287,7 @@ int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd)
error = 0; error = 0;
common_exit: common_exit:
if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL) 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 else
mutex_unlock(&mc_io->mutex); mutex_unlock(&mc_io->mutex);
......
...@@ -339,7 +339,7 @@ struct fsl_mc_io { ...@@ -339,7 +339,7 @@ struct fsl_mc_io {
* This field is only meaningful if the * This field is only meaningful if the
* FSL_MC_IO_ATOMIC_CONTEXT_PORTAL flag is set * FSL_MC_IO_ATOMIC_CONTEXT_PORTAL flag is set
*/ */
spinlock_t spinlock; /* serializes mc_send_command() */ raw_spinlock_t spinlock; /* serializes mc_send_command() */
}; };
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment