Drivers: hv: vmbus: fix init_vp_index() for reloading hv_netvsc
Dexuan Cui
maintainerPATCH 1/1 Drivers: hv: vmbus: fix init_vp_index() for reloading hv_netvsc
This fixes the recent commit:
Drivers: hv: vmbus: Further improve CPU affiliation logic
Without the fix, reloading hv_netvsc hangs the guest.
--- drivers/hv/channel_mgmt.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
drivers/hv/channel_mgmt.c +13 -0
@@ -458,6 +458,19 @@ static void init_vp_index(struct vmbus_channel *channel, const uuid_le *type_guicontinue ; } +if (cpumask_weight (&primary->alloced_cpus_in_node) == +cpumask_weight (cpumask_of_node (primary->numa_node))) { +/* +* We have cycled through all the CPUs in the node; +* reset the alloced map. +* This is necessary because we never clear +* primary->alloced_cpus_in_node in other places. +* We need this to "break" the loop when reloading +* hv_netvsc in SMP guest. +*/ +cpumask_clear (&primary->alloced_cpus_in_node); + } +if (!cpumask_test_cpu (cur_cpu, &primary->alloced_cpus_in_node)) { cpumask_set_cpu(cur_cpu,
Signature · 1 line
2.1.0
Dexuan Cui
maintainerQuoted 42 lines
From: devel [mailto:[email protected]] On Behalf Of Dexuan Cui
Sent: Wednesday, August 12, 2015 21:49
To: [email protected]; [email protected]; driverdev- [email protected]; [email protected]; [email protected]; [email protected]; KY Srinivasan <[email protected]>
Subject: [PATCH] Drivers: hv: vmbus: fixinit_vp_index()for reloadinghv_netvscThis fixes the recent commit:
Drivers: hv: vmbus: Further improve CPU affiliation logicWithout the fix, reloading
hv_netvschangs the guest.Signed-off-by Dexuan Cui <[email protected]>--- drivers/hv/channel_mgmt.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)drivers/hv/channel_mgmt.c +13
-0@@ -458,6 +458,19 @@ static void init_vp_index(struct vmbus_channel *channel, const uuid_le *type_gui continue; } +if (cpumask_weight (&primary->alloced_cpus_in_node) == +cpumask_weight (cpumask_of_node (primary->numa_node))) { +/* +* We have cycled through all the CPUs in the node; +* reset the alloced map. +* This is necessary because we never clear +* primary->alloced_cpus_in_node in other places. +* We need this to "break" the loop when reloading +* hv_netvsc in SMP guest. +*/ +cpumask_clear (&primary->alloced_cpus_in_node); + } +if (!cpumask_test_cpu (cur_cpu, &primary->alloced_cpus_in_node)) {
Quoted 2 lines
cpumask_set_cpu(cur_cpu,
--
Sorry, please drop the patch.
I shouldn't simply clear primary->alloced_cpus_in_node -- I didn't realize reloading hv_netvsc doesn't invoke init_vp_index() for the primary channel.
I'll make a V2 patch.
Thanks,
-- Dexuan
Quoted 2 lines · Dexuan Cui
Quoted 2 lines
This fixes the recent commit:
Drivers: hv: vmbus: Further improve CPU affiliation logic
Since you are redoing this anyway, include the git hash so we can look it up. In fact, just use the Fixes tag.
regards,
dan carpenter
Dexuan Cui
maintainerQuoted 10 lines
-----Original Message-----
From: Dan Carpenter [mailto:[email protected]]
Sent: Wednesday, August 12, 2015 21:06
To: Dexuan Cui <[email protected]>
Cc: [email protected]; [email protected]; driverdev- [email protected]; [email protected]; [email protected]; [email protected]; KY Srinivasan <[email protected]>
Subject: Re: [PATCH] Drivers: hv: vmbus: fixinit_vp_index()for reloadinghv_netvsc
Quoted 8 lines
Quoted 2 lines · Dexuan Cui
Quoted 2 lines
This fixes the recent commit:
Drivers: hv: vmbus: Further improve CPU affiliation logicSince you are redoing this anyway, include the git hash so we can look it up. In fact, just use the Fixes tag.
dan carpenter
Hmm, I didn't read your mail in time and sent out V2 just now... :-)
I'm working on the latest linux-next (next-20150810).
I didn't add the git hash ID because I think the hash of the patch of the same content can be different in different trees (like Greg's tree and linux-next)?
Thanks,
-- Dexuan
Quoted 8 lines · Dexuan Cui
Quoted 8 lines
From: Dan Carpenter [mailto:[email protected]]
Quoted 2 lines · Dexuan Cui
Quoted 2 lines
This fixes the recent commit:
Drivers: hv: vmbus: Further improve CPU affiliation logicSince you are redoing this anyway, include the git hash so we can look it up. In fact, just use the Fixes tag.
Quoted 8 lines
Quoted 1 line
dan carpenter
Hmm, I didn't read your mail in time and sent out V2 just now... :-)
I'm working on the latest linux-next (next-20150810).
I didn't add the git hash ID because I think the hash of the patch of the same content can be different in different trees (like Greg's tree and linux-next)?
Sometimes it can change, but mostly it doesn't. In this case it didn't.
The commit hash is based on the tree, the parent, and the content of the patch description. If we rebase, add a new signed-off-by or merge the patch through a different tree then the hash changes.
regards,
dan carpenter
Dexuan Cui
maintainerQuoted 28 lines
-----Original Message-----
From: Dan Carpenter [mailto:[email protected]]
Sent: Wednesday, August 12, 2015 22:11
To: Dexuan Cui <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Subject: Re: [PATCH] Drivers: hv: vmbus: fixinit_vp_index()for reloadinghv_netvscQuoted 8 lines · Dexuan Cui
Quoted 8 lines
From: Dan Carpenter [mailto:[email protected]]
Quoted 2 lines · Dexuan Cui
Quoted 2 lines
This fixes the recent commit:
Drivers: hv: vmbus: Further improve CPU affiliation logicSince you are redoing this anyway, include the git hash so we can look it up. In fact, just use the Fixes tag.
Quoted 8 lines
Quoted 1 line
dan carpenter
Hmm, I didn't read your mail in time and sent out V2 just now... :-)
I'm working on the latest linux-next (next-20150810).
I didn't add the git hash ID because I think the hash of the patch of the same content can be different in different trees (like Greg's tree and linux-next)?
Quoted 8 lines
Sometimes it can change, but mostly it doesn't. In this case it didn't.
The commit hash is based on the tree, the parent, and the content of the patch description. If we rebase, add a new signed-off-by or merge the patch through a different tree then the hash changes.
regards,
dan carpenter
Thanks a lot for the explanation, Dan!
I'll remember to add the hash in future.
-- Dexuan