mirror of https://gitee.com/openkylin/linux.git
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: 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>
This commit is contained in:
parent
a3b7a58182
commit
9a872def59
|
@ -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)
|
||||||
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)
|
||||||
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 {
|
||||||
* 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() */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue