[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <2026011101-important-hermit-3a31@gregkh>
Date: Sun, 11 Jan 2026 14:06:52 +0100
From: Greg KH <gregkh@...uxfoundation.org>
To: Karthikeyan K S <karthiproffesional@...il.com>
Cc: hminas@...opsys.com, gregory.herrero@...el.com,
linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] usb: dwc2: add missing SLAB_CACHE_DMA flag for
desc_hsisoc_cache
On Sun, Jan 11, 2026 at 12:32:18PM +0000, Karthikeyan K S wrote:
> The desc_hsisoc_cache kmem_cache is used to allocate DMA descriptors
> for High-Speed isochronous transfers. These descriptors are passed to
> the hardware via dma_map_single() in dwc2_desc_list_alloc().
>
> The desc_gen_cache, which serves the same purpose for other transfer
> types, correctly specifies SLAB_CACHE_DMA. However, desc_hsisoc_cache
> was created without this flag, despite both caches being used
> identically for DMA descriptor allocation.
>
> Add the missing SLAB_CACHE_DMA flag to desc_hsisoc_cache for
> consistency and correctness on platforms with DMA zone restrictions.
> This also protects against future allocations from this cache that
> might omit GFP_DMA.
>
> Fixes: 3b5fcc9ac2f4 ("usb: dwc2: host: use kmem cache to allocate descriptors")
>
> Signed-off-by: Karthikeyan K S <karthiproffesional@...il.com>
Nit, no blank line needed after the Fixes: line and before your s-o-b
line.
Also, should this go to stable kernels?
But:
> ---
> v2: Resend with proper formatting (previous was corrupted by email client)
> ---
> drivers/usb/dwc2/hcd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
> index 30eb85066..556d6ab36 100644
> --- a/drivers/usb/dwc2/hcd.c
> +++ b/drivers/usb/dwc2/hcd.c
> @@ -5273,7 +5273,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg)
>
> hsotg->desc_hsisoc_cache = kmem_cache_create("dwc2-hsisoc-desc",
> sizeof(struct dwc2_dma_desc) *
> - MAX_DMA_DESC_NUM_HS_ISOC, 512, 0, NULL);
> + MAX_DMA_DESC_NUM_HS_ISOC, 512, SLAB_CACHE_DMA, NULL);
Are you sure this is ok? You are now taking from a _very_ limited chunk
of memory for this controller. What platform is this that requires
this, and what changed to suddenly need this to be this way? The driver
has been working for a very long time without this, and I am loath to
change this now as it might hit many existing systems that have a very
limited GFP_DMA memory range that did not expect a new allocation there
now.
So I would like to find out why this is needed now, all these years
later. What caused this to show up at this point in time?
thanks,
greg k-h
Powered by blists - more mailing lists