From: Marc Zyngier <marc.zyngier@arm.com>
To: Geoff Levand <geoff@infradead.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
AKASHI Takahiro <takahiro.akashi@linaro.org>,
kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org,
christoffer.dall@linaro.org
Subject: Re: [PATCH v12 12/16] arm64: kdump: implement machine_crash_shutdown()
Date: Fri, 27 Nov 2015 14:39:35 +0000 [thread overview]
Message-ID: <56586B27.9080508@arm.com> (raw)
In-Reply-To: <9ae67f7515c66bfd747486c8dc1c1772913a8d46.1448403503.git.geoff@infradead.org>
On 24/11/15 22:25, Geoff Levand wrote:
> From: AKASHI Takahiro <takahiro.akashi@linaro.org>
>
> kdump calls machine_crash_shutdown() to shut down non-boot cpus and
> save registers' status in per-cpu ELF notes before starting the crash
> dump kernel. See kernel_kexec().
>
> ipi_cpu_stop() is a bit modified and used to support this behavior.
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> ---
> arch/arm64/include/asm/kexec.h | 34 +++++++++++++++++++++++++++++++++-
> arch/arm64/kernel/machine_kexec.c | 31 +++++++++++++++++++++++++++++--
> arch/arm64/kernel/smp.c | 16 ++++++++++++++--
> 3 files changed, 76 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm64/include/asm/kexec.h b/arch/arm64/include/asm/kexec.h
> index 46d63cd..555a955 100644
> --- a/arch/arm64/include/asm/kexec.h
> +++ b/arch/arm64/include/asm/kexec.h
> @@ -30,6 +30,8 @@
>
> #if !defined(__ASSEMBLY__)
>
> +extern bool in_crash_kexec;
> +
> /**
> * crash_setup_regs() - save registers for the panic kernel
> *
> @@ -40,7 +42,37 @@
> static inline void crash_setup_regs(struct pt_regs *newregs,
> struct pt_regs *oldregs)
> {
> - /* Empty routine needed to avoid build errors. */
> + if (oldregs) {
> + memcpy(newregs, oldregs, sizeof(*newregs));
> + } else {
> + __asm__ __volatile__ (
> + "stp x0, x1, [%3, #16 * 0]\n"
> + "stp x2, x3, [%3, #16 * 1]\n"
> + "stp x4, x5, [%3, #16 * 2]\n"
> + "stp x6, x7, [%3, #16 * 3]\n"
> + "stp x8, x9, [%3, #16 * 4]\n"
> + "stp x10, x11, [%3, #16 * 5]\n"
> + "stp x12, x13, [%3, #16 * 6]\n"
> + "stp x14, x15, [%3, #16 * 7]\n"
> + "stp x16, x17, [%3, #16 * 8]\n"
> + "stp x18, x19, [%3, #16 * 9]\n"
> + "stp x20, x21, [%3, #16 * 10]\n"
> + "stp x22, x23, [%3, #16 * 11]\n"
> + "stp x24, x25, [%3, #16 * 12]\n"
> + "stp x26, x27, [%3, #16 * 13]\n"
> + "stp x28, x29, [%3, #16 * 14]\n"
> + "str x30, [%3, #16 * 15]\n"
> + "mov %0, sp\n"
> + "adr %1, 1f\n"
> + "mrs %2, spsr_el1\n"
> + "1:"
> + : "=r" (newregs->sp),
> + "=r" (newregs->pc),
> + "=r" (newregs->pstate)
> + : "r" (&newregs->regs)
> + : "memory"
> + );
I wonder how useful this thing is, given that it starts by corrupting
whatever register is holding newregs->regs. Maybe this is not supposed
to be accurate anyway...
> + }
> }
>
> #endif /* !defined(__ASSEMBLY__) */
> diff --git a/arch/arm64/kernel/machine_kexec.c b/arch/arm64/kernel/machine_kexec.c
> index da28a26..d2d7e90 100644
> --- a/arch/arm64/kernel/machine_kexec.c
> +++ b/arch/arm64/kernel/machine_kexec.c
> @@ -9,6 +9,7 @@
> * published by the Free Software Foundation.
> */
>
> +#include <linux/kernel.h>
> #include <linux/kexec.h>
> #include <linux/of_fdt.h>
> #include <linux/slab.h>
> @@ -23,6 +24,7 @@
> extern const unsigned char arm64_relocate_new_kernel[];
> extern const unsigned long arm64_relocate_new_kernel_size;
>
> +bool in_crash_kexec;
> static unsigned long kimage_start;
>
> /**
> @@ -203,13 +205,38 @@ void machine_kexec(struct kimage *kimage)
> */
>
> cpu_soft_restart(virt_to_phys(cpu_reset),
> - is_hyp_mode_available(),
> + in_crash_kexec ? 0 : is_hyp_mode_available(),
> reboot_code_buffer_phys, kimage->head, kimage_start);
>
> BUG(); /* Should never get here. */
> }
>
> +/**
> + * machine_crash_shutdown - shutdown non-boot cpus and save registers
> + */
> void machine_crash_shutdown(struct pt_regs *regs)
> {
> - /* Empty routine needed to avoid build errors. */
> + struct pt_regs dummy_regs;
> + int cpu;
> +
> + local_irq_disable();
> +
> + in_crash_kexec = true;
> +
> + /*
> + * clear and initialize the per-cpu info. This is necessary
> + * because, otherwise, slots for offline cpus would never be
> + * filled up. See smp_send_stop().
> + */
> + memset(&dummy_regs, 0, sizeof(dummy_regs));
> + for_each_possible_cpu(cpu)
> + crash_save_cpu(&dummy_regs, cpu);
> +
> + /* shutdown non-boot cpus */
> + smp_send_stop();
> +
> + /* for boot cpu */
> + crash_save_cpu(regs, smp_processor_id());
> +
> + pr_info("Starting crashdump kernel...\n");
> }
> diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
> index b1adc51..15aabef 100644
> --- a/arch/arm64/kernel/smp.c
> +++ b/arch/arm64/kernel/smp.c
> @@ -37,6 +37,7 @@
> #include <linux/completion.h>
> #include <linux/of.h>
> #include <linux/irq_work.h>
> +#include <linux/kexec.h>
>
> #include <asm/alternative.h>
> #include <asm/atomic.h>
> @@ -54,6 +55,8 @@
> #include <asm/ptrace.h>
> #include <asm/virt.h>
>
> +#include "cpu-reset.h"
> +
> #define CREATE_TRACE_POINTS
> #include <trace/events/ipi.h>
>
> @@ -683,8 +686,12 @@ static DEFINE_RAW_SPINLOCK(stop_lock);
> /*
> * ipi_cpu_stop - handle IPI from smp_send_stop()
> */
> -static void ipi_cpu_stop(unsigned int cpu)
> +static void ipi_cpu_stop(unsigned int cpu, struct pt_regs *regs)
> {
> +#ifdef CONFIG_KEXEC
> + /* printing messages may slow down the shutdown. */
> + if (!in_crash_kexec)
> +#endif
> if (system_state == SYSTEM_BOOTING ||
> system_state == SYSTEM_RUNNING) {
> raw_spin_lock(&stop_lock);
Irrespective of how useful this change is, how about having a predicate
instead? Something like:
static inline bool is_in_crash_kexec(void)
{
#ifdef CONFIG_KEXEC
return in_crash_kexec;
#else
return false;
#endif
}
located in machine_kexec.c (making the in_crash_kernel static), and then
if (!is_in_crash_kexec() && (systen_state == ... || ...) {
It would certainly look better.
> @@ -697,6 +704,11 @@ static void ipi_cpu_stop(unsigned int cpu)
>
> local_irq_disable();
>
> +#ifdef CONFIG_KEXEC
> + if (in_crash_kexec)
> + crash_save_cpu(regs, cpu);
> +#endif /* CONFIG_KEXEC */
> +
Same here.
> while (1)
> cpu_relax();
> }
> @@ -727,7 +739,7 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
>
> case IPI_CPU_STOP:
> irq_enter();
> - ipi_cpu_stop(cpu);
> + ipi_cpu_stop(cpu, regs);
> irq_exit();
> break;
>
>
Thanks,
M.
--
Jazz is not dead. It just smells funny...
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v12 12/16] arm64: kdump: implement machine_crash_shutdown()
Date: Fri, 27 Nov 2015 14:39:35 +0000 [thread overview]
Message-ID: <56586B27.9080508@arm.com> (raw)
In-Reply-To: <9ae67f7515c66bfd747486c8dc1c1772913a8d46.1448403503.git.geoff@infradead.org>
On 24/11/15 22:25, Geoff Levand wrote:
> From: AKASHI Takahiro <takahiro.akashi@linaro.org>
>
> kdump calls machine_crash_shutdown() to shut down non-boot cpus and
> save registers' status in per-cpu ELF notes before starting the crash
> dump kernel. See kernel_kexec().
>
> ipi_cpu_stop() is a bit modified and used to support this behavior.
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> ---
> arch/arm64/include/asm/kexec.h | 34 +++++++++++++++++++++++++++++++++-
> arch/arm64/kernel/machine_kexec.c | 31 +++++++++++++++++++++++++++++--
> arch/arm64/kernel/smp.c | 16 ++++++++++++++--
> 3 files changed, 76 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm64/include/asm/kexec.h b/arch/arm64/include/asm/kexec.h
> index 46d63cd..555a955 100644
> --- a/arch/arm64/include/asm/kexec.h
> +++ b/arch/arm64/include/asm/kexec.h
> @@ -30,6 +30,8 @@
>
> #if !defined(__ASSEMBLY__)
>
> +extern bool in_crash_kexec;
> +
> /**
> * crash_setup_regs() - save registers for the panic kernel
> *
> @@ -40,7 +42,37 @@
> static inline void crash_setup_regs(struct pt_regs *newregs,
> struct pt_regs *oldregs)
> {
> - /* Empty routine needed to avoid build errors. */
> + if (oldregs) {
> + memcpy(newregs, oldregs, sizeof(*newregs));
> + } else {
> + __asm__ __volatile__ (
> + "stp x0, x1, [%3, #16 * 0]\n"
> + "stp x2, x3, [%3, #16 * 1]\n"
> + "stp x4, x5, [%3, #16 * 2]\n"
> + "stp x6, x7, [%3, #16 * 3]\n"
> + "stp x8, x9, [%3, #16 * 4]\n"
> + "stp x10, x11, [%3, #16 * 5]\n"
> + "stp x12, x13, [%3, #16 * 6]\n"
> + "stp x14, x15, [%3, #16 * 7]\n"
> + "stp x16, x17, [%3, #16 * 8]\n"
> + "stp x18, x19, [%3, #16 * 9]\n"
> + "stp x20, x21, [%3, #16 * 10]\n"
> + "stp x22, x23, [%3, #16 * 11]\n"
> + "stp x24, x25, [%3, #16 * 12]\n"
> + "stp x26, x27, [%3, #16 * 13]\n"
> + "stp x28, x29, [%3, #16 * 14]\n"
> + "str x30, [%3, #16 * 15]\n"
> + "mov %0, sp\n"
> + "adr %1, 1f\n"
> + "mrs %2, spsr_el1\n"
> + "1:"
> + : "=r" (newregs->sp),
> + "=r" (newregs->pc),
> + "=r" (newregs->pstate)
> + : "r" (&newregs->regs)
> + : "memory"
> + );
I wonder how useful this thing is, given that it starts by corrupting
whatever register is holding newregs->regs. Maybe this is not supposed
to be accurate anyway...
> + }
> }
>
> #endif /* !defined(__ASSEMBLY__) */
> diff --git a/arch/arm64/kernel/machine_kexec.c b/arch/arm64/kernel/machine_kexec.c
> index da28a26..d2d7e90 100644
> --- a/arch/arm64/kernel/machine_kexec.c
> +++ b/arch/arm64/kernel/machine_kexec.c
> @@ -9,6 +9,7 @@
> * published by the Free Software Foundation.
> */
>
> +#include <linux/kernel.h>
> #include <linux/kexec.h>
> #include <linux/of_fdt.h>
> #include <linux/slab.h>
> @@ -23,6 +24,7 @@
> extern const unsigned char arm64_relocate_new_kernel[];
> extern const unsigned long arm64_relocate_new_kernel_size;
>
> +bool in_crash_kexec;
> static unsigned long kimage_start;
>
> /**
> @@ -203,13 +205,38 @@ void machine_kexec(struct kimage *kimage)
> */
>
> cpu_soft_restart(virt_to_phys(cpu_reset),
> - is_hyp_mode_available(),
> + in_crash_kexec ? 0 : is_hyp_mode_available(),
> reboot_code_buffer_phys, kimage->head, kimage_start);
>
> BUG(); /* Should never get here. */
> }
>
> +/**
> + * machine_crash_shutdown - shutdown non-boot cpus and save registers
> + */
> void machine_crash_shutdown(struct pt_regs *regs)
> {
> - /* Empty routine needed to avoid build errors. */
> + struct pt_regs dummy_regs;
> + int cpu;
> +
> + local_irq_disable();
> +
> + in_crash_kexec = true;
> +
> + /*
> + * clear and initialize the per-cpu info. This is necessary
> + * because, otherwise, slots for offline cpus would never be
> + * filled up. See smp_send_stop().
> + */
> + memset(&dummy_regs, 0, sizeof(dummy_regs));
> + for_each_possible_cpu(cpu)
> + crash_save_cpu(&dummy_regs, cpu);
> +
> + /* shutdown non-boot cpus */
> + smp_send_stop();
> +
> + /* for boot cpu */
> + crash_save_cpu(regs, smp_processor_id());
> +
> + pr_info("Starting crashdump kernel...\n");
> }
> diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
> index b1adc51..15aabef 100644
> --- a/arch/arm64/kernel/smp.c
> +++ b/arch/arm64/kernel/smp.c
> @@ -37,6 +37,7 @@
> #include <linux/completion.h>
> #include <linux/of.h>
> #include <linux/irq_work.h>
> +#include <linux/kexec.h>
>
> #include <asm/alternative.h>
> #include <asm/atomic.h>
> @@ -54,6 +55,8 @@
> #include <asm/ptrace.h>
> #include <asm/virt.h>
>
> +#include "cpu-reset.h"
> +
> #define CREATE_TRACE_POINTS
> #include <trace/events/ipi.h>
>
> @@ -683,8 +686,12 @@ static DEFINE_RAW_SPINLOCK(stop_lock);
> /*
> * ipi_cpu_stop - handle IPI from smp_send_stop()
> */
> -static void ipi_cpu_stop(unsigned int cpu)
> +static void ipi_cpu_stop(unsigned int cpu, struct pt_regs *regs)
> {
> +#ifdef CONFIG_KEXEC
> + /* printing messages may slow down the shutdown. */
> + if (!in_crash_kexec)
> +#endif
> if (system_state == SYSTEM_BOOTING ||
> system_state == SYSTEM_RUNNING) {
> raw_spin_lock(&stop_lock);
Irrespective of how useful this change is, how about having a predicate
instead? Something like:
static inline bool is_in_crash_kexec(void)
{
#ifdef CONFIG_KEXEC
return in_crash_kexec;
#else
return false;
#endif
}
located in machine_kexec.c (making the in_crash_kernel static), and then
if (!is_in_crash_kexec() && (systen_state == ... || ...) {
It would certainly look better.
> @@ -697,6 +704,11 @@ static void ipi_cpu_stop(unsigned int cpu)
>
> local_irq_disable();
>
> +#ifdef CONFIG_KEXEC
> + if (in_crash_kexec)
> + crash_save_cpu(regs, cpu);
> +#endif /* CONFIG_KEXEC */
> +
Same here.
> while (1)
> cpu_relax();
> }
> @@ -727,7 +739,7 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
>
> case IPI_CPU_STOP:
> irq_enter();
> - ipi_cpu_stop(cpu);
> + ipi_cpu_stop(cpu, regs);
> irq_exit();
> break;
>
>
Thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2015-11-27 14:39 UTC|newest]
Thread overview: 178+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-24 22:25 [PATCH v12 00/16] arm64 kexec kernel patches v12 Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 03/16] arm64: Add new hcall HVC_CALL_FUNC Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 02/16] arm64: Convert hcalls to use HVC immediate value Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 07/16] Revert "arm64: remove dead code" Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 04/16] arm64: kvm: allows kvm cpu hotplug Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-27 13:54 ` Marc Zyngier
2015-11-27 13:54 ` Marc Zyngier
2015-12-02 22:40 ` Ashwin Chaugule
2015-12-02 22:40 ` Ashwin Chaugule
2015-12-03 13:55 ` Ashwin Chaugule
2015-12-03 13:55 ` Ashwin Chaugule
2015-12-03 13:58 ` Marc Zyngier
2015-12-03 13:58 ` Marc Zyngier
2015-12-10 18:31 ` Geoff Levand
2015-12-10 18:31 ` Geoff Levand
2015-12-11 16:31 ` Will Deacon
2015-12-11 16:31 ` Will Deacon
2015-12-15 8:48 ` AKASHI Takahiro
2015-12-15 8:48 ` AKASHI Takahiro
2015-12-10 18:44 ` Shi, Yang
2015-12-10 18:44 ` Shi, Yang
2015-12-11 8:09 ` AKASHI Takahiro
2015-12-11 8:09 ` AKASHI Takahiro
2015-12-14 18:00 ` Shi, Yang
2015-12-14 18:00 ` Shi, Yang
2015-12-11 8:06 ` AKASHI Takahiro
2015-12-11 8:06 ` AKASHI Takahiro
2015-12-11 13:00 ` Shanker Donthineni
2015-12-11 13:00 ` Shanker Donthineni
2015-12-11 16:28 ` Marc Zyngier
2015-12-11 16:28 ` Marc Zyngier
2015-12-11 18:00 ` Shanker Donthineni
2015-12-11 18:00 ` Shanker Donthineni
2015-12-11 18:11 ` Marc Zyngier
2015-12-11 18:11 ` Marc Zyngier
2015-12-11 19:11 ` Shanker Donthineni
2015-12-11 19:11 ` Shanker Donthineni
2015-12-11 20:13 ` Ashwin Chaugule
2015-12-11 20:13 ` Ashwin Chaugule
2015-12-14 7:33 ` AKASHI Takahiro
2015-12-14 7:33 ` AKASHI Takahiro
2015-12-14 17:33 ` Marc Zyngier
2015-12-14 17:33 ` Marc Zyngier
2015-12-15 7:51 ` AKASHI Takahiro
2015-12-15 7:51 ` AKASHI Takahiro
2015-12-15 8:45 ` Marc Zyngier
2015-12-15 8:45 ` Marc Zyngier
2015-12-15 9:51 ` AKASHI Takahiro
2015-12-15 9:51 ` AKASHI Takahiro
2015-12-15 10:13 ` Marc Zyngier
2015-12-15 10:13 ` Marc Zyngier
2015-11-24 22:25 ` [PATCH v12 05/16] arm64: Add back cpu_reset routines Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-27 14:19 ` Marc Zyngier
2015-11-27 14:19 ` Marc Zyngier
2015-11-30 5:28 ` Pratyush Anand
2015-11-30 5:28 ` Pratyush Anand
2015-11-30 10:40 ` Marc Zyngier
2015-11-30 10:40 ` Marc Zyngier
2015-12-02 22:57 ` Geoff Levand
2015-12-02 22:57 ` Geoff Levand
2015-12-03 9:32 ` Will Deacon
2015-12-03 9:32 ` Will Deacon
2015-12-10 0:49 ` Geoff Levand
2015-12-10 0:49 ` Geoff Levand
2015-12-10 10:17 ` Will Deacon
2015-12-10 10:17 ` Will Deacon
2015-11-30 20:03 ` Geoff Levand
2015-11-30 20:03 ` Geoff Levand
2015-12-01 9:38 ` Marc Zyngier
2015-12-01 9:38 ` Marc Zyngier
2015-11-24 22:25 ` [PATCH v12 06/16] Revert "arm64: mm: remove unused cpu_set_idmap_tcr_t0sz function" Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 01/16] arm64: Fold proc-macros.S into assembler.h Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 12/16] arm64: kdump: implement machine_crash_shutdown() Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-27 14:39 ` Marc Zyngier [this message]
2015-11-27 14:39 ` Marc Zyngier
2015-12-10 11:34 ` AKASHI Takahiro
2015-12-10 11:34 ` AKASHI Takahiro
2015-12-10 11:44 ` Marc Zyngier
2015-12-10 11:44 ` Marc Zyngier
2015-12-10 12:55 ` AKASHI Takahiro
2015-12-10 12:55 ` AKASHI Takahiro
2015-12-10 13:43 ` Marc Zyngier
2015-12-10 13:43 ` Marc Zyngier
2015-12-03 4:15 ` Pratyush Anand
2015-12-03 4:15 ` Pratyush Anand
2015-12-10 11:42 ` AKASHI Takahiro
2015-12-10 11:42 ` AKASHI Takahiro
2015-12-10 11:50 ` Pratyush Anand
2015-12-10 11:50 ` Pratyush Anand
2015-11-24 22:25 ` [PATCH v12 09/16] arm64/kexec: Add pr_devel output Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-12-15 17:15 ` Will Deacon
2015-12-15 17:15 ` Will Deacon
2015-12-16 0:45 ` Geoff Levand
2015-12-16 0:45 ` Geoff Levand
2015-12-16 0:46 ` [PATCH v12.4] arm64/kexec: Add pr_debug output Geoff Levand
2015-12-16 0:46 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 11/16] arm64: kdump: reserve memory for crash dump kernel Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-12-15 17:29 ` Will Deacon
2015-12-15 17:29 ` Will Deacon
2015-12-16 5:19 ` AKASHI Takahiro
2015-12-16 5:19 ` AKASHI Takahiro
2015-12-16 7:36 ` Pratyush Anand
2015-12-16 7:36 ` Pratyush Anand
2015-11-24 22:25 ` [PATCH v12 15/16] arm64: kdump: enable kdump in the arm64 defconfig Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 08/16] arm64/kexec: Add core kexec support Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-27 13:13 ` Pratyush Anand
2015-11-27 13:13 ` Pratyush Anand
2015-11-30 18:51 ` Geoff Levand
2015-11-30 18:51 ` Geoff Levand
2015-12-01 2:16 ` Pratyush Anand
2015-12-01 2:16 ` Pratyush Anand
2015-12-01 18:32 ` Azriel Samson
2015-12-01 18:32 ` Azriel Samson
2015-12-02 22:49 ` Geoff Levand
2015-12-02 22:49 ` Geoff Levand
2015-12-03 4:37 ` Azriel Samson
2015-12-03 4:37 ` Azriel Samson
2015-12-03 19:56 ` Geoff Levand
2015-12-03 19:56 ` Geoff Levand
2015-12-04 0:39 ` Azriel Samson
2015-12-04 0:39 ` Azriel Samson
2015-12-04 3:54 ` Pratyush Anand
2015-12-04 3:54 ` Pratyush Anand
2015-12-07 18:47 ` Geoff Levand
2015-12-07 18:47 ` Geoff Levand
2015-12-03 6:09 ` Pratyush Anand
2015-12-03 6:09 ` Pratyush Anand
2015-12-01 19:03 ` Mark Rutland
2015-12-01 19:03 ` Mark Rutland
2015-12-02 21:08 ` Geoff Levand
2015-12-02 21:08 ` Geoff Levand
2015-12-03 16:06 ` Mark Rutland
2015-12-03 16:06 ` Mark Rutland
2015-12-15 18:29 ` Will Deacon
2015-12-15 18:29 ` Will Deacon
2015-12-16 0:14 ` Geoff Levand
2015-12-16 0:14 ` Geoff Levand
2015-12-16 7:18 ` Pratyush Anand
2015-12-16 7:18 ` Pratyush Anand
2015-12-16 9:30 ` James Morse
2015-12-16 9:30 ` James Morse
2015-12-16 10:32 ` Pratyush Anand
2015-12-16 10:32 ` Pratyush Anand
2015-12-16 0:14 ` [PATCH v12.4] " Geoff Levand
2015-12-16 0:14 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 16/16] arm64: kdump: relax BUG_ON() if more than one cpus are still active Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-12-15 17:05 ` Will Deacon
2015-12-15 17:05 ` Will Deacon
2015-12-16 5:51 ` AKASHI Takahiro
2015-12-16 5:51 ` AKASHI Takahiro
2015-11-24 22:25 ` [PATCH v12 10/16] arm64/kexec: Enable kexec in the arm64 defconfig Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-11-24 22:25 ` [PATCH v12 13/16] arm64: kdump: add kdump support Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-12-15 17:45 ` Will Deacon
2015-12-15 17:45 ` Will Deacon
2015-12-16 5:41 ` AKASHI Takahiro
2015-12-16 5:41 ` AKASHI Takahiro
2015-11-24 22:25 ` [PATCH v12 14/16] arm64: kdump: update a kernel doc Geoff Levand
2015-11-24 22:25 ` Geoff Levand
2015-12-15 17:17 ` Will Deacon
2015-12-15 17:17 ` Will Deacon
2015-12-16 5:48 ` AKASHI Takahiro
2015-12-16 5:48 ` AKASHI Takahiro
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=56586B27.9080508@arm.com \
--to=marc.zyngier@arm.com \
--cc=catalin.marinas@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=geoff@infradead.org \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=takahiro.akashi@linaro.org \
--cc=will.deacon@arm.com \
/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.