> > From: Michael Kelley <[email protected]> > > Linux code for running as a Hyper-V guest includes special cases for running > on > Hyper-V in WS2012/2012R2 and Windows 8/8.1. These versions were initially > released 14 years ago, and official support ended in 2023 (unless a customer > has contracted for extended security updates). Given the release of subsequent > versions with improved functionality, there's no need to continue to support > the > latest Linux kernels on these versions of Hyper-V. If someone is running > Linux on > one of these older Hyper-V versions and doesn't want to upgrade, they can > continue to do so as presumably they don't want upgrade the Linux version > either.
This patch set has significant implication for customer running older Hyper-V versions. There are probably a large number out there. Is this clearly communicated to all the customers in the field? Is there a link from official Microsoft statements on support statement of this: "they can continue to do so as presumably they don't want upgrade the Linux version either." Please point to the statement that they can't upgrade Linux. A link in the commit message will be helpful. Thanks, Long > > Simplify Linux code by removing special cases for running on these old > versions > of Hyper-V. This includes removing the negotiation of the VMBus protocol > versions for WS2012/Win8, and the special case code based on those VMBus > protocol versions. Changes are in the core VMBus code and several drivers for > synthetic VMBus devices. > > Some VMBus drivers have device-specific protocols with the Hyper-V host. > Further simplify the code by removing the use of protocol versions that are > specific to WS2012/Win8 and earlier. > > Finally, the WS2012/Win8 versions of Hyper-V were the last to use messages to > deliver synthetic timer interrupts. Starting in WS2016/Win10, stimer > interrupts > are delivered to their own assigned interrupt vector (called "Direct Mode"). > So > remove the code for handling timer interrupts delivered as messages. This > removal has a broader benefit in removing a key blocker to disentangling > VMBus code (which handles the messages) and stimer code, as they should be > independent of each other. The final disentangling will come as a follow-on > patch set. > > Testing: > * VM on local Hyper-V on up-to-date Windows 11 > * Added temp debug code to suppress Direct Mode enumeration. Fallback > to LAPIC timer worked as expected (x86/x64 only) > * Azure VM DC16eds v6: TDX CoCo VM with HvLite paravisor > * Azure VM DC16ads v6: SEV-SNP VM with an older paravisor > * Azure VM D16alds_v7: normal AMD x86 VM with HvLite paravisor > * Azure VM D16plds v6: normal ARM64 VM with MSFT Cobalt processor > * Not tested running in VTL2 > > There's no specific urgency to removing the special case code for > WS2012/Win8, so if the broader Linux kernel community surfaces a reason why > this clean-up should not be done now, we can wait. > But I think we want to eventually stop carrying around this extra baggage, and > based on discussions with the Hyper-V team within Microsoft, we're past the > point that it has any value. > > Michael Kelley (6): > Drivers: hv: Remove support for WS2012/2012R2 & Win8/8.1 version of > Hyper-V > hv_sock: Remove check for old Hyper-V hosts > hv_netvsc: Remove GPADL teardown special case for old Hyper-V hosts > drm_hyperv: Remove support for synth video protocol of old Hyper-V > hosts > scsi: storvsc: Remove support for storvsc protocol of old Hyper-V > hosts > clocksource: hyper-v: Remove support for stimer interrupts in message > mode > > arch/x86/hyperv/hv_init.c | 17 +-- > arch/x86/kernel/cpu/mshyperv.c | 4 +- > drivers/clocksource/hyperv_timer.c | 150 +++------------------- > drivers/gpu/drm/hyperv/hyperv_drm_proto.c | 33 ++--- > drivers/hv/channel_mgmt.c | 4 - > drivers/hv/connection.c | 8 +- > drivers/hv/hv.c | 4 - > drivers/hv/hv_balloon.c | 36 +++--- > drivers/hv/hv_snapshot.c | 5 - > drivers/hv/vmbus_drv.c | 10 +- > drivers/net/hyperv/netvsc.c | 20 +-- > drivers/scsi/storvsc_drv.c | 53 ++------ > include/clocksource/hyperv_timer.h | 6 - > include/linux/hyperv.h | 5 +- > net/vmw_vsock/hyperv_transport.c | 3 - > 15 files changed, 76 insertions(+), 282 deletions(-) > > -- > 2.25.1

