Message ID | 20220816153655.27526-8-tiwai@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/udl: More fixes | expand |
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 --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; }