linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: [BUG] "sched: Remove rq->lock from the first half of ttwu()" locks up on ARM
Date: Sun, 29 May 2011 11:21:19 +0100	[thread overview]
Message-ID: <20110529102119.GC9489@e102109-lin.cambridge.arm.com> (raw)
In-Reply-To: <20110527205240.GT24876@n2100.arm.linux.org.uk>

On Fri, May 27, 2011 at 09:52:40PM +0100, Russell King - ARM Linux wrote:
> On Fri, May 27, 2011 at 02:06:29PM +0200, Ingo Molnar wrote:
> > The expectations are to have irqs off (we are holding the runqueue
> > lock if !__ARCH_WANT_INTERRUPTS_ON_CTXSW), so that's not workable i
> > suspect.
> 
> Just a thought, but we _might_ be able to avoid a lot of this hastle if
> we had a new arch hook in finish_task_switch(), after finish_lock_switch()
> returns but before the old MM is dropped.
...
> We could change switch_mm() to only do:
> 
> 1. flush branch predictor
> 2. set swapper_pg_dir tables
> 3. check ASID validity
> 4. set new ASID value

If we find that we ran out of ASIDs, we can't reset it across all the
other CPUs at this point as we have interrupts disabled. So here we
assume that we don't need to reset the ASIDs.

> At this point, we have no user mappings, and so nothing will be using the
> ASID at this point.  Then in a new post-finish_lock_switch() arch hook:
> 
> 5. check whether we need to do flushing as a result of ASID change
> 6. set new page tables

Can we actually not move points 1, 3 and 4 to the
post-finish_lock_switch() hook as well? We don't really care what's in
the ASID as long as we don't have any user mappings. The same goes for
the branch predictor (which may be wrongly placed already). This would
make the switch_mm() relatively simple and move the check_context() and
cpu_switch_mm() to the post-switch hook.

On A15, the ASID is part of TTBR0 so we set both of them at the same
time in the post-switch hook.

To avoid extra per-thread flags, we could set a per-cpu variable in
switch_mm() so that we know what to switch the page tables to in the
post-switch hook.

So I think this is feasible but it needs some intensive testing.

-- 
Catalin

  parent reply	other threads:[~2011-05-29 10:21 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-24 18:13 [BUG] "sched: Remove rq->lock from the first half of ttwu()" locks up on ARM Marc Zyngier
2011-05-24 21:32 ` Peter Zijlstra
2011-05-24 21:39   ` Ingo Molnar
2011-05-25 12:23     ` Marc Zyngier
2011-05-25 17:08   ` Peter Zijlstra
2011-05-25 21:15     ` Peter Zijlstra
2011-05-26  7:29       ` Yong Zhang
2011-05-26 10:32         ` Peter Zijlstra
2011-05-26 11:02           ` Marc Zyngier
2011-05-26 11:32             ` Peter Zijlstra
2011-05-26 12:21               ` Peter Zijlstra
2011-05-26 12:26                 ` Ingo Molnar
2011-05-26 12:31                   ` Russell King - ARM Linux
2011-05-26 12:37                     ` Peter Zijlstra
2011-05-26 12:50                     ` Ingo Molnar
2011-05-26 13:36                       ` Russell King - ARM Linux
2011-05-26 14:45                       ` Catalin Marinas
2011-05-27 12:06                         ` Ingo Molnar
2011-05-27 17:55                           ` Russell King - ARM Linux
2011-05-27 19:41                           ` Nicolas Pitre
2011-05-27 20:52                           ` Russell King - ARM Linux
2011-05-28 13:13                             ` Peter Zijlstra
2011-05-31 11:08                               ` Michal Simek
2011-05-31 13:22                                 ` Peter Zijlstra
2011-05-31 13:37                                   ` Michal Simek
2011-05-31 13:52                                     ` Peter Zijlstra
2011-05-31 14:08                                       ` Michal Simek
2011-05-31 14:29                                         ` Peter Zijlstra
2011-05-29 10:21                             ` Catalin Marinas [this message]
2011-05-29 10:26                               ` Russell King - ARM Linux
2011-05-29 12:01                                 ` Catalin Marinas
2011-05-29 13:19                                   ` Russell King - ARM Linux
2011-05-29 21:21                                     ` Catalin Marinas
2011-05-29  9:51                           ` Catalin Marinas
2011-06-06 10:29                           ` Pavel Machek
2011-05-26 14:56                 ` Marc Zyngier
2011-05-26 15:45                 ` Oleg Nesterov
2011-05-26 15:59                   ` Peter Zijlstra
2011-05-26 16:09                     ` Peter Zijlstra
2011-05-26 16:20                       ` Marc Zyngier
2011-05-26 16:32                         ` Peter Zijlstra
2011-05-27  8:01                           ` Marc Zyngier
2011-05-26 16:22                       ` Marc Zyngier
2011-05-26 17:04                       ` Oleg Nesterov
2011-05-26 17:17                         ` Peter Zijlstra
2011-05-26 17:23                           ` Peter Zijlstra
2011-05-26 17:49                             ` Oleg Nesterov
2011-05-27  7:01                             ` Yong Zhang
2011-05-27 15:23                             ` Santosh Shilimkar
2011-05-27 15:29                               ` Marc Zyngier
2011-05-27 15:30                                 ` Santosh Shilimkar

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=20110529102119.GC9489@e102109-lin.cambridge.arm.com \
    --to=catalin.marinas@arm.com \
    --cc=linux-arm-kernel@lists.infradead.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).