Messages in this thread | | | Subject | Re: USB mass storage and ARM cache coherency | From | Benjamin Herrenschmidt <> | Date | Tue, 02 Mar 2010 15:11:01 +1100 |
| |
On Mon, 2010-03-01 at 11:10 +0000, Catalin Marinas wrote: > > > Yes. That could be solved at set_pte_at() level using IPIs.
Well, set_pte_at() itself is called with the PTE lock held, so you have to be careful with IPIs at that point. You need the flush to happen -before- the PTE is visible and you cannot synchronously send an IPI.
> > For that case, I see two options. One is a big hammer but would make > > existing code work to "most" extent: Don't allow a page to be both > > writable and executable. Ping-pong the page permission lazily and > flush > > when transitioning from write to exec. > > Are you referring to the SMP and non-broadcasting cache maintenance > issue? The same pte could be shared between multiple CPUs, so once you > make it executable on one it becomes executable on the others.
Right, you would have to play the ping-pong trick globally. That's what I do on ppc 440 for bluegene though that code isn't upstream.
Cheers, Ben.
| |