From: geoff@infradead.org (Geoff Levand)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/5] arm64: Fix the soft_restart routine
Date: Mon, 16 Dec 2013 16:20:59 -0800 [thread overview]
Message-ID: <1387239659.1002.152.camel@smoke> (raw)
In-Reply-To: <20131213164646.GN19177@mudshark.cambridge.arm.com>
Hi Will,
On Fri, 2013-12-13 at 16:46 +0000, Will Deacon wrote:
> On Thu, Dec 12, 2013 at 08:39:46PM +0000, Geoff Levand wrote:
> > + /*
> > + * cpu_reset turns the MMU off, so must be called at its identity
> > + * mapped physical address.
> > + */
> > +
> > + (*(void(*)(unsigned long))virt_to_phys(cpu_reset))(addr);
>
> This isn't right; although cpu_reset *does* need to run from the idmap,
> actually the idmap only includes __turn_mmu_on. You just get lucky because
> its section-mapped and happens to include the code you want.
OK, I think this is different from fixing the call in soft_restart(), so
I'll make a separate patch for this.
I can see a few ways to do it but am not sure of the ramifications
of each. Should we put cpu_reset into the idmap at startup when we add
__turn_mmu_on, or add cpu_reset on demand from say setup_mm_for_reboot()?
If the former, is all we need something like this?
@@ -438,6 +438,9 @@ __create_page_tables:
adr x3, __turn_mmu_on // virtual/physical address
create_pgd_entry x25, x0, x3, x5, x6
create_block_map x0, x7, x3, x5, x5, idmap=1
+ adr x3, cpu_reset // virtual/physical address
+ create_pgd_entry x25, x0, x3, x5, x6
+ create_block_map x0, x7, x3, x5, x5, idmap=1
> The cast is also cleaner if you define a phys_reset_t type, like we do for
> arch/arm/.
I'll send out an updated fix.
-Geoff
next prev parent reply other threads:[~2013-12-17 0:20 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-12 20:39 [PATCH 0/5] a few small fixups for arm64 Geoff Levand
2013-12-12 20:39 ` [PATCH 1/5] arm64: Fix __data_loc value Geoff Levand
2013-12-13 17:46 ` Russell King - ARM Linux
2013-12-13 18:17 ` Catalin Marinas
2013-12-14 0:20 ` Geoff Levand
2013-12-12 20:39 ` [PATCH 5/5] arm64: Add LOAD_OFFSET symbol for linker scripts Geoff Levand
2013-12-13 16:45 ` Will Deacon
2013-12-14 0:20 ` Geoff Levand
2013-12-14 0:31 ` Jason Gunthorpe
2013-12-16 17:29 ` Will Deacon
2013-12-17 0:21 ` Geoff Levand
2013-12-12 20:39 ` [PATCH 3/5] arm64: Fix include header order in vmlinux.lds.S Geoff Levand
2013-12-12 20:39 ` [PATCH 2/5] arm64: Fix the soft_restart routine Geoff Levand
2013-12-13 16:46 ` Will Deacon
2013-12-17 0:20 ` Geoff Levand [this message]
2013-12-12 20:39 ` [PATCH 4/5] arm64: Add missing AT() macros to vmlinux.lds.S Geoff Levand
2013-12-13 16:49 ` Will Deacon
2013-12-14 0:20 ` Geoff Levand
2013-12-14 0:20 ` [PATCH v2 1/5] arm64: Remove unused __data_loc variable Geoff Levand
2013-12-20 12:05 ` Catalin Marinas
2013-12-17 0:19 ` [PATCH v2 2/5] arm64: Fix the soft_restart routine Geoff Levand
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=1387239659.1002.152.camel@smoke \
--to=geoff@infradead.org \
--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.