mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Lucas Stach <dev@lynxeye.de>
To: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH 4/4] USB: xHCI: Sync non-coherent DMA buffers
Date: Fri, 10 Apr 2015 09:25:10 +0200	[thread overview]
Message-ID: <1428650710.2182.9.camel@lynxeye.de> (raw)
In-Reply-To: <1428627714-17077-5-git-send-email-sebastian.hesselbarth@gmail.com>

Am Freitag, den 10.04.2015, 03:01 +0200 schrieb Sebastian Hesselbarth:
> When working with non-coherent transfer buffers, we have to sync
> device and cpu for outgoing and incoming buffers. Fix the driver where
> non-coherent buffers are used in device context.
> 
> Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>

This is not using the DMA API the way it is intended. See my last reply
about balanced ownership transfer. Please make sure you take this into
account for this patch.

> ---
> Cc: barebox@lists.infradead.org
> ---
>  drivers/usb/host/xhci-hcd.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/usb/host/xhci-hcd.c b/drivers/usb/host/xhci-hcd.c
> index c3d623e91f51..fab884229732 100644
> --- a/drivers/usb/host/xhci-hcd.c
> +++ b/drivers/usb/host/xhci-hcd.c
> @@ -1026,6 +1026,8 @@ static int xhci_submit_normal(struct usb_device *udev, unsigned long pipe,
>  
>  	/* Normal TRB */
>  	memset(&trb, 0, sizeof(union xhci_trb));
> +	dma_sync_single_for_device((unsigned long)buffer, length,
> +				   DMA_TO_DEVICE);
>  	trb.event_cmd.cmd_trb = cpu_to_le64((dma_addr_t)buffer);
>  	/* FIXME: TD remainder */
>  	trb.event_cmd.status = TRB_LEN(length) | TRB_INTR_TARGET(0);
> @@ -1114,6 +1116,8 @@ static int xhci_submit_control(struct usb_device *udev, unsigned long pipe,
>  	/* Data TRB */
>  	if (length > 0) {
>  		memset(&trb, 0, sizeof(union xhci_trb));
> +		dma_sync_single_for_device((unsigned long)buffer, length,
> +					   DMA_TO_DEVICE);
>  		trb.event_cmd.cmd_trb = cpu_to_le64((dma_addr_t)buffer);
>  		/* FIXME: TD remainder */
>  		trb.event_cmd.status = TRB_LEN(length) | TRB_INTR_TARGET(0);
> @@ -1142,6 +1146,8 @@ static int xhci_submit_control(struct usb_device *udev, unsigned long pipe,
>  			length -= EVENT_TRB_LEN(trb.event_cmd.status);
>  		else if (ret < 0)
>  			return ret;
> +		dma_sync_single_for_cpu((unsigned long)buffer, length,
> +					DMA_FROM_DEVICE);
>  	}
>  
>  	ret = xhci_wait_for_event(xhci, TRB_TRANSFER, &trb);



_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2015-04-10  7:26 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-10  1:01 [PATCH 0/4] Some fixes for PCI, mvneta, xHCI Sebastian Hesselbarth
2015-04-10  1:01 ` [PATCH 1/4] pci: fix device registration for directly attached devices Sebastian Hesselbarth
2015-04-10  7:15   ` Lucas Stach
2015-04-10  8:24     ` Sebastian Hesselbarth
2015-04-10  1:01 ` [PATCH 2/4] net: mvneta: Fix transmit errors due to dirty txdesc Sebastian Hesselbarth
2015-04-13  6:43   ` Sascha Hauer
2015-04-10  1:01 ` [PATCH 3/4] net: mvneta: Remove unnecessary DMA ops Sebastian Hesselbarth
2015-04-10  7:23   ` Lucas Stach
2015-04-10  8:18     ` Sebastian Hesselbarth
2015-04-10 16:09       ` Jan Lübbe
2015-04-10  1:01 ` [PATCH 4/4] USB: xHCI: Sync non-coherent DMA buffers Sebastian Hesselbarth
2015-04-10  7:25   ` Lucas Stach [this message]
2015-04-13 14:22   ` [PATCH v2] " Sebastian Hesselbarth
2015-04-14 18:52     ` Sascha Hauer
2015-04-14 19:29       ` Sebastian Hesselbarth
2015-04-15  9:11         ` Lucas Stach
2015-04-15  9:10     ` Lucas Stach
2015-04-15 12:06     ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1428650710.2182.9.camel@lynxeye.de \
    --to=dev@lynxeye.de \
    --cc=barebox@lists.infradead.org \
    --cc=sebastian.hesselbarth@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox