From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/6] ARM: re-implement physical address space switching
Date: Wed, 6 May 2015 16:33:38 +0100 [thread overview]
Message-ID: <20150506153337.GA2974@leverpostej> (raw)
In-Reply-To: <20150506113313.GS2067@n2100.arm.linux.org.uk>
On Wed, May 06, 2015 at 12:33:13PM +0100, Russell King - ARM Linux wrote:
> On Wed, May 06, 2015 at 11:37:37AM +0100, Mark Rutland wrote:
> > Hi Russell,
> >
> > > > It turns out that I was incorrect in my assertion, and the reordering I
> > > > suggested above can't happen. The ARMv7 ARM states:
> > > >
> > > > Any direct write to a system control register is guaranteed not
> > > > to affect any instruction that appears, in program
> > > > order, before the instruction that performed the direct write
> > > >
> > > > Which means that the STMFD cannot be affected by the later cp15 write to
> > > > the SCTLR, and so the DSB does not need to be moved before the MCR.
> > > >
> > > > I apologise for adding to the confusion there.
> > >
> > > So does this mean this patch gets an ack now?
> >
> > I assumed there was going to be a respin for the CR_W change?
> >
> > There's also the dodginess w.r.t. the page table walkers that I can't
> > see is solvable short of disabling the MMU prior to the flush, though I
> > understand you've NAKed that approach.
>
> Why?
I was on about the pre-assembly portion:
cr = get_cr();
set_cr(cr & ~(CR_I | CR_C | CR_W));
flush_cache_all();
With the MMU on at this point the page table walkers can race with the
set/way maintenance. It also relies on the compiler not making stack
accesses between the SCTLR write and the completion of flush_cache_all,
which is likely but not guranteed.
So this won't necessarily flush out the data it seems to be intended to.
> Are you saying that after:
>
> + mrc p15, 0, r8, c1, c0, 0 @ read control reg
> + bic ip, r8, #CR_M @ disable caches and MMU
> + mcr p15, 0, ip, c1, c0, 0
> + dsb
> + isb
>
> the page table walkers are still actively walking the page table?
>
> That to me sounds like a hardware bug. The point of this is to shut
> down the MMU, _then_ update the page tables, and _then_ to re-enable
> the MMU to explicitly avoid problems with the page table walkers.
I agree that after this point it would be a bug for the page table
walkers to make cacheable accesses.
Thanks,
Mark.
next prev parent reply other threads:[~2015-05-06 15:33 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-08 9:44 [PATCH 0/7] Fix Keystone 2 physical address switch Russell King - ARM Linux
2015-04-08 9:45 ` [PATCH 1/6] ARM: keystone2: move platform notifier initialisation into platform init Russell King
2015-04-13 18:57 ` santosh shilimkar
2015-04-08 9:45 ` [PATCH 2/6] ARM: keystone2: move update of the phys-to-virt constants into generic code Russell King
2015-04-08 14:56 ` Grygorii.Strashko@linaro.org
2015-04-08 18:00 ` Russell King - ARM Linux
2015-04-09 14:51 ` Grygorii.Strashko@linaro.org
2015-04-09 15:49 ` Russell King - ARM Linux
2015-04-09 16:15 ` Grygorii.Strashko@linaro.org
2015-04-08 19:19 ` Russell King - ARM Linux
2015-04-13 19:02 ` santosh shilimkar
2015-04-08 9:45 ` [PATCH 3/6] ARM: keystone2: move address space switch printk to " Russell King
2015-04-13 19:02 ` santosh shilimkar
2015-04-08 9:45 ` [PATCH 4/6] ARM: keystone2: rename init_meminfo to pv_fixup Russell King
2015-04-13 19:03 ` santosh shilimkar
2015-04-08 9:45 ` [PATCH 5/6] ARM: re-implement physical address space switching Russell King
2015-04-08 14:34 ` Thomas Petazzoni
2015-04-08 17:27 ` santosh shilimkar
2015-04-08 18:10 ` Russell King - ARM Linux
2015-04-08 17:36 ` Mark Rutland
2015-04-08 17:55 ` Russell King - ARM Linux
2015-04-13 19:11 ` santosh shilimkar
2015-04-15 12:07 ` Mark Rutland
2015-04-15 17:27 ` santosh shilimkar
2015-04-23 11:24 ` Mark Rutland
2015-05-06 10:18 ` Russell King - ARM Linux
2015-05-06 10:37 ` Mark Rutland
2015-05-06 11:33 ` Russell King - ARM Linux
2015-05-06 15:33 ` Mark Rutland [this message]
2015-05-06 15:50 ` Russell King - ARM Linux
2015-05-06 16:14 ` Mark Rutland
2015-05-06 16:24 ` Will Deacon
2015-04-08 9:45 ` [PATCH 6/6] ARM: cleanup early_paging_init() calling Russell King
2015-04-13 19:13 ` santosh shilimkar
2015-04-08 17:21 ` [PATCH 0/7] Fix Keystone 2 physical address switch santosh shilimkar
2015-04-09 16:21 ` Russell King - ARM Linux
2015-04-09 16:35 ` 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=20150506153337.GA2974@leverpostej \
--to=mark.rutland@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 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.