linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: piliu <piliu@redhat.com>
To: Hari Bathini <hbathini@linux.ibm.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: Kexec-ml <kexec@lists.infradead.org>,
	Petr Tesarik <ptesarik@suse.cz>,
	Mahesh J Salgaonkar <mahesh@linux.ibm.com>,
	Sourabh Jain <sourabhjain@linux.ibm.com>,
	lkml <linux-kernel@vger.kernel.org>,
	linuxppc-dev <linuxppc-dev@ozlabs.org>,
	Mimi Zohar <zohar@linux.ibm.com>, Vivek Goyal <vgoyal@redhat.com>,
	Dave Young <dyoung@redhat.com>,
	Thiago Jung Bauermann <bauerman@linux.ibm.com>,
	Eric Biederman <ebiederm@xmission.com>
Subject: Re: [PATCH v2 00/12] ppc64: enable kdump support for kexec_file_load syscall
Date: Tue, 7 Jul 2020 08:43:13 +0800	[thread overview]
Message-ID: <4b63d9d1-b460-cfbe-55d1-0944b2e2c743@redhat.com> (raw)
In-Reply-To: <159371956443.21555.18251597651350106920.stgit@hbathini.in.ibm.com>



On 07/03/2020 03:53 AM, Hari Bathini wrote:
> This patch series enables kdump support for kexec_file_load system
> call (kexec -s -p) on PPC64. The changes are inspired from kexec-tools
> code but heavily modified for kernel consumption. There is scope to
> expand purgatory to verify sha256 digest along with other improvements
> in purgatory code. Will deal with those changes in a separate patch
> series later.
> 
> The first patch adds a weak arch_kexec_locate_mem_hole() function to
> override locate memory hole logic suiting arch needs. There are some
> special regions in ppc64 which should be avoided while loading buffer
> & there are multiple callers to kexec_add_buffer making it complicated
> to maintain range sanity and using generic lookup at the same time.
> 
> The second patch marks ppc64 specific code within arch/powerpc/kexec
> and arch/powerpc/purgatory to make the subsequent code changes easy
> to understand.
> 
> The next patch adds helper function to setup different memory ranges
> needed for loading kdump kernel, booting into it and exporting the
> crashing kernel's elfcore.
> 
> The fourth patch overrides arch_kexec_locate_mem_hole() function to
> locate memory hole for kdump segments by accounting for the special
> memory regions, referred to as excluded memory ranges, and sets
> kbuf->mem when a suitable memory region is found.
> 
> The fifth patch moves walk_drmem_lmbs() out of .init section with
> a few changes to reuse it for setting up kdump kernel's usable memory
> ranges. The next patch uses walk_drmem_lmbs() to look up the LMBs
> and set linux,drconf-usable-memory & linux,usable-memory properties
> in order to restrict kdump kernel's memory usage.
> 
> The seventh patch adds relocation support for the purgatory. Patch 8
> helps setup the stack for the purgatory. The next patch setups up
> backup region as a segment while loading kdump kernel and teaches
> purgatory to copy it from source to destination.
> 
> Patch 10 builds the elfcore header for the running kernel & passes
> the info to kdump kernel via "elfcorehdr=" parameter to export as
> /proc/vmcore file. The next patch sets up the memory reserve map
> for the kexec kernel and also claims kdump support for kdump as
> all the necessary changes are added.
> 
> The last patch fixes a lookup issue for `kexec -l -s` case when
> memory is reserved for crashkernel.
> 
> Tested the changes successfully on P8, P9 lpars, couple of OpenPOWER
> boxes and a simulator.
> 
> Changes in v2:
> * Introduced arch_kexec_locate_mem_hole() for override and dropped
>   weak arch_kexec_add_buffer().
> * Addressed warnings reported by lkp.
> * Added patch to address kexec load issue when memory is reserved
>   for crashkernel.
> * Used the appropriate license header for the new files added.
> * Added an option to merge ranges to minimize reallocations while
>   adding memory ranges.
> * Dropped within_crashkernel parameter for add_opal_mem_range() &
>   add_rtas_mem_range() functions as it is not really needed.
> 
> ---
> 
> Hari Bathini (12):
>       kexec_file: allow archs to handle special regions while locating memory hole
>       powerpc/kexec_file: mark PPC64 specific code
>       powerpc/kexec_file: add helper functions for getting memory ranges
>       ppc64/kexec_file: avoid stomping memory used by special regions
>       powerpc/drmem: make lmb walk a bit more flexible
>       ppc64/kexec_file: restrict memory usage of kdump kernel
>       ppc64/kexec_file: add support to relocate purgatory
>       ppc64/kexec_file: setup the stack for purgatory
>       ppc64/kexec_file: setup backup region for kdump kernel
>       ppc64/kexec_file: prepare elfcore header for crashing kernel
>       ppc64/kexec_file: add appropriate regions for memory reserve map
>       ppc64/kexec_file: fix kexec load failure with lack of memory hole
> 
> 
>  arch/powerpc/include/asm/crashdump-ppc64.h |   15 
>  arch/powerpc/include/asm/drmem.h           |    9 
>  arch/powerpc/include/asm/kexec.h           |   35 +
>  arch/powerpc/include/asm/kexec_ranges.h    |   18 
>  arch/powerpc/include/asm/purgatory.h       |   11 
>  arch/powerpc/kernel/prom.c                 |   13 
>  arch/powerpc/kexec/Makefile                |    2 
>  arch/powerpc/kexec/elf_64.c                |   35 +
>  arch/powerpc/kexec/file_load.c             |   78 +
>  arch/powerpc/kexec/file_load_64.c          | 1509 ++++++++++++++++++++++++++++
>  arch/powerpc/kexec/ranges.c                |  397 +++++++
>  arch/powerpc/mm/drmem.c                    |   87 +-
>  arch/powerpc/mm/numa.c                     |   13 
>  arch/powerpc/purgatory/Makefile            |   28 -
>  arch/powerpc/purgatory/purgatory_64.c      |   36 +
>  arch/powerpc/purgatory/trampoline.S        |  117 --
>  arch/powerpc/purgatory/trampoline_64.S     |  175 +++
>  include/linux/kexec.h                      |   29 -
>  kernel/kexec_file.c                        |   16 
>  19 files changed, 2413 insertions(+), 210 deletions(-)
>  create mode 100644 arch/powerpc/include/asm/crashdump-ppc64.h
>  create mode 100644 arch/powerpc/include/asm/kexec_ranges.h
>  create mode 100644 arch/powerpc/include/asm/purgatory.h
>  create mode 100644 arch/powerpc/kexec/file_load_64.c
>  create mode 100644 arch/powerpc/kexec/ranges.c
>  create mode 100644 arch/powerpc/purgatory/purgatory_64.c
>  delete mode 100644 arch/powerpc/purgatory/trampoline.S
>  create mode 100644 arch/powerpc/purgatory/trampoline_64.S
> 
Tested-by: Pingfan Liu <piliu@redhat.com>


      parent reply	other threads:[~2020-07-07  0:48 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-02 19:53 [PATCH v2 00/12] ppc64: enable kdump support for kexec_file_load syscall Hari Bathini
2020-07-02 19:54 ` [PATCH v2 01/12] kexec_file: allow archs to handle special regions while locating memory hole Hari Bathini
2020-07-06  9:07   ` Dave Young
2020-07-02 19:54 ` [PATCH v2 02/12] powerpc/kexec_file: mark PPC64 specific code Hari Bathini
2020-07-10  7:52   ` Laurent Dufour
2020-07-02 19:54 ` [PATCH v2 03/12] powerpc/kexec_file: add helper functions for getting memory ranges Hari Bathini
2020-07-02 19:55 ` [PATCH v2 04/12] ppc64/kexec_file: avoid stomping memory used by special regions Hari Bathini
2020-07-02 19:55 ` [PATCH v2 05/12] powerpc/drmem: make lmb walk a bit more flexible Hari Bathini
2020-07-02 19:55 ` [PATCH v2 06/12] ppc64/kexec_file: restrict memory usage of kdump kernel Hari Bathini
2020-07-02 19:55 ` [PATCH v2 07/12] ppc64/kexec_file: add support to relocate purgatory Hari Bathini
2020-07-02 19:56 ` [PATCH v2 08/12] ppc64/kexec_file: setup the stack for purgatory Hari Bathini
2020-07-02 19:56 ` [PATCH v2 09/12] ppc64/kexec_file: setup backup region for kdump kernel Hari Bathini
2020-07-02 19:56 ` [PATCH v2 10/12] ppc64/kexec_file: prepare elfcore header for crashing kernel Hari Bathini
2020-07-02 19:56 ` [PATCH v2 11/12] ppc64/kexec_file: add appropriate regions for memory reserve map Hari Bathini
2020-07-02 19:57 ` [PATCH v2 12/12] ppc64/kexec_file: fix kexec load failure with lack of memory hole Hari Bathini
2020-07-07  0:43 ` piliu [this message]

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=4b63d9d1-b460-cfbe-55d1-0944b2e2c743@redhat.com \
    --to=piliu@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=bauerman@linux.ibm.com \
    --cc=dyoung@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=hbathini@linux.ibm.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mahesh@linux.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=ptesarik@suse.cz \
    --cc=sourabhjain@linux.ibm.com \
    --cc=vgoyal@redhat.com \
    --cc=zohar@linux.ibm.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 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).