Commit b3168120 authored by Hamza Mahfooz's avatar Hamza Mahfooz Committed by Jakub Kicinski
Browse files

hv_sock: fix ARM64 support



VMBUS ring buffers must be page aligned. Therefore, the current value of
24K presents a challenge on ARM64 kernels (with 64K pages). So, use
VMBUS_RING_SIZE() to ensure they are always aligned and large enough to
hold all of the relevant data.

Cc: stable@vger.kernel.org
Fixes: 77ffe333 ("hv_sock: use HV_HYP_PAGE_SIZE for Hyper-V communication")
Tested-by: default avatarDexuan Cui <decui@microsoft.com>
Reviewed-by: default avatarDexuan Cui <decui@microsoft.com>
Signed-off-by: default avatarHamza Mahfooz <hamzamahfooz@linux.microsoft.com>
Acked-by: default avatarStefano Garzarella <sgarzare@redhat.com>
Link: https://patch.msgid.link/20260428125339.13963-1-hamzamahfooz@linux.microsoft.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent e73cafaf
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -375,10 +375,10 @@ static void hvs_open_connection(struct vmbus_channel *chan)
	} else {
		sndbuf = max_t(int, sk->sk_sndbuf, RINGBUFFER_HVS_SND_SIZE);
		sndbuf = min_t(int, sndbuf, RINGBUFFER_HVS_MAX_SIZE);
		sndbuf = ALIGN(sndbuf, HV_HYP_PAGE_SIZE);
		sndbuf = VMBUS_RING_SIZE(sndbuf);
		rcvbuf = max_t(int, sk->sk_rcvbuf, RINGBUFFER_HVS_RCV_SIZE);
		rcvbuf = min_t(int, rcvbuf, RINGBUFFER_HVS_MAX_SIZE);
		rcvbuf = ALIGN(rcvbuf, HV_HYP_PAGE_SIZE);
		rcvbuf = VMBUS_RING_SIZE(rcvbuf);
	}

	chan->max_pkt_size = HVS_MAX_PKT_SIZE;