mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 00:41:17 +00:00
46 lines
1.3 KiB
Diff
46 lines
1.3 KiB
Diff
|
--- a/src/drv_mei_cpe_common.c
|
||
|
+++ b/src/drv_mei_cpe_common.c
|
||
|
@@ -104,6 +104,8 @@ IFX_uint32_t MEI_FsmStateSetMsgPreAction
|
||
|
MEI_DEVCFG_DATA_T MEI_DevCfgData;
|
||
|
#endif
|
||
|
|
||
|
+static DEFINE_SPINLOCK(MEI_InterruptLock);
|
||
|
+
|
||
|
/* ============================================================================
|
||
|
Proc-FS and debug variable definitions
|
||
|
========================================================================= */
|
||
|
@@ -2134,6 +2136,9 @@ IFX_int32_t MEI_ProcessIntPerIrq(MEIX_CN
|
||
|
#if (MEI_SUPPORT_DEBUG_STREAMS == 1)
|
||
|
IFX_int_t extraDbgStreamLoop = 0;
|
||
|
#endif
|
||
|
+ unsigned long flags;
|
||
|
+
|
||
|
+ spin_lock_irqsave(&MEI_InterruptLock, flags);
|
||
|
|
||
|
/* get the actual chip device from the list and step through the VRX devices */
|
||
|
while(pNextXCntrl)
|
||
|
@@ -2167,6 +2172,8 @@ IFX_int32_t MEI_ProcessIntPerIrq(MEIX_CN
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
+ spin_unlock_irqrestore(&MEI_InterruptLock, flags);
|
||
|
+
|
||
|
return meiIntCnt;
|
||
|
}
|
||
|
|
||
|
@@ -2639,9 +2646,14 @@ IFX_int32_t MEI_MsgSendPreAction(
|
||
|
*/
|
||
|
IFX_void_t MEI_DisableDeviceInt(MEI_DEV_T *pMeiDev)
|
||
|
{
|
||
|
+ unsigned long flags;
|
||
|
+ spin_lock_irqsave(&MEI_InterruptLock, flags);
|
||
|
+
|
||
|
MEI_MaskInterrupts( &pMeiDev->meiDrvCntrl,
|
||
|
ME_ARC2ME_INTERRUPT_MASK_ALL);
|
||
|
|
||
|
+ spin_unlock_irqrestore(&MEI_InterruptLock, flags);
|
||
|
+
|
||
|
return;
|
||
|
}
|
||
|
|