Jason Wang
2013-Oct-15 03:18 UTC
[PATCH net V2 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready
We're trying to re-configure the affinity unconditionally in cpu hotplug callback. This may lead the issue during resuming from s3/s4 since - virt queues haven't been allocated at that time. - it's unnecessary since thaw method will re-configure the affinity. Fix this issue by checking the config_enable and do nothing is we're not ready. The bug were introduced by commit 8de4b2f3ae90c8fc0f17eeaab87d5a951b66ee17 (virtio-net: reset virtqueue affinity when doing cpu hotplug). Cc: Rusty Russell <rusty at rustcorp.com.au> Cc: Michael S. Tsirkin <mst at redhat.com> Cc: Wanlong Gao <gaowanlong at cn.fujitsu.com> Acked-by: Michael S. Tsirkin <mst at redhat.com> Reviewed-by: Wanlong Gao <gaowanlong at cn.fujitsu.com> Signed-off-by: Jason Wang <jasowang at redhat.com> --- The patch is need for 3.8 and above. --- drivers/net/virtio_net.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index defec2b..c4bc1cc 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -1116,6 +1116,11 @@ static int virtnet_cpu_callback(struct notifier_block *nfb, { struct virtnet_info *vi = container_of(nfb, struct virtnet_info, nb); + mutex_lock(&vi->config_lock); + + if (!vi->config_enable) + goto done; + switch(action & ~CPU_TASKS_FROZEN) { case CPU_ONLINE: case CPU_DOWN_FAILED: @@ -1128,6 +1133,9 @@ static int virtnet_cpu_callback(struct notifier_block *nfb, default: break; } + +done: + mutex_unlock(&vi->config_lock); return NOTIFY_OK; } -- 1.8.1.2
Jason Wang
2013-Oct-15 03:18 UTC
[PATCH net V2 2/2] virtio-net: refill only when device is up during setting queues
We used to schedule the refill work unconditionally after changing the number of queues. This may lead an issue if the device is not up. Since we only try to cancel the work in ndo_stop(), this may cause the refill work still work after removing the device. Fix this by only schedule the work when device is up. The bug were introduce by commit 9b9cd8024a2882e896c65222aa421d461354e3f2. (virtio-net: fix the race between channels setting and refill) Cc: Rusty Russell <rusty at rustcorp.com.au> Cc: Michael S. Tsirkin <mst at redhat.com> Signed-off-by: Jason Wang <jasowang at redhat.com> --- Changes from v1: add missing rtnl_lock() in virtnet_restore(). The patch were need for 3.10 and above. --- drivers/net/virtio_net.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index c4bc1cc..9fbdfcd 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -938,7 +938,9 @@ static int virtnet_set_queues(struct virtnet_info *vi, u16 queue_pairs) return -EINVAL; } else { vi->curr_queue_pairs = queue_pairs; - schedule_delayed_work(&vi->refill, 0); + /* virtnet_open() will refill when device is going to up. */ + if (dev->flags & IFF_UP) + schedule_delayed_work(&vi->refill, 0); } return 0; @@ -1741,7 +1743,9 @@ static int virtnet_restore(struct virtio_device *vdev) vi->config_enable = true; mutex_unlock(&vi->config_lock); + rtnl_lock(); virtnet_set_queues(vi, vi->curr_queue_pairs); + rtnl_unlock(); return 0; } -- 1.8.1.2
Rusty Russell
2013-Oct-16 23:27 UTC
[PATCH net V2 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready
Jason Wang <jasowang at redhat.com> writes:> We're trying to re-configure the affinity unconditionally in cpu hotplug > callback. This may lead the issue during resuming from s3/s4 since > > - virt queues haven't been allocated at that time. > - it's unnecessary since thaw method will re-configure the affinity. > > Fix this issue by checking the config_enable and do nothing is we're not ready. > > The bug were introduced by commit 8de4b2f3ae90c8fc0f17eeaab87d5a951b66ee17 > (virtio-net: reset virtqueue affinity when doing cpu hotplug). > > Cc: Rusty Russell <rusty at rustcorp.com.au> > Cc: Michael S. Tsirkin <mst at redhat.com> > Cc: Wanlong Gao <gaowanlong at cn.fujitsu.com> > Acked-by: Michael S. Tsirkin <mst at redhat.com> > Reviewed-by: Wanlong Gao <gaowanlong at cn.fujitsu.com> > Signed-off-by: Jason Wang <jasowang at redhat.com> > --- > The patch is need for 3.8 and above.Please put 'CC: stable at kernel.org # 3.8+' in the commit. (The specification of the stable line is poor, but that seems to be one common method). Cheers, Rusty.
Michael S. Tsirkin
2013-Oct-17 05:07 UTC
[PATCH net V2 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready
On Thu, Oct 17, 2013 at 09:57:41AM +1030, Rusty Russell wrote:> Jason Wang <jasowang at redhat.com> writes: > > We're trying to re-configure the affinity unconditionally in cpu hotplug > > callback. This may lead the issue during resuming from s3/s4 since > > > > - virt queues haven't been allocated at that time. > > - it's unnecessary since thaw method will re-configure the affinity. > > > > Fix this issue by checking the config_enable and do nothing is we're not ready. > > > > The bug were introduced by commit 8de4b2f3ae90c8fc0f17eeaab87d5a951b66ee17 > > (virtio-net: reset virtqueue affinity when doing cpu hotplug). > > > > Cc: Rusty Russell <rusty at rustcorp.com.au> > > Cc: Michael S. Tsirkin <mst at redhat.com> > > Cc: Wanlong Gao <gaowanlong at cn.fujitsu.com> > > Acked-by: Michael S. Tsirkin <mst at redhat.com> > > Reviewed-by: Wanlong Gao <gaowanlong at cn.fujitsu.com> > > Signed-off-by: Jason Wang <jasowang at redhat.com> > > --- > > The patch is need for 3.8 and above. > > Please put 'CC: stable at kernel.org # 3.8+' in the commit.Not if this is going in through the net tree.> > (The specification of the stable line is poor, but that seems to be one > common method). > > Cheers, > Rusty.
David Miller
2013-Oct-17 19:55 UTC
[PATCH net V2 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready
From: Jason Wang <jasowang at redhat.com> Date: Tue, 15 Oct 2013 11:18:58 +0800> We're trying to re-configure the affinity unconditionally in cpu hotplug > callback. This may lead the issue during resuming from s3/s4 since > > - virt queues haven't been allocated at that time. > - it's unnecessary since thaw method will re-configure the affinity. > > Fix this issue by checking the config_enable and do nothing is we're not ready. > > The bug were introduced by commit 8de4b2f3ae90c8fc0f17eeaab87d5a951b66ee17 > (virtio-net: reset virtqueue affinity when doing cpu hotplug). > > Cc: Rusty Russell <rusty at rustcorp.com.au> > Cc: Michael S. Tsirkin <mst at redhat.com> > Cc: Wanlong Gao <gaowanlong at cn.fujitsu.com> > Acked-by: Michael S. Tsirkin <mst at redhat.com> > Reviewed-by: Wanlong Gao <gaowanlong at cn.fujitsu.com> > Signed-off-by: Jason Wang <jasowang at redhat.com>Applied and queued up for -stable.
David Miller
2013-Oct-17 19:55 UTC
[PATCH net V2 2/2] virtio-net: refill only when device is up during setting queues
From: Jason Wang <jasowang at redhat.com> Date: Tue, 15 Oct 2013 11:18:59 +0800> We used to schedule the refill work unconditionally after changing the > number of queues. This may lead an issue if the device is not > up. Since we only try to cancel the work in ndo_stop(), this may cause > the refill work still work after removing the device. Fix this by only > schedule the work when device is up. > > The bug were introduce by commit 9b9cd8024a2882e896c65222aa421d461354e3f2. > (virtio-net: fix the race between channels setting and refill) > > Cc: Rusty Russell <rusty at rustcorp.com.au> > Cc: Michael S. Tsirkin <mst at redhat.com> > Signed-off-by: Jason Wang <jasowang at redhat.com>Applied and queued up for -stable, thanks Jason.
Reasonably Related Threads
- [PATCH net V2 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready
- [PATCH net 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready
- [PATCH net 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready
- [PATCH net V2 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready
- [PATCH net V2 1/2] virtio-net: don't respond to cpu hotplug notifier if we're not ready