From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D3824C433DB for ; Wed, 31 Mar 2021 06:20:01 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1FB836195D for ; Wed, 31 Mar 2021 06:20:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1FB836195D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=jms.id.au Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=openbmc-bounces+openbmc=archiver.kernel.org@lists.ozlabs.org Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4F9GPq1TZgz3by7 for ; Wed, 31 Mar 2021 17:19:59 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=jms.id.au header.i=@jms.id.au header.a=rsa-sha256 header.s=google header.b=Txxvq0eB; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::736; helo=mail-qk1-x736.google.com; envelope-from=joel.stan@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=jms.id.au header.i=@jms.id.au header.a=rsa-sha256 header.s=google header.b=Txxvq0eB; dkim-atps=neutral Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4F9GPL5BZJz3bpf; Wed, 31 Mar 2021 17:19:33 +1100 (AEDT) Received: by mail-qk1-x736.google.com with SMTP id v70so18367953qkb.8; Tue, 30 Mar 2021 23:19:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jms.id.au; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=xPdGHSIIR00sAQIYSjMd9oGwW07NfsHMGXGmByQwlRc=; b=Txxvq0eBKd/H8YcrQndy9HA0UYExIhy7stpzgsx2OR1DU9qzBRteahNQ6iB8WFDuO9 61A7Pkcx7uxMi2lkQ/geULAAjdBwSVtXhqUygskJUlAQBzyONk8yTa4CxJRcsIe8/yIO cNAKlsNEwMIWQLTHfVcuqOAPqqeod1JEb+pO8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=xPdGHSIIR00sAQIYSjMd9oGwW07NfsHMGXGmByQwlRc=; b=ihQigLoueHTsW69xRUm8wwE1MYAubkRIjaAvWNGNUtGGpBtAkLvSKAFqrNuOFXAXy7 o8aGBaVolEdXLhv1XTAR5cYsAWqrDZY5bWdH8w09xzgtENp86jDmz2tCL41WMSJ/5+8j zFAjDBakPQWGGkX6oybDcmw+yOzhNpGn+U392S1JrgZlMmGCfVLTeLX+2zjdBZ4K0lfW zgzuixUdCsOk2xiEBL5W6Mpt+Bd1L+Nc41a/S83D7CKF/YD2hzE/2LN9NORDLM/CcJ9U 6nFgL6nFF3/GTLsGI6/bSOqmJdiqoOZ1kPJa1XUadzLNpdrQqVpdmVXOKfxVHkLP/QTN ANsQ== X-Gm-Message-State: AOAM533ujQxgN0vP/qux0yVK7paAHwefs7vJ4lnruSLHlAoxmOE96Pi9 9YxeLtARZjoM2mMik3HSSmtKPcML7euV9sYVVL0= X-Google-Smtp-Source: ABdhPJxTiz+BKd7Wa3J6NU0WsFjpgzR2F7xmXCD+R0O9qnYbgAxLwDKhEJJRSGfkjpBgQZkMqkTSQjLXyEFkS5Hs9+M= X-Received: by 2002:a05:620a:c11:: with SMTP id l17mr1705538qki.487.1617171569936; Tue, 30 Mar 2021 23:19:29 -0700 (PDT) MIME-Version: 1.0 References: <20210331045831.28700-1-rentao.bupt@gmail.com> In-Reply-To: <20210331045831.28700-1-rentao.bupt@gmail.com> From: Joel Stanley Date: Wed, 31 Mar 2021 06:19:17 +0000 Message-ID: Subject: Re: [PATCH] usb: gadget: aspeed: fix dma map failure To: Tao Ren Content-Type: text/plain; charset="UTF-8" X-BeenThere: openbmc@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development list for OpenBMC List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sasha Levin , Felipe Balbi , Ryan Chen , kernel test robot , linux-aspeed , Konrad Rzeszutek Wilk , Andrew Jeffery , Greg Kroah-Hartman , Masahiro Yamada , linux-usb@vger.kernel.org, OpenBMC Maillist , Linux Kernel Mailing List , Christoph Hellwig , Julia Lawall , Tao Ren , Robin Murphy , Thomas Tai , Linux ARM Errors-To: openbmc-bounces+openbmc=archiver.kernel.org@lists.ozlabs.org Sender: "openbmc" On Wed, 31 Mar 2021 at 05:02, wrote: > > From: Tao Ren > > Currently the virtual port_dev device is passed to DMA API, and this is > wrong because the device passed to DMA API calls must be the actual > hardware device performing the DMA. > > The patch replaces usb_gadget_map_request/usb_gadget_unmap_request APIs > with usb_gadget_map_request_by_dev/usb_gadget_unmap_request_by_dev APIs > so the DMA capable platform device can be passed to the DMA APIs. > > The patch fixes below backtrace detected on Facebook AST2500 OpenBMC > platforms: > > [<80106550>] show_stack+0x20/0x24 > [<80106868>] dump_stack+0x28/0x30 > [<80823540>] __warn+0xfc/0x110 > [<8011ac30>] warn_slowpath_fmt+0xb0/0xc0 > [<8011ad44>] dma_map_page_attrs+0x24c/0x314 > [<8016a27c>] usb_gadget_map_request_by_dev+0x100/0x1e4 > [<805cedd8>] usb_gadget_map_request+0x1c/0x20 > [<805cefbc>] ast_vhub_epn_queue+0xa0/0x1d8 > [<7f02f710>] usb_ep_queue+0x48/0xc4 > [<805cd3e8>] ecm_do_notify+0xf8/0x248 > [<7f145920>] ecm_set_alt+0xc8/0x1d0 > [<7f145c34>] composite_setup+0x680/0x1d30 > [<7f00deb8>] ast_vhub_ep0_handle_setup+0xa4/0x1bc > [<7f02ee94>] ast_vhub_dev_irq+0x58/0x84 > [<7f0309e0>] ast_vhub_irq+0xb0/0x1c8 > [<7f02e118>] __handle_irq_event_percpu+0x50/0x19c > [<8015e5bc>] handle_irq_event_percpu+0x38/0x8c > [<8015e758>] handle_irq_event+0x38/0x4c > > Signed-off-by: Tao Ren Fixes: 7ecca2a4080c ("usb/gadget: Add driver for Aspeed SoC virtual hub") Reviewed-by: Joel Stanley Thanks Tao! > --- > drivers/usb/gadget/udc/aspeed-vhub/core.c | 3 ++- > drivers/usb/gadget/udc/aspeed-vhub/epn.c | 2 +- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/gadget/udc/aspeed-vhub/core.c b/drivers/usb/gadget/udc/aspeed-vhub/core.c > index be7bb64e3594..d11d3d14313f 100644 > --- a/drivers/usb/gadget/udc/aspeed-vhub/core.c > +++ b/drivers/usb/gadget/udc/aspeed-vhub/core.c > @@ -36,6 +36,7 @@ void ast_vhub_done(struct ast_vhub_ep *ep, struct ast_vhub_req *req, > int status) > { > bool internal = req->internal; > + struct ast_vhub *vhub = ep->vhub; > > EPVDBG(ep, "completing request @%p, status %d\n", req, status); > > @@ -46,7 +47,7 @@ void ast_vhub_done(struct ast_vhub_ep *ep, struct ast_vhub_req *req, > > if (req->req.dma) { > if (!WARN_ON(!ep->dev)) > - usb_gadget_unmap_request(&ep->dev->gadget, > + usb_gadget_unmap_request_by_dev(&vhub->pdev->dev, > &req->req, ep->epn.is_in); > req->req.dma = 0; > } > diff --git a/drivers/usb/gadget/udc/aspeed-vhub/epn.c b/drivers/usb/gadget/udc/aspeed-vhub/epn.c > index 02d8bfae58fb..cb164c615e6f 100644 > --- a/drivers/usb/gadget/udc/aspeed-vhub/epn.c > +++ b/drivers/usb/gadget/udc/aspeed-vhub/epn.c > @@ -376,7 +376,7 @@ static int ast_vhub_epn_queue(struct usb_ep* u_ep, struct usb_request *u_req, > if (ep->epn.desc_mode || > ((((unsigned long)u_req->buf & 7) == 0) && > (ep->epn.is_in || !(u_req->length & (u_ep->maxpacket - 1))))) { > - rc = usb_gadget_map_request(&ep->dev->gadget, u_req, > + rc = usb_gadget_map_request_by_dev(&vhub->pdev->dev, u_req, > ep->epn.is_in); > if (rc) { > dev_warn(&vhub->pdev->dev, > -- > 2.17.1 >