linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Oliver Neukum <oliver@neukum.org>,
	"Shilimkar, Santosh" <santosh.shilimkar@ti.com>,
	Matthew Dharm <mdharm-kernel@one-eyed-alien.net>,
	Ming Lei <tom.leiming@gmail.com>,
	"Mankad, Maulik Ojas" <x0082077@ti.com>,
	Sergei Shtylyov <sshtylyov@ru.mvista.com>,
	Sebastian Siewior <bigeasy@linutronix.de>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Pavel Machek <pavel@ucw.cz>, Greg KH <greg@kroah.com>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>
Subject: Re: USB mass storage and ARM cache coherency
Date: Thu, 18 Feb 2010 09:31:32 +1100	[thread overview]
Message-ID: <1266445892.16346.306.camel@pasglop> (raw)
In-Reply-To: <20100217204404.GD30033@n2100.arm.linux.org.uk>

On Wed, 2010-02-17 at 20:44 +0000, Russell King - ARM Linux wrote:
> No, because that'd probably bugger up the Sparc64 method of delaying
> flush_dcache_page.
> 
> This method works as follows:
> 
> - a page cache page is allocated - this has PG_arch_1 clear.
> 
> - IO happens on it and it's placed into the page cache.  PG_arch_1 is
>   still clear.
> 
> - someone calls read()/write() which accesses the page.  The generic
>   file IO layers call flush_dcache_page() in response to
> read()/write()
>   fs calls.  flush_dcache_page() spots that the page is not yet mapped
>   into userspace, and sets PG_arch_1 to mark the fact that the kernel
>   mapping is dirty.
> 
> - when someone maps the page, we check PG_arch_1 in update_mmu_cache.
>   If PG_arch_1 is set, we flush the kernel mapping.
> 
> Clearly, if we go around having drivers clearing PG_arch_1, this is
> going to break horribly. 

Ok, you do things very differently than us on ppc then. We clear
PG_arch_1 in flush_dcache_page(), and we set it when the page has been
cache cleaned for execution.

We assume that anybody that dirties a page in the kernel will call
flush_dcache_page() which removes our PG_arch_1 bit thus marking the
page "dirty".

Note that from experience, doing the check & flushes in
update_mmu_cache() is racy on SMP. At least for I$/D$, we have the case
where processor one does set_pte followed by update_mmu_cache(). The
later isn't done yet but processor 2 sees the PTE now and starts using
it, cache hasn't been fully flushed yet. You may avoid that race in some
ways, but on ppc, I've stopped using that.

I now do things directly in set_pte_at(). In fact, that's why I want
your patch to change update_mmu_cache() to take a PTE pointer :-) Since
my set_pte_at() can now remove the _PAGE_EXEC bit, I need
update_mmu_cache() to re-read the PTE before it updates the hash table
or TLB.

Cheers,
Ben.


  reply	other threads:[~2010-02-17 22:33 UTC|newest]

Thread overview: 193+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-29 14:34 USB mass storage and ARM cache coherency Catalin Marinas
2010-01-29 16:10 ` Oliver Neukum
2010-01-29 16:23 ` Ming Lei
2010-01-29 16:34   ` Catalin Marinas
2010-01-29 16:41     ` Oliver Neukum
2010-01-29 17:14       ` Catalin Marinas
2010-01-29 17:51     ` Sergei Shtylyov
2010-01-29 18:54       ` Matthew Dharm
2010-01-29 19:35         ` Greg KH
2010-02-01 13:49         ` Catalin Marinas
2010-02-01 17:29         ` Catalin Marinas
2010-02-01 20:14           ` Alan Stern
2010-02-02  4:24             ` Paul Mundt
2010-02-02  9:58               ` Catalin Marinas
2010-02-01 22:30           ` Andreas Mohr
2010-02-02  6:58             ` Oliver Neukum
2010-02-02  9:31               ` Florian Fainelli
2010-02-02  6:39           ` Paul Mundt
2010-02-02 11:05             ` Catalin Marinas
2010-02-02 11:15               ` Paul Mundt
2010-02-02  9:11           ` Sebastian Andrzej Siewior
2010-02-02 11:09             ` Catalin Marinas
2010-02-02 11:48           ` Oliver Neukum
2010-02-02 12:01             ` Catalin Marinas
2010-02-02 12:07               ` Oliver Neukum
2010-02-02 12:11                 ` Andreas Mohr
2010-02-02 14:42                   ` Clemens Ladisch
2010-02-02 14:52                     ` Oliver Neukum
2010-02-02 15:10                       ` Andreas Mohr
2010-02-02 15:34                         ` Catalin Marinas
2010-02-02 20:38                     ` Andreas Mohr
2010-02-02 12:39                 ` Catalin Marinas
2010-02-02 13:08                   ` Oliver Neukum
2010-02-02 14:34                     ` Catalin Marinas
2010-02-02 17:11                     ` Alan Stern
2010-02-02 17:20                       ` Catalin Marinas
2010-02-02 21:52                         ` Andreas Mohr
2010-02-03 15:15                           ` Alan Stern
2010-02-08  6:55                       ` Pavel Machek
2010-02-02 13:36                   ` Ming Lei
2010-02-02 14:35                     ` Catalin Marinas
2010-02-08  6:55           ` Pavel Machek
2010-02-08  7:33             ` Andreas Mohr
2010-02-08 10:19               ` Catalin Marinas
2010-02-08  9:51             ` Catalin Marinas
2010-02-08 10:03               ` Andy Green
2010-02-17  9:50                 ` Sascha Hauer
2010-02-17  9:57                   ` Andy Green
2010-02-08 10:52               ` Pavel Machek
2010-02-08 11:28                 ` Catalin Marinas
2010-02-16  7:57                   ` Shilimkar, Santosh
2010-02-16  8:22                     ` Oliver Neukum
2010-02-16  8:55                       ` Shilimkar, Santosh
2010-02-16  9:07                         ` Oliver Neukum
2010-02-16  9:39                           ` Russell King - ARM Linux
2010-02-16 13:32                             ` Oliver Neukum
2010-02-16 13:40                               ` Shilimkar, Santosh
2010-02-16 13:46                                 ` Oliver Neukum
2010-02-16 14:12                                   ` Shilimkar, Santosh
2010-02-16 14:22                                     ` Oliver Neukum
2010-02-16 14:45                                       ` Shilimkar, Santosh
2010-02-16 15:44                                         ` Alan Stern
2010-02-17  8:55                                       ` Shilimkar, Santosh
2010-02-17  9:10                                         ` Oliver Neukum
2010-02-17  9:17                                           ` Shilimkar, Santosh
2010-02-17 17:02                                         ` Alan Stern
2010-02-17 20:26                                           ` Russell King - ARM Linux
2010-02-17 20:30                                           ` Gadiyar, Anand
2010-02-18  6:56                                             ` Oliver Neukum
2010-02-18  7:14                                               ` Gadiyar, Anand
2010-02-17 12:29                             ` Jamie Lokier
2010-02-17  3:21                         ` Ming Lei
2010-02-17  9:05                       ` Benjamin Herrenschmidt
2010-02-17  9:15                         ` Oliver Neukum
2010-02-17  9:40                           ` Benjamin Herrenschmidt
2010-02-17 10:09                             ` Oliver Neukum
2010-02-17 10:18                               ` Benjamin Herrenschmidt
2010-02-17 10:23                                 ` Oliver Neukum
2010-02-17 12:15                                   ` Benjamin Herrenschmidt
2010-02-17  9:55                         ` Russell King - ARM Linux
2010-02-17 10:05                           ` Benjamin Herrenschmidt
2010-02-17 15:27                         ` Catalin Marinas
2010-02-17 20:37                           ` Benjamin Herrenschmidt
2010-02-17 20:44                             ` Russell King - ARM Linux
2010-02-17 22:31                               ` Benjamin Herrenschmidt [this message]
2010-02-19 17:15                                 ` Catalin Marinas
2010-02-19 17:36                                   ` Catalin Marinas
2010-02-19 20:53                                     ` Oliver Neukum
2010-02-24  2:48                                       ` Benjamin Herrenschmidt
2010-02-24  7:16                                         ` Oliver Neukum
2010-02-24 21:12                                           ` Benjamin Herrenschmidt
2010-02-25  3:48                                             ` Oliver Neukum
2010-02-26  0:22                                               ` Benjamin Herrenschmidt
2010-02-25 12:36                                             ` James Bottomley
2010-02-24  2:47                                     ` Benjamin Herrenschmidt
2010-02-24 16:19                                       ` Alan Stern
2010-02-24 21:13                                         ` Benjamin Herrenschmidt
2010-02-24 21:50                                           ` Alan Stern
2010-02-25 20:52                                             ` Benjamin Herrenschmidt
2010-02-26 16:00                                           ` Catalin Marinas
2010-02-26 21:36                                             ` Benjamin Herrenschmidt
2010-02-26 16:25                                       ` Catalin Marinas
2010-02-26 16:52                                         ` Alan Stern
2010-02-26 21:51                                           ` Benjamin Herrenschmidt
2010-02-26 21:00                                         ` Russell King - ARM Linux
2010-02-28  0:14                                           ` Benjamin Herrenschmidt
2010-02-28  5:01                                             ` James Bottomley
2010-03-01 10:39                                               ` Catalin Marinas
2010-03-01 11:06                                                 ` Russell King - ARM Linux
2010-03-02 12:11                                               ` FUJITA Tomonori
2010-03-02 17:05                                                 ` Catalin Marinas
2010-03-02 17:47                                                   ` Catalin Marinas
2010-03-02 23:33                                                     ` Benjamin Herrenschmidt
2010-03-03 10:21                                                       ` Catalin Marinas
2010-03-02 23:29                                                   ` Benjamin Herrenschmidt
2010-03-03  3:47                                                     ` FUJITA Tomonori
2010-03-03  5:10                                                       ` Benjamin Herrenschmidt
2010-03-03  5:40                                                         ` James Bottomley
2010-03-03  9:36                                                           ` Russell King - ARM Linux
2010-03-03 10:24                                                             ` James Bottomley
2010-03-03 19:41                                                               ` Russell King - ARM Linux
2010-03-04  2:00                                                           ` Benjamin Herrenschmidt
2010-03-04  8:26                                                             ` James Bottomley
2010-03-04 21:25                                                               ` Benjamin Herrenschmidt
2010-03-03  6:35                                                         ` FUJITA Tomonori
2010-03-03 10:43                                                       ` Catalin Marinas
2010-03-03 10:40                                                     ` Catalin Marinas
2010-03-03 21:54                                                   ` Pavel Machek
2010-03-04 13:35                                                     ` Catalin Marinas
2010-03-04 13:51                                                       ` Pavel Machek
2010-03-04 14:21                                                         ` James Bottomley
2010-03-04 14:27                                                           ` Russell King - ARM Linux
2010-03-04 15:25                                                             ` Catalin Marinas
2010-03-04 15:34                                                               ` Russell King - ARM Linux
2010-03-04 21:31                                                               ` Benjamin Herrenschmidt
2010-03-06 10:47                                                             ` James Bottomley
2010-03-06 19:36                                                               ` Russell King - ARM Linux
2010-03-06 21:07                                                                 ` Benjamin Herrenschmidt
2010-03-07  5:54                                                                 ` James Bottomley
2010-03-08 11:17                                                                 ` Catalin Marinas
2010-03-06 21:03                                                               ` Benjamin Herrenschmidt
2010-03-07  3:37                                                                 ` James Bottomley
2010-03-08  8:46                                                                   ` FUJITA Tomonori
2010-03-09  2:25                                                                   ` Benjamin Herrenschmidt
2010-03-04 15:29                                                           ` Catalin Marinas
2010-03-04 15:41                                                             ` Paul Mundt
2010-03-04 16:30                                                               ` Russell King - ARM Linux
2010-03-04 17:34                                                                 ` Catalin Marinas
2010-03-04 17:54                                                                   ` Russell King - ARM Linux
2010-03-04 22:27                                                                 ` Andreas Mohr
2010-03-04 18:07                                                               ` Catalin Marinas
2010-03-04 21:37                                                                 ` Benjamin Herrenschmidt
2010-03-04 22:11                                                                   ` Catalin Marinas
2010-03-05  4:34                                                                     ` Benjamin Herrenschmidt
2010-03-05  9:27                                                                       ` Catalin Marinas
2010-03-05  1:17                                                                   ` Paul Mundt
2010-03-05  4:44                                                                     ` Benjamin Herrenschmidt
2010-03-10  3:52                                                                       ` Paul Mundt
2010-03-11 21:44                                                                         ` Benjamin Herrenschmidt
2010-03-04 21:34                                                               ` Benjamin Herrenschmidt
2010-03-04 21:28                                                           ` Benjamin Herrenschmidt
2010-03-04 21:40                                                             ` Russell King - ARM Linux
2010-03-05  4:31                                                               ` Benjamin Herrenschmidt
2010-03-04 15:35                                                         ` Catalin Marinas
2010-03-07  8:23                                                           ` Pavel Machek
2010-03-08 10:57                                                             ` Catalin Marinas
2010-03-02 23:26                                                 ` Benjamin Herrenschmidt
2010-03-01 10:42                                             ` Catalin Marinas
2010-03-03 20:24                                               ` Jamie Lokier
2010-02-26 21:40                                         ` Benjamin Herrenschmidt
2010-02-26 21:49                                           ` Russell King - ARM Linux
2010-02-28  0:24                                             ` Benjamin Herrenschmidt
2010-02-28 19:17                                               ` Pavel Machek
2010-03-01 11:10                                               ` Catalin Marinas
2010-03-02  4:11                                                 ` Benjamin Herrenschmidt
2010-02-24  2:39                                   ` Benjamin Herrenschmidt
2010-02-26 16:44                                     ` Catalin Marinas
2010-02-26 21:49                                       ` Benjamin Herrenschmidt
2010-02-26 22:03                                         ` Russell King - ARM Linux
2010-02-28  0:29                                           ` Benjamin Herrenschmidt
2010-02-28 23:20                                           ` Catalin Marinas
2010-02-28 23:17                                         ` Catalin Marinas
2010-02-17 15:27                         ` Catalin Marinas
2010-02-17 15:39                         ` Catalin Marinas
2010-02-17 15:40                         ` Catalin Marinas
2010-02-17 15:40                         ` Catalin Marinas
2010-02-17 16:19                           ` Catalin Marinas
2010-02-17 16:19                           ` Catalin Marinas
2010-02-16  8:44                     ` Russell King - ARM Linux
2010-02-16  8:51                       ` Gadiyar, Anand
2010-02-20  7:21                         ` Pete Zaitcev
  -- strict thread matches above, loose matches on Subject: below --
2010-02-03 23:56 George Spelvin
2010-02-04  4:39 ` Paul Mundt

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=1266445892.16346.306.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=bigeasy@linutronix.de \
    --cc=catalin.marinas@arm.com \
    --cc=greg@kroah.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mdharm-kernel@one-eyed-alien.net \
    --cc=oliver@neukum.org \
    --cc=pavel@ucw.cz \
    --cc=santosh.shilimkar@ti.com \
    --cc=sshtylyov@ru.mvista.com \
    --cc=tom.leiming@gmail.com \
    --cc=x0082077@ti.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;
as well as URLs for NNTP newsgroup(s).