lkml.org 
[lkml]   [2022]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 0608/1157] usb: cdns3: fix random warning message when driver load
    Date
    From: Frank Li <Frank.Li@nxp.com>

    [ Upstream commit 8659ab3d936fcf0084676f98b75b317017aa8f82 ]

    Warning log:
    [ 4.141392] Unexpected gfp: 0x4 (GFP_DMA32). Fixing up to gfp: 0xa20 (GFP_ATOMIC). Fix your code!
    [ 4.150340] CPU: 1 PID: 175 Comm: 1-0050 Not tainted 5.15.5-00039-g2fd9ae1b568c #20
    [ 4.158010] Hardware name: Freescale i.MX8QXP MEK (DT)
    [ 4.163155] Call trace:
    [ 4.165600] dump_backtrace+0x0/0x1b0
    [ 4.169286] show_stack+0x18/0x68
    [ 4.172611] dump_stack_lvl+0x68/0x84
    [ 4.176286] dump_stack+0x18/0x34
    [ 4.179613] kmalloc_fix_flags+0x60/0x88
    [ 4.183550] new_slab+0x334/0x370
    [ 4.186878] ___slab_alloc.part.108+0x4d4/0x748
    [ 4.191419] __slab_alloc.isra.109+0x30/0x78
    [ 4.195702] kmem_cache_alloc+0x40c/0x420
    [ 4.199725] dma_pool_alloc+0xac/0x1f8
    [ 4.203486] cdns3_allocate_trb_pool+0xb4/0xd0

    pool_alloc_page(struct dma_pool *pool, gfp_t mem_flags)
    {
    ...
    page = kmalloc(sizeof(*page), mem_flags);
    page->vaddr = dma_alloc_coherent(pool->dev, pool->allocation,
    &page->dma, mem_flags);
    ...
    }

    kmalloc was called with mem_flags, which is passed down in
    cdns3_allocate_trb_pool() and have GFP_DMA32 flags.
    kmall_fix_flags() report warning.

    GFP_DMA32 is not useful at all. dma_alloc_coherent() will handle
    DMA memory region correctly by pool->dev. GFP_DMA32 can be removed
    safely.

    Signed-off-by: Frank Li <Frank.Li@nxp.com>
    Link: https://lore.kernel.org/r/20220609154456.2871672-1-Frank.Li@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/usb/cdns3/cdns3-gadget.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/usb/cdns3/cdns3-gadget.c b/drivers/usb/cdns3/cdns3-gadget.c
    index 5c15c48952a6..f5f5fbbefec0 100644
    --- a/drivers/usb/cdns3/cdns3-gadget.c
    +++ b/drivers/usb/cdns3/cdns3-gadget.c
    @@ -220,7 +220,7 @@ int cdns3_allocate_trb_pool(struct cdns3_endpoint *priv_ep)

    if (!priv_ep->trb_pool) {
    priv_ep->trb_pool = dma_pool_alloc(priv_dev->eps_dma_pool,
    - GFP_DMA32 | GFP_ATOMIC,
    + GFP_ATOMIC,
    &priv_ep->trb_pool_dma);

    if (!priv_ep->trb_pool)
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-16 06:34    [W:3.424 / U:1.584 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site