From: pwaechtler@mac.com (Peter Waechtler)
To: linux-arm-kernel@lists.infradead.org
Subject: ARM11MPcore: tlb_ops_need_broadcast causes deadlock
Date: Sun, 25 Mar 2012 22:22:49 +0200 [thread overview]
Message-ID: <4F6F7E99.1020500@mac.com> (raw)
In-Reply-To: <20120325191556.GA3147@n2100.arm.linux.org.uk>
On 25.03.2012 21:15, Russell King - ARM Linux wrote:
> On Sun, Mar 25, 2012 at 08:22:05PM +0200, Peter Waechtler wrote:
>> On 25.03.2012 15:09, Russell King - ARM Linux wrote:
>>> On Sun, Mar 25, 2012 at 12:08:47PM +0000, Peter Waechtler wrote:
>>>> But Will, is that tlb_flush necessary at all? The ARM has only 3 permission
>>>> bits in the page table (APX and AP0 and AP1). The young/accessed bit is done
>>>> via software.
>>> Yes it most definitely is, because setting a page to be young means we
>>> must receive a subsequent fault to make it 'old' again. This means we
>>> must set the page to be inaccessible to get that fault, and flush the
>>> TLBs across all CPUs so that any CPU accessing that page receives a
>>> fault.
>> Ok I see, it's also not the "right or perfect" fix.
> It's not a fix or anything, it's required behaviour - otherwise we could
> end up throwing out pages from the system which are actually 'hot' because
> they've stayed in the TLB and we haven't received a fault to make them
> young again.
I'm arguing solely on kswapd making a young page old. So it can't be a
hot page.
But yes in theory it's possible that it just become hot on another cpu...
And again I don't understand the abort handler: why do we get a page
fault on
a young page then? grrh
> Moreover, what about the case where we actually remove the page?
I don't claim that this is the only way to deadlock - but this is the
case we encounter.
> Aren't we also holding the pte lock there? So I don't think there's an
> obvious solution to your deadlock.
>
> I think the real question is - in your example - why are you touching
> a userspace page with IRQs off _and_ expecting the fault to be fixed up?
> You never really explained what CPU B was doing.
It was running some user space program. It was not in the kernel.
I will post the jtag probe screenshots tomorrow.
Peter
next prev parent reply other threads:[~2012-03-25 20:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-22 12:24 ARM11MPcore: tlb_ops_need_broadcast causes deadlock EXTERNAL Waechtler Peter (Fa. TCP, CM-AI/PJ-CF31)
2012-03-23 17:30 ` Will Deacon
2012-03-25 12:08 ` Peter Waechtler
2012-03-25 13:09 ` Russell King - ARM Linux
2012-03-25 18:22 ` Peter Waechtler
2012-03-25 19:15 ` Russell King - ARM Linux
2012-03-25 20:22 ` Peter Waechtler [this message]
2012-03-25 21:55 ` Russell King - ARM Linux
2012-03-26 15:20 ` Will Deacon
[not found] ` <274124B9C6907D4B8CE985903EAA19E91B2D5798D9@SI-MBX06.de.bosch.com>
2012-03-27 13:32 ` Will Deacon
2012-03-27 17:41 ` George G. Davis
2012-03-28 8:56 ` Will Deacon
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=4F6F7E99.1020500@mac.com \
--to=pwaechtler@mac.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.