uio_hv_generic: Query the ringbuffer size for device
[ Upstream commit e566ed5b64177a0c07b677568f623ed31d23406d ] 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: Saurabh Sengar <ssengar@linux.microsoft.com> Reviewed-by: Long Li <longli@microsoft.com> Link: https://lore.kernel.org/r/1711788723-8593-3-git-send-email-ssengar@linux.microsoft.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Stable-dep-of: 0315fef2aff9 ("uio_hv_generic: Align ring size to system page") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
ebba6cc078
commit
ca0198894b
@@ -249,6 +249,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) {
|
||||
@@ -256,12 +257,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;
|
||||
|
||||
|
Reference in New Issue
Block a user