Commit e566ed5b authored by Saurabh Sengar's avatar Saurabh Sengar Committed by Greg Kroah-Hartman
Browse files

uio_hv_generic: Query the ringbuffer size for device



Query the ring buffer size from pre defined table per device
and use that value for allocating the ring buffer for that
device. Keep the size as current default which is 2 MB if
the device doesn't have any preferred ring size.

Signed-off-by: default avatarSaurabh Sengar <ssengar@linux.microsoft.com>
Reviewed-by: default avatarLong Li <longli@microsoft.com>
Link: https://lore.kernel.org/r/1711788723-8593-3-git-send-email-ssengar@linux.microsoft.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e8c4bd6c
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -238,6 +238,7 @@ hv_uio_probe(struct hv_device *dev,
	struct hv_uio_private_data *pdata;
	void *ring_buffer;
	int ret;
	size_t ring_size = hv_dev_ring_size(channel);

	/* Communicating with host has to be via shared memory not hypercall */
	if (!channel->offermsg.monitor_allocated) {
@@ -245,12 +246,14 @@ hv_uio_probe(struct hv_device *dev,
		return -ENOTSUPP;
	}

	if (!ring_size)
		ring_size = HV_RING_SIZE * PAGE_SIZE;

	pdata = devm_kzalloc(&dev->device, sizeof(*pdata), GFP_KERNEL);
	if (!pdata)
		return -ENOMEM;

	ret = vmbus_alloc_ring(channel, HV_RING_SIZE * PAGE_SIZE,
			       HV_RING_SIZE * PAGE_SIZE);
	ret = vmbus_alloc_ring(channel, ring_size, ring_size);
	if (ret)
		return ret;