[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
<SJ1PR21MB34579239AC3349F4C28EBF63CE2B2@SJ1PR21MB3457.namprd21.prod.outlook.com>
Date: Tue, 12 Mar 2024 20:57:35 +0000
From: Long Li <longli@...rosoft.com>
To: Saurabh Sengar <ssengar@...ux.microsoft.com>, KY Srinivasan
<kys@...rosoft.com>, Haiyang Zhang <haiyangz@...rosoft.com>,
"wei.liu@...nel.org" <wei.liu@...nel.org>, Dexuan Cui <decui@...rosoft.com>,
"gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>,
"linux-hyperv@...r.kernel.org" <linux-hyperv@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
CC: Saurabh Singh Sengar <ssengar@...rosoft.com>
Subject: RE: [PATCH 1/6] Drivers: hv: vmbus: Add utility function for querying
ring size
> 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@...ux.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
>
Powered by blists - more mailing lists