]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
uio_hv_generic: Query the ringbuffer size for device
authorSaurabh Sengar <ssengar@linux.microsoft.com>
Sat, 30 Mar 2024 08:51:58 +0000 (01:51 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Jul 2025 13:57:36 +0000 (15:57 +0200)
[ 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>
drivers/uio/uio_hv_generic.c

index 9daa1afbf9dbfee45409649c83b88ec22a517625..db8a450b5a19b2b7d7297d6aff4f43f62b949c0b 100644 (file)
@@ -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;