| From 3f1db36c01909701d0e34cd2413a1127e144bcc3 Mon Sep 17 00:00:00 2001 |
| From: Jason Wang <jasowang@redhat.com> |
| Date: Tue, 15 Oct 2013 11:18:58 +0800 |
| Subject: virtio-net: don't respond to cpu hotplug notifier if we're not ready |
| |
| From: Jason Wang <jasowang@redhat.com> |
| |
| [ Upstream commit 3ab098df35f8b98b6553edc2e40234af512ba877 ] |
| |
| 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). |
| |
| Acked-by: Michael S. Tsirkin <mst@redhat.com> |
| Cc: Rusty Russell <rusty@rustcorp.com.au> |
| Cc: Michael S. Tsirkin <mst@redhat.com> |
| Cc: Wanlong Gao <gaowanlong@cn.fujitsu.com> |
| Reviewed-by: Wanlong Gao <gaowanlong@cn.fujitsu.com> |
| Signed-off-by: Jason Wang <jasowang@redhat.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/virtio_net.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| --- a/drivers/net/virtio_net.c |
| +++ b/drivers/net/virtio_net.c |
| @@ -1094,6 +1094,11 @@ static int virtnet_cpu_callback(struct n |
| { |
| 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: |
| @@ -1106,6 +1111,9 @@ static int virtnet_cpu_callback(struct n |
| default: |
| break; |
| } |
| + |
| +done: |
| + mutex_unlock(&vi->config_lock); |
| return NOTIFY_OK; |
| } |
| |