linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v15 17/20] arm64: kdump: implement machine_crash_shutdown()
Date: Fri, 1 Apr 2016 10:36:35 +0100	[thread overview]
Message-ID: <20160401093635.GA29876@leverpostej> (raw)
In-Reply-To: <20160401084509.GA11108@linaro.org>

On Fri, Apr 01, 2016 at 05:45:09PM +0900, AKASHI Takahiro wrote:
> On Thu, Mar 31, 2016 at 11:10:38AM +0100, Mark Rutland wrote:
> > On Thu, Mar 31, 2016 at 09:12:32AM +0100, Marc Zyngier wrote:
> > > On 31/03/16 08:57, AKASHI Takahiro wrote:
> > > > On Mon, Mar 21, 2016 at 01:29:28PM +0000, James Morse wrote:
> > > >> On 18/03/16 18:08, James Morse wrote:
> > > >>> On 14/03/16 17:48, Geoff Levand wrote:
> > > >>>> +	/* just in case */
> > > >>>> +	while (1)
> > > >>>> +		wfi();
> > > >>
> > > >> Having thought about this some more: I don't think spinning like this is safe.
> > > >> We need to spin with the MMU turned off, otherwise this core will pollute the
> > > >> kdump kernel with TLB entries from the old page tables.
> > > > 
> > > > I think that wfi() will never wake up since local interrupts are disabled
> > > > here. So how can it pollute the kdump kernel?
> > > 
> > > Having interrupts disabled doesn't prevent an exit from WFI. Quite the
> > > opposite, actually. It is designed to wake-up the core when something
> > > happens on the external interface.
> > 
> > Further, WFI is a hint, and may simply act as a NOP. 
> 
> Ah, OK. But even so, none of interrupt handlers (nor other code) will
> be executed after cpu wakes up, and the memory won't be polluted.

The code comprising the while(1) loop will be executed, and TLB walks,
speculative fetches, etc may occur regardless.

We don't share TLB entries between cores (we don't have support for
ARMv8.2s CnP), and the kdump kernel should be running in a carveout from
main memory (which IIUC is not mapped by the original kernel). So
normally, this would not be a problem.

However, if there is a problem with the page tables (e.g. entries
erroneously point into a PA range the kdump kernel is using), then
unavoidable background memory traffic from the CPU may cause problems
for the kdump kernel.

Thanks,
Mark.

  reply	other threads:[~2016-04-01  9:36 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-14 17:47 [PATCH v15 00/20] arm64 kexec kernel patches v15 Geoff Levand
2016-03-14 17:48 ` [PATCH v15 11/20] Revert "arm64: remove dead code" Geoff Levand
2016-03-14 17:48 ` [PATCH v15 10/20] Revert "arm64: mm: remove unused cpu_set_idmap_tcr_t0sz function" Geoff Levand
2016-03-14 17:48 ` [PATCH v15 02/20] arm64: Cleanup SCTLR flags Geoff Levand
2016-03-14 17:48 ` [PATCH v15 09/20] arm64: Add back cpu_reset routines Geoff Levand
2016-03-14 17:48 ` [PATCH v15 07/20] arm64: Promote KERNEL_START/KERNEL_END definitions to a header file Geoff Levand
2016-03-14 17:48 ` [PATCH v15 08/20] arm64: Add new asm macro copy_page Geoff Levand
2016-03-14 17:48 ` [PATCH v15 13/20] arm64/kexec: Enable kexec in the arm64 defconfig Geoff Levand
2016-03-14 17:48 ` [PATCH v15 06/20] arm64: kernel: Include _AC definition in page.h Geoff Levand
2016-03-14 17:48 ` [PATCH v15 01/20] arm64: Fold proc-macros.S into assembler.h Geoff Levand
2016-03-14 17:48 ` [PATCH v15 05/20] arm64: kvm: allows kvm cpu hotplug Geoff Levand
2016-03-14 17:48 ` [PATCH v15 03/20] arm64: Convert hcalls to use HVC immediate value Geoff Levand
2016-03-15 13:50   ` Dave Martin
2016-03-15 18:15     ` Geoff Levand
2016-03-16 13:50       ` Dave Martin
2016-03-16 14:09         ` Marc Zyngier
2016-03-17 16:47           ` Geoff Levand
2016-03-14 17:48 ` [PATCH v15 12/20] arm64/kexec: Add core kexec support Geoff Levand
2016-03-14 17:48 ` [PATCH v15 04/20] arm64: Add new hcall HVC_CALL_FUNC Geoff Levand
2016-03-14 17:48 ` [PATCH v15 19/20] arm64: kdump: enable kdump in the arm64 defconfig Geoff Levand
2016-03-14 17:48 ` [PATCH v15 14/20] arm64/kexec: Add pr_debug output Geoff Levand
2016-03-14 17:48 ` [PATCH v15 17/20] arm64: kdump: implement machine_crash_shutdown() Geoff Levand
2016-03-18 18:08   ` James Morse
2016-03-21 13:29     ` James Morse
2016-03-31  7:57       ` AKASHI Takahiro
2016-03-31  8:12         ` Marc Zyngier
2016-03-31 10:10           ` Mark Rutland
2016-04-01  8:45             ` AKASHI Takahiro
2016-04-01  9:36               ` Mark Rutland [this message]
2016-04-04  9:27                 ` AKASHI Takahiro
2016-03-31  7:46     ` AKASHI Takahiro
2016-03-31 10:22       ` James Morse
2016-03-14 17:48 ` [PATCH v15 20/20] arm64: kdump: update a kernel doc Geoff Levand
2016-03-14 17:48 ` [PATCH v15 15/20] arm64: kdump: reserve memory for crash dump kernel Geoff Levand
2016-03-18 18:08   ` James Morse
2016-03-31  7:19     ` AKASHI Takahiro
2016-04-01  6:16       ` AKASHI Takahiro
2016-03-14 17:48 ` [PATCH v15 16/20] arm64: limit memory regions based on DT property, usable-memory Geoff Levand
2016-03-14 17:48 ` [PATCH v15 18/20] arm64: kdump: add kdump support Geoff Levand
2016-04-01  1:59 ` [PATCH v15 00/20] arm64 kexec kernel patches v15 Dave Young
2016-04-01 18:39   ` Geoff Levand
2016-05-17  5:42     ` Dave Young
2016-05-17  8:06       ` Marc Zyngier
2016-05-17  9:07         ` AKASHI Takahiro
2016-05-18  2:09         ` Dave Young

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=20160401093635.GA29876@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 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).