Re: [PATCH 0/7] hv: CPU onlining/offlining fixes and improvements

From: Vitaly Kuznetsov
Date: Mon Nov 28 2016 - 04:12:18 EST

Dexuan Cui <decui@xxxxxxxxxxxxx> writes:

>> From: Stephen Hemminger [mailto:stephen@xxxxxxxxxxxxxxxxxx]
>> Sent: Sunday, November 27, 2016 01:06
>> To: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>
>> Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; KY Srinivasan
>> <kys@xxxxxxxxxxxxx>; Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>; Dexuan Cui
>> <decui@xxxxxxxxxxxxx>
>> Subject: Re: [PATCH 0/7] hv: CPU onlining/offlining fixes and improvements
>> On Fri, 25 Nov 2016 13:48:36 +0100
>> Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> wrote:
>> > Some time ago we forbade CPU offlining for Hyper-V and this was sufficient
>> > if you boot with all CPUs onlined. Turns out, people may want to limit the
>> > number online CPUs by passing 'maxcpus=' kernel parameter and we hit a
>> > crash in Hyper-V code in this case. After some thinking, I think we may not
>> > only fix the crash but also make the offlining prevention fine-grained: we
>> > need to prevent from offlining CPUs which have VMBus channels attached
>> > only. All offlined CPUs may always be onlined.
>> >
>> As a temporary solution this is ok, but long term we need to support
>> dynamic CPU online/offline.
> If a CPU is bound to some channels, it seems impossible to make it offline,
> unless Hyper-V supplies a mechanism to dynamically rebind the channels (i.e.
> without closing & opening the channels) to another CPU, e.g. CPU0.
> Currently it looks there is no such mechanism.

Exactly. Offlining a CPU with an attached active VMBus channel means
killing the device and unless we're offereed an API to rebind it to some
other CPU there is no point in allowing that. We may, however, allow
offlining CPUs with sub-channels attached by closing these sub-channels,
not sure if we want to.