* [PATCH 1/6] Drivers: hv: Remove support for WS2012/2012R2 & Win8/8.1 version of Hyper-V
2026-07-30 18:48 [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Michael Kelley
@ 2026-07-30 18:48 ` Michael Kelley
2026-07-30 18:48 ` [PATCH 2/6] hv_sock: Remove check for old Hyper-V hosts Michael Kelley
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Michael Kelley @ 2026-07-30 18:48 UTC (permalink / raw)
To: kys, haiyangz, wei.liu, decui, longli, tglx, mingo, bp,
dave.hansen, hpa, daniel.lezcano, ssengar, maarten.lankhorst,
mripard, tzimmermann, airlied, simona, andrew+netdev, davem,
edumazet, kuba, pabeni, James.Bottomley, martin.petersen,
sgarzare, horms
Cc: x86, linux-hyperv, linux-kernel, dri-devel, netdev, linux-scsi,
virtualization
From: Michael Kelley <mhklinux@outlook.com>
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.
Simplify Linux code by removing special cases for running on these
old versions of Hyper-V. Remove the negotiation of the VMBus protocol
versions for WS2012/Win8, and remove special case code based on those
VMBus protocol versions. Also update the balloon and snapshot drivers
to no longer negotiate driver-specific protocol versions for these
older Hyper-V versions, and remove any related special cases.
Signed-off-by: Michael Kelley <mhklinux@outlook.com>
---
drivers/hv/channel_mgmt.c | 4 ----
drivers/hv/connection.c | 8 ++++----
drivers/hv/hv_balloon.c | 36 +++++++++++++++---------------------
drivers/hv/hv_snapshot.c | 5 -----
include/linux/hyperv.h | 5 ++---
5 files changed, 21 insertions(+), 37 deletions(-)
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
index 89d214dda360..84dc56a06c78 100644
--- a/drivers/hv/channel_mgmt.c
+++ b/drivers/hv/channel_mgmt.c
@@ -933,10 +933,6 @@ void vmbus_initiate_unload(bool crash)
if (xchg(&vmbus_connection.conn_state, DISCONNECTED) == DISCONNECTED)
return;
- /* Pre-Win2012R2 hosts don't support reconnect */
- if (vmbus_proto_version < VERSION_WIN8_1)
- return;
-
reinit_completion(&vmbus_connection.unload_event);
memset(&hdr, 0, sizeof(struct vmbus_channel_message_header));
hdr.msgtype = CHANNELMSG_UNLOAD;
diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
index 0fd50d4cb573..a9e87cf3f51c 100644
--- a/drivers/hv/connection.c
+++ b/drivers/hv/connection.c
@@ -47,7 +47,9 @@ EXPORT_SYMBOL_GPL(vmbus_proto_version);
/*
* Table of VMBus versions listed from newest to oldest.
- * VERSION_WIN7 and VERSION_WS2008 are no longer supported in
+ * VERSION_WIN7,VERSION_WS2008, VERSION_WIN8 (which is
+ * Windows Server 2012) and VERSION_WIN8_1 (which is
+ * Windows Server 2012 R2) are no longer supported in
* Linux guests and are not listed.
*/
static __u32 vmbus_versions[] = {
@@ -57,9 +59,7 @@ static __u32 vmbus_versions[] = {
VERSION_WIN10_V5_1,
VERSION_WIN10_V5,
VERSION_WIN10_V4_1,
- VERSION_WIN10,
- VERSION_WIN8_1,
- VERSION_WIN8
+ VERSION_WIN10
};
/*
diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c
index 42ce27be344d..9cba97e81111 100644
--- a/drivers/hv/hv_balloon.c
+++ b/drivers/hv/hv_balloon.c
@@ -58,6 +58,10 @@
#define DYNMEM_MAJOR_VERSION(Version) ((__u32)(Version) >> 16)
#define DYNMEM_MINOR_VERSION(Version) ((__u32)(Version) & 0xff)
+/*
+ * VERSION_1 and VERSION_2 are retained for the historical record,
+ * but are no longer supported in Linux guests.
+ */
enum {
DYNMEM_PROTOCOL_VERSION_1 = DYNMEM_MAKE_VERSION(0, 3),
DYNMEM_PROTOCOL_VERSION_2 = DYNMEM_MAKE_VERSION(1, 0),
@@ -65,9 +69,7 @@ enum {
DYNMEM_PROTOCOL_VERSION_WIN7 = DYNMEM_PROTOCOL_VERSION_1,
DYNMEM_PROTOCOL_VERSION_WIN8 = DYNMEM_PROTOCOL_VERSION_2,
- DYNMEM_PROTOCOL_VERSION_WIN10 = DYNMEM_PROTOCOL_VERSION_3,
-
- DYNMEM_PROTOCOL_VERSION_CURRENT = DYNMEM_PROTOCOL_VERSION_WIN10
+ DYNMEM_PROTOCOL_VERSION_WIN10 = DYNMEM_PROTOCOL_VERSION_3
};
/*
@@ -1434,19 +1436,9 @@ static void version_resp(struct hv_dynmem_device *dm,
version_req.version.version = dm->next_version;
dm->version = version_req.version.version;
- /*
- * Set the next version to try in case current version fails.
- * Win7 protocol ought to be the last one to try.
- */
- switch (version_req.version.version) {
- case DYNMEM_PROTOCOL_VERSION_WIN8:
- dm->next_version = DYNMEM_PROTOCOL_VERSION_WIN7;
- version_req.is_last_attempt = 0;
- break;
- default:
- dm->next_version = 0;
- version_req.is_last_attempt = 1;
- }
+ /* Set the next version to try in case current version fails. */
+ dm->next_version = 0;
+ version_req.is_last_attempt = 1;
ret = vmbus_sendpacket(dm->dev->channel, &version_req,
sizeof(struct dm_version_request),
@@ -1735,16 +1727,18 @@ static int balloon_connect_vsp(struct hv_device *dev)
/*
* Initiate the hand shake with the host and negotiate
- * a version that the host can support. We start with the
- * highest version number and go down if the host cannot
- * support it.
+ * a version that the host can support. The mechanism is in place
+ * to start with the highest version number and go down if the host
+ * cannot support it. But currently we only try the WIN10 version
+ * since support for older Hyper-V versions has been removed from
+ * Linux.
*/
memset(&version_req, 0, sizeof(struct dm_version_request));
version_req.hdr.type = DM_VERSION_REQUEST;
version_req.hdr.size = sizeof(struct dm_version_request);
version_req.hdr.trans_id = atomic_inc_return(&trans_id);
version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN10;
- version_req.is_last_attempt = 0;
+ version_req.is_last_attempt = 1;
dm_device.version = version_req.version.version;
ret = vmbus_sendpacket(dev->channel, &version_req,
@@ -1964,7 +1958,7 @@ static int balloon_probe(struct hv_device *dev,
#endif
dm_device.dev = dev;
dm_device.state = DM_INITIALIZING;
- dm_device.next_version = DYNMEM_PROTOCOL_VERSION_WIN8;
+ dm_device.next_version = 0;
init_completion(&dm_device.host_event);
init_completion(&dm_device.config_event);
INIT_LIST_HEAD(&dm_device.ha_region_list);
diff --git a/drivers/hv/hv_snapshot.c b/drivers/hv/hv_snapshot.c
index 506871aeacf0..847dc69e8250 100644
--- a/drivers/hv/hv_snapshot.c
+++ b/drivers/hv/hv_snapshot.c
@@ -372,11 +372,6 @@ static void vss_on_reset(void)
int
hv_vss_init(struct hv_util_service *srv)
{
- if (vmbus_proto_version < VERSION_WIN8_1) {
- pr_warn("Integration service 'Backup (volume snapshot)'"
- " not supported on this host version.\n");
- return -ENOTSUPP;
- }
recv_buffer = srv->recv_buffer;
vss_transaction.recv_channel = srv->channel;
vss_transaction.recv_channel->max_pkt_size = VSS_MAX_PKT_SIZE;
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index a2b484679eb4..9652083b6798 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -260,9 +260,8 @@ static inline u32 hv_get_avail_to_write_percent(
* 5 . 2 (Windows Server 2019, RS5)
* 5 . 3 (Windows Server 2022)
*
- * The WS2008 and WIN7 versions are listed here for
- * completeness but are no longer supported in the
- * Linux kernel.
+ * The WS2008, WIN7, WIN8, and WIN8_1 versions are listed here for
+ * completeness but are no longer supported in the Linux kernel.
*/
#define VMBUS_MAKE_VERSION(MAJ, MIN) ((((u32)MAJ) << 16) | (MIN))
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 2/6] hv_sock: Remove check for old Hyper-V hosts
2026-07-30 18:48 [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Michael Kelley
2026-07-30 18:48 ` [PATCH 1/6] Drivers: hv: Remove support for WS2012/2012R2 & Win8/8.1 version " Michael Kelley
@ 2026-07-30 18:48 ` Michael Kelley
2026-07-30 18:48 ` [PATCH 3/6] hv_netvsc: Remove GPADL teardown special case " Michael Kelley
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Michael Kelley @ 2026-07-30 18:48 UTC (permalink / raw)
To: kys, haiyangz, wei.liu, decui, longli, tglx, mingo, bp,
dave.hansen, hpa, daniel.lezcano, ssengar, maarten.lankhorst,
mripard, tzimmermann, airlied, simona, andrew+netdev, davem,
edumazet, kuba, pabeni, James.Bottomley, martin.petersen,
sgarzare, horms
Cc: x86, linux-hyperv, linux-kernel, dri-devel, netdev, linux-scsi,
virtualization
From: Michael Kelley <mhklinux@outlook.com>
With the overall removal of Linux support for running on Hyper-V
hosts earlier than WS2016 and Windows 10, the check for such versions
during hv_sock initialization is no longer necessary. Remove the
check.
Signed-off-by: Michael Kelley <mhklinux@outlook.com>
---
net/vmw_vsock/hyperv_transport.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/net/vmw_vsock/hyperv_transport.c b/net/vmw_vsock/hyperv_transport.c
index 5405c2680dec..855b15971c35 100644
--- a/net/vmw_vsock/hyperv_transport.c
+++ b/net/vmw_vsock/hyperv_transport.c
@@ -961,9 +961,6 @@ static int __init hvs_init(void)
{
int ret;
- if (vmbus_proto_version < VERSION_WIN10)
- return -ENODEV;
-
ret = vmbus_driver_register(&hvs_drv);
if (ret != 0)
return ret;
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 3/6] hv_netvsc: Remove GPADL teardown special case for old Hyper-V hosts
2026-07-30 18:48 [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Michael Kelley
2026-07-30 18:48 ` [PATCH 1/6] Drivers: hv: Remove support for WS2012/2012R2 & Win8/8.1 version " Michael Kelley
2026-07-30 18:48 ` [PATCH 2/6] hv_sock: Remove check for old Hyper-V hosts Michael Kelley
@ 2026-07-30 18:48 ` Michael Kelley
2026-07-30 18:48 ` [PATCH 4/6] drm_hyperv: Remove support for synth video protocol of " Michael Kelley
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Michael Kelley @ 2026-07-30 18:48 UTC (permalink / raw)
To: kys, haiyangz, wei.liu, decui, longli, tglx, mingo, bp,
dave.hansen, hpa, daniel.lezcano, ssengar, maarten.lankhorst,
mripard, tzimmermann, airlied, simona, andrew+netdev, davem,
edumazet, kuba, pabeni, James.Bottomley, martin.petersen,
sgarzare, horms
Cc: x86, linux-hyperv, linux-kernel, dri-devel, netdev, linux-scsi,
virtualization
From: Michael Kelley <mhklinux@outlook.com>
With the overall removal of Linux support for running on Hyper-V
hosts earlier than WS2016 and Windows 10, the special case handling of
GPADL teardown is no longer necessary. Remove it.
Signed-off-by: Michael Kelley <mhklinux@outlook.com>
---
drivers/net/hyperv/netvsc.c | 20 +++-----------------
1 file changed, 3 insertions(+), 17 deletions(-)
diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
index 4d319c50955e..4295b96b4312 100644
--- a/drivers/net/hyperv/netvsc.c
+++ b/drivers/net/hyperv/netvsc.c
@@ -695,17 +695,8 @@ void netvsc_device_remove(struct hv_device *device)
= rtnl_dereference(net_device_ctx->nvdev);
int i;
- /*
- * Revoke receive buffer. If host is pre-Win2016 then tear down
- * receive buffer GPADL. Do the same for send buffer.
- */
netvsc_revoke_recv_buf(device, net_device, ndev);
- if (vmbus_proto_version < VERSION_WIN10)
- netvsc_teardown_recv_gpadl(device, net_device, ndev);
-
netvsc_revoke_send_buf(device, net_device, ndev);
- if (vmbus_proto_version < VERSION_WIN10)
- netvsc_teardown_send_gpadl(device, net_device, ndev);
RCU_INIT_POINTER(net_device_ctx->nvdev, NULL);
@@ -733,14 +724,9 @@ void netvsc_device_remove(struct hv_device *device)
/* Now, we can close the channel safely */
vmbus_close(device->channel);
- /*
- * If host is Win2016 or higher then we do the GPADL tear down
- * here after VMBus is closed.
- */
- if (vmbus_proto_version >= VERSION_WIN10) {
- netvsc_teardown_recv_gpadl(device, net_device, ndev);
- netvsc_teardown_send_gpadl(device, net_device, ndev);
- }
+ /* Must do the GPADL teardown after channel is closed */
+ netvsc_teardown_recv_gpadl(device, net_device, ndev);
+ netvsc_teardown_send_gpadl(device, net_device, ndev);
/* Release all resources */
free_netvsc_device_rcu(net_device);
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 4/6] drm_hyperv: Remove support for synth video protocol of old Hyper-V hosts
2026-07-30 18:48 [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Michael Kelley
` (2 preceding siblings ...)
2026-07-30 18:48 ` [PATCH 3/6] hv_netvsc: Remove GPADL teardown special case " Michael Kelley
@ 2026-07-30 18:48 ` Michael Kelley
2026-07-30 18:48 ` [PATCH 5/6] scsi: storvsc: Remove support for storvsc " Michael Kelley
2026-07-30 20:32 ` [EXTERNAL] [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Long Li
5 siblings, 0 replies; 8+ messages in thread
From: Michael Kelley @ 2026-07-30 18:48 UTC (permalink / raw)
To: kys, haiyangz, wei.liu, decui, longli, tglx, mingo, bp,
dave.hansen, hpa, daniel.lezcano, ssengar, maarten.lankhorst,
mripard, tzimmermann, airlied, simona, andrew+netdev, davem,
edumazet, kuba, pabeni, James.Bottomley, martin.petersen,
sgarzare, horms
Cc: x86, linux-hyperv, linux-kernel, dri-devel, netdev, linux-scsi,
virtualization
From: Michael Kelley <mhklinux@outlook.com>
With the overall removal of Linux support for running on Hyper-V
hosts earlier than WS2016 and Windows 10, it's no longer necessary
to support older synthetic video protocols. Remove the support.
Signed-off-by: Michael Kelley <mhklinux@outlook.com>
---
drivers/gpu/drm/hyperv/hyperv_drm_proto.c | 33 +++++++----------------
1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_proto.c b/drivers/gpu/drm/hyperv/hyperv_drm_proto.c
index f0ef627b4898..cea1ea2595cd 100644
--- a/drivers/gpu/drm/hyperv/hyperv_drm_proto.c
+++ b/drivers/gpu/drm/hyperv/hyperv_drm_proto.c
@@ -17,7 +17,7 @@
#define SYNTHVID_VER_GET_MAJOR(ver) (ver & 0x0000ffff)
#define SYNTHVID_VER_GET_MINOR(ver) ((ver & 0xffff0000) >> 16)
-/* Support for VERSION_WIN7 is removed. #define is retained for reference. */
+/* Support for WIN7 and WIN8 is removed. #define's retained for reference. */
#define SYNTHVID_VERSION_WIN7 SYNTHVID_VERSION(3, 0)
#define SYNTHVID_VERSION_WIN8 SYNTHVID_VERSION(3, 2)
#define SYNTHVID_VERSION_WIN10 SYNTHVID_VERSION(3, 5)
@@ -557,23 +557,12 @@ int hv_drm_connect_vsp(struct hv_device *hdev)
return ret;
}
- /* Negotiate the protocol version with host */
- switch (vmbus_proto_version) {
- case VERSION_WIN10:
- case VERSION_WIN10_V5:
- ret = hv_drm_negotiate_version(hdev, SYNTHVID_VERSION_WIN10);
- if (!ret)
- break;
- fallthrough;
- case VERSION_WIN8:
- case VERSION_WIN8_1:
- ret = hv_drm_negotiate_version(hdev, SYNTHVID_VERSION_WIN8);
- break;
- default:
- ret = hv_drm_negotiate_version(hdev, SYNTHVID_VERSION_WIN10);
- break;
- }
-
+ /*
+ * Negotiate the protocol version with host. Since support for hosts
+ * older than WIN10 has been removed from Linux, only negotiate the
+ * WIN10 version.
+ */
+ ret = hv_drm_negotiate_version(hdev, SYNTHVID_VERSION_WIN10);
if (ret) {
drm_err(dev, "Synthetic video device version not accepted %d\n", ret);
goto error;
@@ -581,11 +570,9 @@ int hv_drm_connect_vsp(struct hv_device *hdev)
hv->screen_depth = SYNTHVID_DEPTH_WIN8;
- if (hv_drm_version_ge(hv->synthvid_version, SYNTHVID_VERSION_WIN10)) {
- ret = hv_drm_get_supported_resolution(hdev);
- if (ret)
- drm_err(dev, "Failed to get supported resolution from host, use default\n");
- }
+ ret = hv_drm_get_supported_resolution(hdev);
+ if (ret)
+ drm_err(dev, "Failed to get supported resolution from host, use default\n");
if (!hv->screen_width_max) {
hv->screen_width_max = SYNTHVID_WIDTH_WIN8;
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 5/6] scsi: storvsc: Remove support for storvsc protocol of old Hyper-V hosts
2026-07-30 18:48 [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Michael Kelley
` (3 preceding siblings ...)
2026-07-30 18:48 ` [PATCH 4/6] drm_hyperv: Remove support for synth video protocol of " Michael Kelley
@ 2026-07-30 18:48 ` Michael Kelley
2026-07-30 20:32 ` [EXTERNAL] [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Long Li
5 siblings, 0 replies; 8+ messages in thread
From: Michael Kelley @ 2026-07-30 18:48 UTC (permalink / raw)
To: kys, haiyangz, wei.liu, decui, longli, tglx, mingo, bp,
dave.hansen, hpa, daniel.lezcano, ssengar, maarten.lankhorst,
mripard, tzimmermann, airlied, simona, andrew+netdev, davem,
edumazet, kuba, pabeni, James.Bottomley, martin.petersen,
sgarzare, horms
Cc: x86, linux-hyperv, linux-kernel, dri-devel, netdev, linux-scsi,
virtualization
From: Michael Kelley <mhklinux@outlook.com>
With the overall removal of Linux support for running on Hyper-V
hosts earlier than WS2016 and Windows 10, it's no longer necessary
to support older storvsc protocols. Remove the support and associated
special case code. However, support for the protocol for Windows
Server 2012R2 and Win8.1 (protocol version 6.0) is *not* removed
because it is activiely used by HvLite in the paravisor for Azure VMs.
Signed-off-by: Michael Kelley <mhklinux@outlook.com>
---
drivers/scsi/storvsc_drv.c | 53 +++++++-------------------------------
1 file changed, 10 insertions(+), 43 deletions(-)
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 571ea549152b..095fce47c5f1 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -47,9 +47,15 @@
* V1 RC < 2008/1/31: 1.0
* V1 RC > 2008/1/31: 2.0
* Win7: 4.2
- * Win8: 5.1
- * Win8.1: 6.0
- * Win10: 6.2
+ * Win8/WS2012: 5.1
+ * Win8.1/WS2012R2: 6.0 (also for HvLite paravisor in Azure)
+ * Win10/WS2016: 6.2
+ *
+ * Protocol versions earlier than Win8.1 are no longer supported since
+ * Win8.1/WS2012R2 and earlier hosts are no longer supported by Linux.
+ * But protocol version 6.0 is retained since it is used by the HvLite
+ * paravisor in Azure. The #define's for the earlier versions remain
+ * for the historical record.
*/
#define VMSTOR_PROTO_VERSION(MAJOR_, MINOR_) ((((MAJOR_) & 0xff) << 8) | \
@@ -218,7 +224,6 @@ struct vmscsi_request {
static const int protocol_version[] = {
VMSTOR_PROTO_VERSION_WIN10,
VMSTOR_PROTO_VERSION_WIN8_1,
- VMSTOR_PROTO_VERSION_WIN8,
};
@@ -1601,13 +1606,12 @@ static int storvsc_sdev_configure(struct scsi_device *sdevice,
sdevice->no_write_same = 1;
/*
- * If the host is WIN8 or WIN8 R2, claim conformance to SPC-3
+ * If the host is WIN8 R2, claim conformance to SPC-3
* if the device is a MSFT virtual device. If the host is
* WIN10 or newer, allow write_same.
*/
if (!strncmp(sdevice->vendor, "Msft", 4)) {
switch (vmstor_proto_version) {
- case VMSTOR_PROTO_VERSION_WIN8:
case VMSTOR_PROTO_VERSION_WIN8_1:
sdevice->scsi_level = SCSI_SPC_3;
break;
@@ -1703,28 +1707,6 @@ static enum scsi_timeout_action storvsc_eh_timed_out(struct scsi_cmnd *scmnd)
return SCSI_EH_RESET_TIMER;
}
-static bool storvsc_scsi_cmd_ok(struct scsi_cmnd *scmnd)
-{
- bool allowed = true;
- u8 scsi_op = scmnd->cmnd[0];
-
- switch (scsi_op) {
- /* the host does not handle WRITE_SAME, log accident usage */
- case WRITE_SAME:
- /*
- * smartd sends this command and the host does not handle
- * this. So, don't send it.
- */
- case SET_WINDOW:
- set_host_byte(scmnd, DID_ERROR);
- allowed = false;
- break;
- default:
- break;
- }
- return allowed;
-}
-
static enum scsi_qc_status storvsc_queuecommand(struct Scsi_Host *host,
struct scsi_cmnd *scmnd)
{
@@ -1738,21 +1720,6 @@ static enum scsi_qc_status storvsc_queuecommand(struct Scsi_Host *host,
u32 payload_sz;
u32 length;
- if (vmstor_proto_version <= VMSTOR_PROTO_VERSION_WIN8) {
- /*
- * On legacy hosts filter unimplemented commands.
- * Future hosts are expected to correctly handle
- * unsupported commands. Furthermore, it is
- * possible that some of the currently
- * unsupported commands maybe supported in
- * future versions of the host.
- */
- if (!storvsc_scsi_cmd_ok(scmnd)) {
- scsi_done(scmnd);
- return 0;
- }
- }
-
/* Setup the cmd request */
cmd_request->cmd = scmnd;
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* RE: [EXTERNAL] [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V
2026-07-30 18:48 [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Michael Kelley
` (4 preceding siblings ...)
2026-07-30 18:48 ` [PATCH 5/6] scsi: storvsc: Remove support for storvsc " Michael Kelley
@ 2026-07-30 20:32 ` Long Li
2026-07-31 3:11 ` Michael Kelley
5 siblings, 1 reply; 8+ messages in thread
From: Long Li @ 2026-07-30 20:32 UTC (permalink / raw)
To: mhklinux@outlook.com, KY Srinivasan, Haiyang Zhang,
wei.liu@kernel.org, Dexuan Cui, tglx@kernel.org, mingo@redhat.com,
bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com,
daniel.lezcano@kernel.org, ssengar@linux.microsoft.com,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com,
James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com,
sgarzare@redhat.com, horms@kernel.org
Cc: x86@kernel.org, linux-hyperv@vger.kernel.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
netdev@vger.kernel.org, linux-scsi@vger.kernel.org,
virtualization@lists.linux.dev
>
> From: Michael Kelley <mhklinux@outlook.com>
>
> 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
^ permalink raw reply [flat|nested] 8+ messages in thread* RE: [EXTERNAL] [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V
2026-07-30 20:32 ` [EXTERNAL] [PATCH 0/6] Remove support for Windows Server 2012/2012R2 & Win8/Win8.1 versions of Hyper-V Long Li
@ 2026-07-31 3:11 ` Michael Kelley
0 siblings, 0 replies; 8+ messages in thread
From: Michael Kelley @ 2026-07-31 3:11 UTC (permalink / raw)
To: Long Li, KY Srinivasan, Haiyang Zhang, wei.liu@kernel.org,
Dexuan Cui, tglx@kernel.org, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, hpa@zytor.com,
daniel.lezcano@kernel.org, ssengar@linux.microsoft.com,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com,
James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com,
sgarzare@redhat.com, horms@kernel.org
Cc: x86@kernel.org, linux-hyperv@vger.kernel.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
netdev@vger.kernel.org, linux-scsi@vger.kernel.org,
virtualization@lists.linux.dev
From: Long Li <longli@microsoft.com> Sent: Thursday, July 30, 2026 1:33 PM
> >
> > From: Michael Kelley <mhklinux@outlook.com>
> >
> > 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.
I don't have any hard data one way or the other, but given their age and lack
of support, I'm doubtful that there are a large number of customers running
WS2012 or Windows 8 for any purpose. Even fewer would be using Hyper-V
to run Linux guests. Of course, the Azure fleet was upgraded many years ago.
Before submitting this patch set, I had an offline email thread with Wei Liu
(Linux maintainer for Hyper-V code), and one of the Hyper-V dev leads, about
removing the WS2012/Win8 Hyper-V support. Wei checked within Microsoft,
and came back to me that it was OK to do this. Wei could give you the details
offline. Perhaps there's internal data on lingering usage that informed that
decision.
FWIW, you may remember that I did something similar for Windows Server
2008/Win7 back in 2022. See [1]. To my knowledge, there was zero customer
pushback from that removal. While WS2012 Hyper-V was certainly more
feature capable than the original WS2008 Hyper-V, anyone who cares would
have updated at least to WS2016 Hyper-V as a mature baseline.
>
> 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.
The only external statements I'm aware of are the Microsoft Support Lifecycle
calendars that show Windows 8 support ending Jan 12, 2016 when it was superseded
by Windows 8.1, and then Windows 8.1 support ending Jan 10, 2023. For Windows
Server 2012 and 2012R2, the end of support was Oct 10, 2023.
Michael
[1] https://lore.kernel.org/linux-hyperv/1651509391-2058-1-git-send-email-mikelley@microsoft.com/
^ permalink raw reply [flat|nested] 8+ messages in thread