linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@suse.de>
To: Bartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl>,
	linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
	Jeff Garzik <jgarzik@pobox.com>
Subject: Re: [patch][9/9] block: remove bio walking
Date: Thu, 9 Sep 2004 17:49:14 +0200	[thread overview]
Message-ID: <20040909154914.GH1737@suse.de> (raw)
In-Reply-To: <20040909154453.GG1737@suse.de>

On Thu, Sep 09 2004, Jens Axboe wrote:
> On Thu, Sep 09 2004, Russell King wrote:
> > Essentially, kernel PIO writes data into the page cache, and that action
> > may leave data in the CPU's caches.  Since the kernels mappings may not
> > be coherent with mappings in userspace, data written to the kernel
> > mappings may remain in the data cache, and stale data would be visible
> > to user space.
> > 
> > There has been talk about using flush_dcache_page() to resolve
> > this issue, but I'm not sure what the outcome was.  Certainly
> > flush_dcache_page() is supposed to be used before the data in the
> > kernels page cache is read or written.
> 
> Have you ever tested bouncing on arm? It seems to be lacking a
> flush_dcache_page() indeed, how does this look?
> 
> ===== mm/highmem.c 1.51 vs edited =====
> --- 1.51/mm/highmem.c	2004-07-29 06:58:32 +02:00
> +++ edited/mm/highmem.c	2004-09-09 17:44:14 +02:00
> @@ -301,6 +301,7 @@
>  		vfrom = page_address(fromvec->bv_page) + tovec->bv_offset;
>  
>  		bounce_copy_vec(tovec, vfrom);
> +		flush_dcache_page(tovec->bv_page);
>  	}
>  }

Not even enough, here's a better one.

===== mm/highmem.c 1.51 vs edited =====
--- 1.51/mm/highmem.c	2004-07-29 06:58:32 +02:00
+++ edited/mm/highmem.c	2004-09-09 17:47:58 +02:00
@@ -300,6 +300,7 @@
 		 */
 		vfrom = page_address(fromvec->bv_page) + tovec->bv_offset;
 
+		flush_dcache_page(tovec->bv_page);
 		bounce_copy_vec(tovec, vfrom);
 	}
 }
@@ -406,6 +407,7 @@
 		if (rw == WRITE) {
 			char *vto, *vfrom;
 
+			flush_dcache_page(from->bv_page);
 			vto = page_address(to->bv_page) + to->bv_offset;
 			vfrom = kmap(from->bv_page) + from->bv_offset;
 			memcpy(vto, vfrom, to->bv_len);

-- 
Jens Axboe


  reply	other threads:[~2004-09-09 15:50 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-08 19:27 [patch][9/9] block: remove bio walking Bartlomiej Zolnierkiewicz
2004-09-09  8:03 ` Russell King
2004-09-09 13:53   ` Bartlomiej Zolnierkiewicz
2004-09-09 14:04     ` Russell King
2004-09-09 14:28       ` Bartlomiej Zolnierkiewicz
2004-09-09 14:54         ` Russell King
2004-09-09 15:44           ` Jens Axboe
2004-09-09 15:49             ` Jens Axboe [this message]
2004-09-09 16:01             ` David S. Miller
2004-09-09 17:10           ` Bartlomiej Zolnierkiewicz
2004-09-09 14:32       ` Jens Axboe
2004-09-09 14:31     ` Jens Axboe

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=20040909154914.GH1737@suse.de \
    --to=axboe@suse.de \
    --cc=bzolnier@elka.pw.edu.pl \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).