All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.