aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Wang <jasowang@redhat.com>2013-10-14 23:18:58 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-11-04 07:31:03 -0500
commitf02721718c7dcd4cb949fb0c0689e19a66c8c6ef (patch)
tree7db7fefdfa70c7c6d9bd05c455fde4e02eefd450
parent608be70366c3abaa402ba9d6a8427b1b979633cf (diff)
virtio-net: don't respond to cpu hotplug notifier if we're not ready
[ 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>
-rw-r--r--drivers/net/virtio_net.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 42d670a468f8..542c3f2d8400 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1097,6 +1097,11 @@ static int virtnet_cpu_callback(struct notifier_block *nfb,
1097{ 1097{
1098 struct virtnet_info *vi = container_of(nfb, struct virtnet_info, nb); 1098 struct virtnet_info *vi = container_of(nfb, struct virtnet_info, nb);
1099 1099
1100 mutex_lock(&vi->config_lock);
1101
1102 if (!vi->config_enable)
1103 goto done;
1104
1100 switch(action & ~CPU_TASKS_FROZEN) { 1105 switch(action & ~CPU_TASKS_FROZEN) {
1101 case CPU_ONLINE: 1106 case CPU_ONLINE:
1102 case CPU_DOWN_FAILED: 1107 case CPU_DOWN_FAILED:
@@ -1109,6 +1114,9 @@ static int virtnet_cpu_callback(struct notifier_block *nfb,
1109 default: 1114 default:
1110 break; 1115 break;
1111 } 1116 }
1117
1118done:
1119 mutex_unlock(&vi->config_lock);
1112 return NOTIFY_OK; 1120 return NOTIFY_OK;
1113} 1121}
1114 1122