|
@@ -2318,6 +2318,7 @@ static irqreturn_t device_intr(int irq, void *dev_instance) {
|
|
|
int handled = 0;
|
|
|
unsigned char byData = 0;
|
|
|
int ii = 0;
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr);
|
|
|
|
|
@@ -2331,7 +2332,8 @@ static irqreturn_t device_intr(int irq, void *dev_instance) {
|
|
|
|
|
|
handled = 1;
|
|
|
MACvIntDisable(pDevice->PortOffset);
|
|
|
- spin_lock_irq(&pDevice->lock);
|
|
|
+
|
|
|
+ spin_lock_irqsave(&pDevice->lock, flags);
|
|
|
|
|
|
//Make sure current page is 0
|
|
|
VNSvInPortB(pDevice->PortOffset + MAC_REG_PAGE1SEL, &byOrgPageSel);
|
|
@@ -2560,7 +2562,8 @@ static irqreturn_t device_intr(int irq, void *dev_instance) {
|
|
|
if (byOrgPageSel == 1)
|
|
|
MACvSelectPage1(pDevice->PortOffset);
|
|
|
|
|
|
- spin_unlock_irq(&pDevice->lock);
|
|
|
+ spin_unlock_irqrestore(&pDevice->lock, flags);
|
|
|
+
|
|
|
MACvIntEnable(pDevice->PortOffset, IMR_MASK_VALUE);
|
|
|
|
|
|
return IRQ_RETVAL(handled);
|