diff mbox series

[07/12] drm/udl: Add parameter to set number of URBs

Message ID 20220816153655.27526-8-tiwai@suse.de (mailing list archive)
State New, archived
Headers show
Series drm/udl: More fixes | expand

Commit Message

Takashi Iwai Aug. 16, 2022, 3:36 p.m. UTC
From: Thomas Zimmermann <tzimmermann@suse.de>

For further debugging and optimization purpose, allow users to adjust
the number of URBs via a new module parameter, numurbs.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/gpu/drm/udl/udl_main.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Thomas Zimmermann Sept. 5, 2022, 8:09 a.m. UTC | #1
Hi

Am 16.08.22 um 17:36 schrieb Takashi Iwai:
> From: Thomas Zimmermann <tzimmermann@suse.de>
> 
> For further debugging and optimization purpose, allow users to adjust
> the number of URBs via a new module parameter, numurbs.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>

I made this patch for debugging, but I don't think it should be added to 
the upstream kernel. Please don't merge.

Best regards
Thomas

> ---
>   drivers/gpu/drm/udl/udl_main.c | 9 ++++++++-
>   1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
> index 2b7eafd48ec2..3c97f647883f 100644
> --- a/drivers/gpu/drm/udl/udl_main.c
> +++ b/drivers/gpu/drm/udl/udl_main.c
> @@ -8,6 +8,8 @@
>    * Copyright (C) 2009 Bernie Thompson <bernie@plugable.com>
>    */
>   
> +#include <linux/moduleparam.h>
> +
>   #include <drm/drm.h>
>   #include <drm/drm_print.h>
>   #include <drm/drm_probe_helper.h>
> @@ -23,6 +25,9 @@
>   #define WRITES_IN_FLIGHT (20)
>   #define MAX_VENDOR_DESCRIPTOR_SIZE 256
>   
> +static uint udl_num_urbs = WRITES_IN_FLIGHT;
> +module_param_named(numurbs, udl_num_urbs, uint, 0600);
> +
>   static int udl_parse_vendor_descriptor(struct udl_device *udl)
>   {
>   	struct usb_device *udev = udl_to_usb_device(udl);
> @@ -294,6 +299,8 @@ int udl_init(struct udl_device *udl)
>   	struct drm_device *dev = &udl->drm;
>   	int ret = -ENOMEM;
>   
> +	drm_info(dev, "pre-allocating %d URBs\n", udl_num_urbs);
> +
>   	DRM_DEBUG("\n");
>   
>   	udl->dmadev = usb_intf_get_dma_device(to_usb_interface(dev->dev));
> @@ -311,7 +318,7 @@ int udl_init(struct udl_device *udl)
>   	if (udl_select_std_channel(udl))
>   		DRM_ERROR("Selecting channel failed\n");
>   
> -	if (!udl_alloc_urb_list(dev, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
> +	if (!udl_alloc_urb_list(dev, udl_num_urbs, MAX_TRANSFER)) {
>   		DRM_ERROR("udl_alloc_urb_list failed\n");
>   		goto err;
>   	}
diff mbox series

Patch

diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
index 2b7eafd48ec2..3c97f647883f 100644
--- a/drivers/gpu/drm/udl/udl_main.c
+++ b/drivers/gpu/drm/udl/udl_main.c
@@ -8,6 +8,8 @@ 
  * Copyright (C) 2009 Bernie Thompson <bernie@plugable.com>
  */
 
+#include <linux/moduleparam.h>
+
 #include <drm/drm.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
@@ -23,6 +25,9 @@ 
 #define WRITES_IN_FLIGHT (20)
 #define MAX_VENDOR_DESCRIPTOR_SIZE 256
 
+static uint udl_num_urbs = WRITES_IN_FLIGHT;
+module_param_named(numurbs, udl_num_urbs, uint, 0600);
+
 static int udl_parse_vendor_descriptor(struct udl_device *udl)
 {
 	struct usb_device *udev = udl_to_usb_device(udl);
@@ -294,6 +299,8 @@  int udl_init(struct udl_device *udl)
 	struct drm_device *dev = &udl->drm;
 	int ret = -ENOMEM;
 
+	drm_info(dev, "pre-allocating %d URBs\n", udl_num_urbs);
+
 	DRM_DEBUG("\n");
 
 	udl->dmadev = usb_intf_get_dma_device(to_usb_interface(dev->dev));
@@ -311,7 +318,7 @@  int udl_init(struct udl_device *udl)
 	if (udl_select_std_channel(udl))
 		DRM_ERROR("Selecting channel failed\n");
 
-	if (!udl_alloc_urb_list(dev, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
+	if (!udl_alloc_urb_list(dev, udl_num_urbs, MAX_TRANSFER)) {
 		DRM_ERROR("udl_alloc_urb_list failed\n");
 		goto err;
 	}