linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: linuxppc-dev@lists.ozlabs.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Hugh Dickins <hughd@google.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: mmotm threatens ppc preemption again
Date: Tue, 22 Mar 2011 09:52:22 +1100	[thread overview]
Message-ID: <1300747942.2402.262.camel@pasglop> (raw)
In-Reply-To: <4D873571.702@goop.org>

On Mon, 2011-03-21 at 11:24 +0000, Jeremy Fitzhardinge wrote:
> 
> I'm very sorry about that, I didn't realize power was also using that
> interface.  Unfortunately, the "no preemption" definition was an error,
> and had to be changed to match the pre-existing locking rules.
> 
> Could you implement a similar "flush batched pte updates on context
> switch" as x86? 

Well, we already do that for -rt & co.

However, we have another issue which is the reason we used those
lazy_mmu hooks to do our flushing.

Our PTEs eventually get faulted into a hash table which is what the real
MMU uses. We must never (ever) allow that hash table to contain a
duplicate entry for a given virtual address.

When we do a batch, we remove things from the linux PTE, and keep a
reference in our batch structure, and only update the hash table at the
end of the batch.

That means that we must not allow a hash fault to populate the hash with
a "new" PTE value prior to the old one having been flushed out (which is
possible if they different in protection attributes for example). For
that to happen, we must basically not allow a page fault to re-populate
a PTE invalidated by a batch before that batch has completed.

That translates to batches must only happen within a PTE lock section.

Cheers,
Ben.

  reply	other threads:[~2011-03-21 22:53 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-20  4:11 mmotm threatens ppc preemption again Hugh Dickins
2011-03-20 23:53 ` Benjamin Herrenschmidt
2011-03-21  1:41   ` Hugh Dickins
2011-03-21  1:50     ` Benjamin Herrenschmidt
2011-03-21  2:20       ` Hugh Dickins
2011-03-21  2:22         ` Benjamin Herrenschmidt
2011-03-30 20:53           ` Andrew Morton
2011-03-30 21:07             ` Jeremy Fitzhardinge
2011-03-31  0:52               ` Benjamin Herrenschmidt
2011-03-31 17:21                 ` Jeremy Fitzhardinge
2011-03-31 20:38                   ` Benjamin Herrenschmidt
2011-05-18 23:29                     ` Jeremy Fitzhardinge
2011-03-21 11:24   ` Jeremy Fitzhardinge
2011-03-21 22:52     ` Benjamin Herrenschmidt [this message]
2011-03-22 13:34       ` Jeremy Fitzhardinge

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=1300747942.2402.262.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=hughd@google.com \
    --cc=jeremy@goop.org \
    --cc=linuxppc-dev@lists.ozlabs.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).