Message ID | 1304706773-21348-1-git-send-email-roland@kernel.org |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, 6 May 2011, Roland Dreier wrote: > From: Roland Dreier <roland@purestorage.com> > > Using the vmxnet3 driver produces a lockdep warning because > Signed-off-by: Roland Dreier <roland@purestorage.com> Roland, thanks for the analysis and the patch. Signed-off-by: Shreyas N Bhatewara <sbhatewara@vmware.com> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> > On Fri, 6 May 2011, Roland Dreier wrote: > > > From: Roland Dreier <roland@purestorage.com> > > > > Using the vmxnet3 driver produces a lockdep warning because > > > Signed-off-by: Roland Dreier <roland@purestorage.com> > > > Roland, thanks for the analysis and the patch. > > Signed-off-by: Shreyas N Bhatewara <sbhatewara@vmware.com> Likewise, seems pretty sane to me. The command register operations are only control-path operations and disabling interrupts for the duration is probably not a big deal. Touching the cmd reg will result a VMEXIT, where the guest won't be processing interrupts anyway. Signed-off-by: Scott J. Goldman <scottjg@vmware.com> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Scott Goldman <scottjg@vmware.com> Date: Fri, 6 May 2011 13:10:29 -0700 >> >> On Fri, 6 May 2011, Roland Dreier wrote: >> >> > From: Roland Dreier <roland@purestorage.com> >> > >> > Using the vmxnet3 driver produces a lockdep warning because >> >> > Signed-off-by: Roland Dreier <roland@purestorage.com> >> >> >> Roland, thanks for the analysis and the patch. >> >> Signed-off-by: Shreyas N Bhatewara <sbhatewara@vmware.com> > > Likewise, seems pretty sane to me. The command register operations are only control-path operations and disabling interrupts for the duration is probably not a big deal. Touching the cmd reg will result a VMEXIT, where the guest won't be processing interrupts anyway. > > Signed-off-by: Scott J. Goldman <scottjg@vmware.com> Applied, thanks everyone. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 0d47c3a..c16ed96 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c @@ -178,6 +178,7 @@ static void vmxnet3_process_events(struct vmxnet3_adapter *adapter) { int i; + unsigned long flags; u32 events = le32_to_cpu(adapter->shared->ecr); if (!events) return; @@ -190,10 +191,10 @@ vmxnet3_process_events(struct vmxnet3_adapter *adapter) /* Check if there is an error on xmit/recv queues */ if (events & (VMXNET3_ECR_TQERR | VMXNET3_ECR_RQERR)) { - spin_lock(&adapter->cmd_lock); + spin_lock_irqsave(&adapter->cmd_lock, flags); VMXNET3_WRITE_BAR1_REG(adapter, VMXNET3_REG_CMD, VMXNET3_CMD_GET_QUEUE_STATUS); - spin_unlock(&adapter->cmd_lock); + spin_unlock_irqrestore(&adapter->cmd_lock, flags); for (i = 0; i < adapter->num_tx_queues; i++) if (adapter->tqd_start[i].status.stopped) @@ -2733,13 +2734,14 @@ static void vmxnet3_alloc_intr_resources(struct vmxnet3_adapter *adapter) { u32 cfg; + unsigned long flags; /* intr settings */ - spin_lock(&adapter->cmd_lock); + spin_lock_irqsave(&adapter->cmd_lock, flags); VMXNET3_WRITE_BAR1_REG(adapter, VMXNET3_REG_CMD, VMXNET3_CMD_GET_CONF_INTR); cfg = VMXNET3_READ_BAR1_REG(adapter, VMXNET3_REG_CMD); - spin_unlock(&adapter->cmd_lock); + spin_unlock_irqrestore(&adapter->cmd_lock, flags); adapter->intr.type = cfg & 0x3; adapter->intr.mask_mode = (cfg >> 2) & 0x3;