linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Christoph Hellwig <hch@infradead.org>,
	tytso@mit.edu, Kyle McMartin <kyle@mcmartin.ca>,
	linux-parisc@vger.kernel.org,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	James.Bottomley@suse.de, linux-arch@vger.kernel.org,
	Jens Axboe <jens.axboe@oracle.com>
Subject: Re: [git patches] xfs and block fixes for virtually indexed arches
Date: Thu, 17 Dec 2009 18:08:03 +0000	[thread overview]
Message-ID: <20091217180802.GA1546@flint.arm.linux.org.uk> (raw)
In-Reply-To: <alpine.LFD.2.00.0912170928310.15740@localhost.localdomain>

On Thu, Dec 17, 2009 at 09:42:15AM -0800, Linus Torvalds wrote:
> You both flush the virtual caches before 
> the IO and invalidate after - when the real pattern should be that you 
> flush it before a write, and invalidate it after a read.

That's not entirely true.  If you have write back caches which are not DMA
coherent, you need to as a minimum:

- on write, clean the cache to ensure that the page is up to date with data
  held in cache.

- on read, you must ensure that there are no potential write-backs before
  the read commenses and invalidate at some point.

The point at which you invalidate depends on whether the CPU speculatively
prefetches:

- If it doesn't, you can invalidate the cache before the read, thereby
  destroying any potential writebacks, and the cache will remain
  unallocated for that address range until explicitly accessed.

- If you do have a CPU which does prefetch speculatively, then you do
  need to clean the cache before DMA starts, and then you must invalidate
  after the DMA completes.

Invalidating after DMA completes for the non-speculative prefetch just
wastes performance, especially if you have to do so line by line over
a region.

With ARM architecture version 7, we now have ARM CPUs which fall into
both categories.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

  parent reply	other threads:[~2009-12-17 18:08 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20091216043618.GB9104@hera.kernel.org>
2009-12-17 13:22 ` [git patches] xfs and block fixes for virtually indexed arches Kyle McMartin
2009-12-17 13:22   ` Kyle McMartin
2009-12-17 13:25   ` Christoph Hellwig
2009-12-17 16:16   ` Linus Torvalds
2009-12-17 16:30     ` tytso
2009-12-17 16:46       ` Linus Torvalds
2009-12-17 16:46         ` Linus Torvalds
2009-12-17 17:07         ` Christoph Hellwig
2009-12-17 17:07           ` Christoph Hellwig
2009-12-17 17:42           ` Linus Torvalds
2009-12-17 17:51             ` Christoph Hellwig
2009-12-17 17:51               ` Christoph Hellwig
2009-12-17 18:08             ` Russell King [this message]
2009-12-17 18:08               ` Russell King
2009-12-17 18:17               ` Linus Torvalds
2009-12-17 18:17                 ` Linus Torvalds
2009-12-19 18:33             ` Ralf Baechle
2009-12-19 18:33               ` Ralf Baechle
2009-12-21 17:14               ` James Bottomley
2009-12-17 17:39         ` tytso
2009-12-17 17:39           ` tytso
2009-12-17 17:51           ` Linus Torvalds
2009-12-17 19:36             ` Jens Axboe
2009-12-17 19:36               ` Jens Axboe
2009-12-17 23:57               ` James Bottomley
2009-12-17 23:57                 ` James Bottomley
2009-12-18  1:00                 ` FUJITA Tomonori
2009-12-18  2:44                   ` Dave Chinner
2009-12-18  2:44                     ` Dave Chinner
2009-12-18  3:51                     ` FUJITA Tomonori
2009-12-18  3:51                       ` FUJITA Tomonori
2009-12-18  7:10                     ` James Bottomley
2009-12-18  7:08                   ` James Bottomley
2009-12-18  9:34                     ` FUJITA Tomonori
2009-12-18 10:01                       ` James Bottomley
2009-12-18 10:01                         ` James Bottomley
2009-12-18 10:24                         ` FUJITA Tomonori
2009-12-18 10:30                           ` James Bottomley
2009-12-18 12:00                     ` Dave Chinner
2009-12-18 12:00                       ` Dave Chinner
2009-12-18  0:21           ` FUJITA Tomonori
2009-12-18 14:17             ` tytso
2009-12-18 14:17               ` tytso
2009-12-21  8:53               ` FUJITA Tomonori
2009-12-17 17:10       ` Christoph Hellwig
2009-12-17 17:33         ` tytso
2009-12-17 17:33           ` tytso
2009-12-17 17:10       ` Christoph Hellwig

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=20091217180802.GA1546@flint.arm.linux.org.uk \
    --to=rmk+lkml@arm.linux.org.uk \
    --cc=James.Bottomley@suse.de \
    --cc=hch@infradead.org \
    --cc=jens.axboe@oracle.com \
    --cc=kyle@mcmartin.ca \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    /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).