From: Andrea Parri (Microsoft) <parri.andrea@xxxxxxxxx> Sent: Sunday, April 5, 2020 5:15 PM > > A Linux guest have to pick a "connect CPU" to communicate with the > Hyper-V host. This CPU can not be taken offline because Hyper-V does > not provide a way to change that CPU assignment. > > Current code sets the connect CPU to whatever CPU ends up running the > function vmbus_negotiate_version(), and this will generate problems if > that CPU is taken offine. > > Establish CPU0 as the connect CPU, and add logics to prevents the > connect CPU from being taken offline. We could pick some other CPU, > and we could pick that "other CPU" dynamically if there was a reason to > do so at some point in the future. But for now, #defining the connect > CPU to 0 is the most straightforward and least complex solution. > > While on this, add inline comments explaining "why" offer and rescind > messages should not be handled by a same serialized work queue. > > Suggested-by: Dexuan Cui <decui@xxxxxxxxxxxxx> > Signed-off-by: Andrea Parri (Microsoft) <parri.andrea@xxxxxxxxx> > Reviewed-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > --- > drivers/hv/connection.c | 20 +------------------- > drivers/hv/hv.c | 7 +++++++ > drivers/hv/hyperv_vmbus.h | 11 ++++++----- > drivers/hv/vmbus_drv.c | 20 +++++++++++++++++--- > 4 files changed, 31 insertions(+), 27 deletions(-) Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx>