| From 035546179039d430b32b2cace256552455abf061 Mon Sep 17 00:00:00 2001 | 
 | From: Laurentiu Tudor <laurentiu.tudor@nxp.com> | 
 | Date: Thu, 29 Aug 2019 11:39:45 +0300 | 
 | Subject: [PATCH] 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> | 
 | --- | 
 |  drivers/bus/fsl-mc/mc-io.c  | 2 +- | 
 |  drivers/bus/fsl-mc/mc-sys.c | 4 ++-- | 
 |  include/linux/fsl/mc.h      | 2 +- | 
 |  3 files changed, 4 insertions(+), 4 deletions(-) | 
 |  | 
 | --- a/drivers/bus/fsl-mc/mc-io.c | 
 | +++ b/drivers/bus/fsl-mc/mc-io.c | 
 | @@ -82,7 +82,7 @@ int __must_check fsl_create_mc_io(struct | 
 |  	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); | 
 |   | 
 | --- a/drivers/bus/fsl-mc/mc-sys.c | 
 | +++ b/drivers/bus/fsl-mc/mc-sys.c | 
 | @@ -251,7 +251,7 @@ int mc_send_command(struct fsl_mc_io *mc | 
 |  		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 | 
 |  	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); | 
 |   | 
 | --- a/include/linux/fsl/mc.h | 
 | +++ b/include/linux/fsl/mc.h | 
 | @@ -340,7 +340,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() */ | 
 |  	}; | 
 |  }; | 
 |   |