mbox series

[0/4] Remove support for Hyper-V 2008 and 2008R2/Win7

Message ID 1651509391-2058-1-git-send-email-mikelley@microsoft.com
Headers show
Series Remove support for Hyper-V 2008 and 2008R2/Win7 | expand

Message

Michael Kelley May 2, 2022, 4:36 p.m. UTC
Linux code for running as a Hyper-V guest includes special cases for the
first released versions of Hyper-V: 2008 and 2008R2/Windows 7. These
versions were very thinly used for running Linux guests when first
released more than 12 years ago, and they are now out of support
(except for extended security updates). As initial versions, they
lack the performance features needed for effective production usage
of Linux guests. In total, there's no need to continue to support
the latest Linux kernels on these versions of Hyper-V.

Simplify the code for running on Hyper-V by removing the special
cases. This includes removing the negotiation of the VMbus protocol
versions for 2008 and 2008R2, 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 drivers have driver-specific protocols with the Hyper-V host and
may have versions of those protocols that are limited to 2008 and
2008R2. This patch set does the clean-up only for the top-level
VMbus protocol versions, and not the driver-specific protocols.
Cleaning up the driver-specific protocols can be done with
follow-on patches.

There's no specific urgency to removing the special case code for
2008 and 2008R2, 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 already past the point that it has any value.

Michael Kelley (4):
  Drivers: hv: vmbus: Remove support for Hyper-V 2008 and Hyper-V
    2008R2/Win7
  scsi: storvsc: Remove support for Hyper-V 2008 and 2008R2/Win7
  video: hyperv_fb: Remove support for Hyper-V 2008 and 2008R2/Win7
  drm/hyperv: Remove support for Hyper-V 2008 and 2008R2/Win7

 drivers/gpu/drm/hyperv/hyperv_drm_proto.c | 23 ++++--------
 drivers/hv/channel_mgmt.c                 | 29 ++++++---------
 drivers/hv/connection.c                   |  6 ++--
 drivers/hv/vmbus_drv.c                    | 60 +++++++------------------------
 drivers/scsi/storvsc_drv.c                | 36 +++++--------------
 drivers/video/fbdev/hyperv_fb.c           | 23 ++----------
 include/linux/hyperv.h                    | 10 ++++--
 7 files changed, 52 insertions(+), 135 deletions(-)

Comments

Michael Kelley May 8, 2022, 3:43 p.m. UTC | #1
From: Pavel Machek <pavel@ucw.cz> Sent: Wednesday, May 4, 2022 10:23 AM
> 
> Hi!
> 
> > Linux code for running as a Hyper-V guest includes special cases for the
> > first released versions of Hyper-V: 2008 and 2008R2/Windows 7. These
> > versions were very thinly used for running Linux guests when first
> > released more than 12 years ago, and they are now out of support
> > (except for extended security updates). As initial versions, they
> > lack the performance features needed for effective production usage
> > of Linux guests. In total, there's no need to continue to support
> > the latest Linux kernels on these versions of Hyper-V.
> >
> > Simplify the code for running on Hyper-V by removing the special
> > cases. This includes removing the negotiation of the VMbus protocol
> > versions for 2008 and 2008R2, 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.
> 
> > 2008 and 2008R2, 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 already past the point that it has any value.
> 
> Normal way to do such deprecations is to put printks in first, then hide it
> under config option noone sets, and wait for year or so if anyone complains.
> 

Are there any examples of doing these deprecation steps that you can
point me to?  I did not see anything in the Documentation directory
covering the deprecation process you describe.

I'd also make the case that we are already well down the deprecation
path.  For at least the last 5 years, the public Microsoft documentation
for Linux guests has listed Hyper-V 2012 R2 as the earliest supported
Hyper-V version.  Other current and new Microsoft products aren't
supported on Hyper-V 2008/Win7 either -- the usual Word/Excel/
PowerPoint, etc. fall into this category as well as Windows 10 and Windows
11 as guests.  So for a rare user who might still be using Hyper-V
2008/Win7, there's no reasonable expectation of being able to run
the latest upstream Linux kernel on Hyper-V 2008/Win7.  Other
current software doesn't.

Given that running Linux guests on Hyper-V sort of implicitly
combines Microsoft commercial thinking and Linux open source
thinking about version support, I could see putting the old Hyper-V
version support under a config option that defaults to "no", with a 
deprecation comment, and seeing if that garners any complaints.
But given the broader situation with Hyper-V 2008/Win7, in my
judgment even that is more cautious than we need to be.

Michael

> We can't really remove code that is in use.
> 
> Best regards,
> 									Pavel
Wei Liu May 9, 2022, 10:44 a.m. UTC | #2
On Sun, May 08, 2022 at 03:43:26PM +0000, Michael Kelley (LINUX) wrote:
> From: Pavel Machek <pavel@ucw.cz> Sent: Wednesday, May 4, 2022 10:23 AM
> > 
> > Hi!
> > 
> > > Linux code for running as a Hyper-V guest includes special cases for the
> > > first released versions of Hyper-V: 2008 and 2008R2/Windows 7. These
> > > versions were very thinly used for running Linux guests when first
> > > released more than 12 years ago, and they are now out of support
> > > (except for extended security updates). As initial versions, they
> > > lack the performance features needed for effective production usage
> > > of Linux guests. In total, there's no need to continue to support
> > > the latest Linux kernels on these versions of Hyper-V.
> > >
> > > Simplify the code for running on Hyper-V by removing the special
> > > cases. This includes removing the negotiation of the VMbus protocol
> > > versions for 2008 and 2008R2, 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.
> > 
> > > 2008 and 2008R2, 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 already past the point that it has any value.
> > 
> > Normal way to do such deprecations is to put printks in first, then hide it
> > under config option noone sets, and wait for year or so if anyone complains.
> > 
> 
> Are there any examples of doing these deprecation steps that you can
> point me to?  I did not see anything in the Documentation directory
> covering the deprecation process you describe.
> 
> I'd also make the case that we are already well down the deprecation
> path.  For at least the last 5 years, the public Microsoft documentation
> for Linux guests has listed Hyper-V 2012 R2 as the earliest supported
> Hyper-V version.  Other current and new Microsoft products aren't
> supported on Hyper-V 2008/Win7 either -- the usual Word/Excel/
> PowerPoint, etc. fall into this category as well as Windows 10 and Windows
> 11 as guests.  So for a rare user who might still be using Hyper-V
> 2008/Win7, there's no reasonable expectation of being able to run
> the latest upstream Linux kernel on Hyper-V 2008/Win7.  Other
> current software doesn't.
> 
> Given that running Linux guests on Hyper-V sort of implicitly
> combines Microsoft commercial thinking and Linux open source
> thinking about version support, I could see putting the old Hyper-V
> version support under a config option that defaults to "no", with a 
> deprecation comment, and seeing if that garners any complaints.
> But given the broader situation with Hyper-V 2008/Win7, in my
> judgment even that is more cautious than we need to be.
> 

In general we should trust the judgement from the main developers.

There have been recent examples that things are dropped without any
deprecation warnings. See below.

By and large the usefulness of the code in kernel relies on a lot of
factors. In this particular case, I don't think adding a KCONFIG makes
sense. Printing a warning in _guest_ won't help. Whoever still runs
these ancient versions has had ample warnings.

Thanks,
Wei.

commit c645a883df34ee10b884ec921e850def54b7f461
Author:     NeilBrown <neilb@suse.de>
AuthorDate: Thu Sep 2 11:15:29 2021 +1000
Commit:     J. Bruce Fields <bfields@redhat.com>
CommitDate: Sat Oct 2 15:51:10 2021 -0400

    NFSD: drop support for ancient filehandles

    Filehandles not in the "new" or "version 1" format have not been handed
    out for new mounts since Linux 2.4 which was released 20 years ago.
    I think it is safe to say that no such file handles are still in use,
    and that we can drop support for them.

    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>

commit 9b472e85d098a40b84dd8b33fbf8a15ab1452025
Author:     Nick Desaulniers <ndesaulniers@google.com>
AuthorDate: Thu May 6 18:04:54 2021 -0700
Commit:     Linus Torvalds <torvalds@linux-foundation.org>
CommitDate: Fri May 7 00:26:32 2021 -0700

    gcov: clang: drop support for clang-10 and older

    LLVM changed the expected function signatures for llvm_gcda_start_file()
    and llvm_gcda_emit_function() in the clang-11 release.  Drop the older
    implementations and require folks to upgrade their compiler if they're
    interested in GCOV support.

    Link: https://reviews.llvm.org/rGcdd683b516d147925212724b09ec6fb792a40041
    Link: https://reviews.llvm.org/rG13a633b438b6500ecad9e4f936ebadf3411d0f44
    Link: https://lkml.kernel.org/r/20210312224132.3413602-3-ndesaulniers@google.com
    Link: https://lkml.kernel.org/r/20210413183113.2977432-1-ndesaulniers@google.com
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Suggested-by: Nathan Chancellor <nathan@kernel.org>
    Acked-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Fangrui Song <maskray@google.com>
    Cc: Prasad Sodagudi <psodagud@quicinc.com>
    Cc: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Wei Liu May 11, 2022, 2:42 p.m. UTC | #3
On Mon, May 02, 2022 at 09:36:27AM -0700, Michael Kelley wrote:
> Linux code for running as a Hyper-V guest includes special cases for the
> first released versions of Hyper-V: 2008 and 2008R2/Windows 7. These
> versions were very thinly used for running Linux guests when first
> released more than 12 years ago, and they are now out of support
> (except for extended security updates). As initial versions, they
> lack the performance features needed for effective production usage
> of Linux guests. In total, there's no need to continue to support
> the latest Linux kernels on these versions of Hyper-V.
> 
> Simplify the code for running on Hyper-V by removing the special
> cases. This includes removing the negotiation of the VMbus protocol
> versions for 2008 and 2008R2, 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 drivers have driver-specific protocols with the Hyper-V host and
> may have versions of those protocols that are limited to 2008 and
> 2008R2. This patch set does the clean-up only for the top-level
> VMbus protocol versions, and not the driver-specific protocols.
> Cleaning up the driver-specific protocols can be done with
> follow-on patches.
> 
> There's no specific urgency to removing the special case code for
> 2008 and 2008R2, 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 already past the point that it has any value.
> 
> Michael Kelley (4):
>   Drivers: hv: vmbus: Remove support for Hyper-V 2008 and Hyper-V
>     2008R2/Win7
>   scsi: storvsc: Remove support for Hyper-V 2008 and 2008R2/Win7
>   video: hyperv_fb: Remove support for Hyper-V 2008 and 2008R2/Win7
>   drm/hyperv: Remove support for Hyper-V 2008 and 2008R2/Win7

Applied to hyperv-next.