Drivers: hv: vmbus: add VTL2 redirect connection ID
authorHardik Garg <hargar@linux.microsoft.com>
Fri, 17 Jul 2026 00:18:37 +0000 (00:18 +0000)
committerWei Liu <wei.liu@kernel.org>
Fri, 31 Jul 2026 20:02:03 +0000 (20:02 +0000)
commit92d0593128023cf93ae61b7728dcc3062f8d514f
tree7e1ba9db7ba3a06c5f7b11ec6be56d529f4fc659
parentb098dc869219c15dc49bf9cf63fb5fc1481d3373
Drivers: hv: vmbus: add VTL2 redirect connection ID

VMBus sends CHANNELMSG_INITIATE_CONTACT through a Hyper-V message
connection ID. Older protocol versions use VMBUS_MESSAGE_CONNECTION_ID,
while protocol version 5.0 and newer normally use
VMBUS_MESSAGE_CONNECTION_ID_4.

For a VTL2 kernel using VMBus protocol 5.0 or newer, the host
may expect INITIATE_CONTACT on either the redirect connection ID or
VMBUS_MESSAGE_CONNECTION_ID_4. There is no capability indication that
identifies which ID is active, so the driver must determine it at runtime.

During VMBus negotiation, the redirect ID is tried first because it is
used by VTL2 configurations with VMBus redirection enabled. If the
redirect ID is unavailable, the host rejects it synchronously with
HV_STATUS_INVALID_CONNECTION_ID, allowing fallback to the standard ID.

Return a distinct error for an invalid Initiate Contact connection ID so
this fallback does not mask other post-message failures or
protocol-version rejections. Preserve the existing connection ID
selection for older protocol versions or when running below VTL2.

Signed-off-by: Hardik Garg <hargar@linux.microsoft.com>
Reviewed-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
Reviewed-by: Naman Jain <namjain@linux.microsoft.com>
Reviewed-by: Michael Kelley <mhklinux@outlook.com>
Signed-off-by: Wei Liu <wei.liu@kernel.org>
drivers/hv/connection.c
drivers/hv/hyperv_vmbus.h