RE: [PATCH 1/6] Drivers: hv: vmbus: Add utility function for querying ring size

Long Li
2024-03-12T20:57:38Z

> Subject: [PATCH 1/6] Drivers: hv: vmbus: Add utility function for querying ring size
>
> Add a function to query for the preferred ring buffer size of VMBus device.

Patch looks good to me. It will be helpful if you can document the ring sizes for each device and put it in the comment. (e.g use a new ring size, or keep using an existing ring size)

>
> Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
> ---
> drivers/hv/channel_mgmt.c | 7 +++++--
> drivers/hv/hyperv_vmbus.h | 5 +++++
> include/linux/hyperv.h | 1 +
> 3 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index
> 2f4d09ce027a..7ea444d72f9f 100644
> --- a/drivers/hv/channel_mgmt.c
> +++ b/drivers/hv/channel_mgmt.c
> @@ -120,7 +120,8 @@ const struct vmbus_device vmbus_devs[] = {
> },
>
> /* File copy */
> - { .dev_type = HV_FCOPY,
> + { .pref_ring_size = 0x4000,
> + .dev_type = HV_FCOPY,
> HV_FCOPY_GUID,
> .perf_device = false,
> .allowed_in_isolated = false,
> @@ -141,11 +142,13 @@ const struct vmbus_device vmbus_devs[] = {
> },
>
> /* Unknown GUID */
> - { .dev_type = HV_UNKNOWN,
> + { .pref_ring_size = 0x11000,
> + .dev_type = HV_UNKNOWN,
> .perf_device = false,
> .allowed_in_isolated = false,
> },
> };
> +EXPORT_SYMBOL_GPL(vmbus_devs);
>
> static const struct {
> guid_t guid;
> diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h index
> f6b1e710f805..76ac5185a01a 100644
> --- a/drivers/hv/hyperv_vmbus.h
> +++ b/drivers/hv/hyperv_vmbus.h
> @@ -417,6 +417,11 @@ static inline bool hv_is_perf_channel(struct
> vmbus_channel *channel)
> return vmbus_devs[channel->device_id].perf_device;
> }
>
> +static inline size_t hv_dev_ring_size(struct vmbus_channel *channel) {
> + return vmbus_devs[channel->device_id].pref_ring_size;
> +}
> +
> static inline bool hv_is_allocated_cpu(unsigned int cpu) {
> struct vmbus_channel *channel, *sc;
> diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index
> 2b00faf98017..5951c7bb5712 100644
> --- a/include/linux/hyperv.h
> +++ b/include/linux/hyperv.h
> @@ -800,6 +800,7 @@ struct vmbus_requestor { #define VMBUS_RQST_RESET
> (U64_MAX - 3)
>
> struct vmbus_device {
> + size_t pref_ring_size;
> u16 dev_type;
> guid_t guid;
> bool perf_device;
> --
> 2.34.1
>