public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: "Brüns, Stefan" <Stefan.Bruens@rwth-aachen.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] usb: dwc2: invalidate the dcache before starting the DMA
Date: Mon, 3 Apr 2017 14:43:41 +0000	[thread overview]
Message-ID: <7851308.6iHcp38Qv5@sbruens-linux> (raw)
In-Reply-To: <20170401065139.12084-1-eddie.cai.linux@gmail.com>

On Samstag, 1. April 2017 08:51:39 CEST Eddie Cai wrote:
> We should invalidate the dcache before starting the DMA. In case there are
> any dirty lines from the DMA buffer in the cache, subsequent cache-line
> replacements may corrupt the buffer in memory while the DMA is still going
> on. Cache-line replacement can happen if the CPU tries to bring some other
> memory locations into the cache while the DMA is going on.
> 
> Signed-off-by: Eddie Cai <eddie.cai.linux@gmail.com>

Can you please run the patch through checkpatch, I can at least spot some 
missing whitespace.

You can add my

Reviewed-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>

to your v2.

Kind regards,

Stefan

> ---
>  drivers/usb/host/dwc2.c | 17 +++++++++++------
>  1 file changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
> index 5ac602e..a151ba6 100644
> --- a/drivers/usb/host/dwc2.c
> +++ b/drivers/usb/host/dwc2.c
> @@ -811,12 +811,17 @@ static int transfer_chunk(struct dwc2_hc_regs
> *hc_regs, void *aligned_buffer, (*pid << DWC2_HCTSIZ_PID_OFFSET),
>  	       &hc_regs->hctsiz);
> 
> -	if (!in && xfer_len) {
> -		memcpy(aligned_buffer, buffer, xfer_len);
> -
> -		flush_dcache_range((unsigned long)aligned_buffer,
> -				   (unsigned long)aligned_buffer +
> -				   roundup(xfer_len, ARCH_DMA_MINALIGN));
> +	if (xfer_len) {
> +		if(in){
> +			invalidate_dcache_range((unsigned long)aligned_buffer,
> +					   (unsigned long)aligned_buffer +
> +					   roundup(xfer_len, ARCH_DMA_MINALIGN));
> +		}else{
> +			memcpy(aligned_buffer, buffer, xfer_len);
> +			flush_dcache_range((unsigned long)aligned_buffer,
> +					   (unsigned long)aligned_buffer +
> +					   roundup(xfer_len, ARCH_DMA_MINALIGN));
> +		}
>  	}
> 
>  	writel(phys_to_bus((unsigned long)aligned_buffer), &hc_regs->hcdma);

  reply	other threads:[~2017-04-03 14:43 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-01  6:51 [U-Boot] usb: dwc2: invalidate the dcache before starting the DMA Eddie Cai
2017-04-03 14:43 ` Brüns, Stefan [this message]
2017-04-03 19:33   ` Marek Vasut
2017-04-05  1:26 ` Kever Yang
2017-04-05  2:21   ` Simon Glass
2017-04-05  9:35     ` Marek Vasut
2017-04-05 10:08       ` Simon Glass
2017-04-05 10:21         ` Marek Vasut
2017-04-05 15:03           ` Simon Glass
2017-04-05 21:34             ` Marek Vasut
2017-04-06  1:24               ` Simon Glass
2017-04-06  1:32                 ` Marek Vasut
2017-04-06  2:40                   ` Simon Glass
2017-04-06 10:22                     ` Marek Vasut
2017-04-06 14:06                       ` Simon Glass
2017-04-06 15:33                         ` Marek Vasut
2017-04-06 15:57                           ` Simon Glass

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=7851308.6iHcp38Qv5@sbruens-linux \
    --to=stefan.bruens@rwth-aachen.de \
    --cc=u-boot@lists.denx.de \
    /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