Kexec Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Kiper <daniel.kiper@oracle.com>
To: Eric DeVolder <eric.devolder@oracle.com>
Cc: panand@redhat.com, konrad.wilk@oracle.com,
	andrew.cooper3@citrix.com, kexec@lists.infradead.org,
	horms@verge.net.au, dyoung@redhat.com
Subject: Re: [PATCH v3 11/11] kexec: Add option to get crash kernel region size
Date: Mon, 13 Feb 2017 23:41:56 +0100	[thread overview]
Message-ID: <20170213224156.GI9543@olila.local.net-space.pl> (raw)
In-Reply-To: <1486764462-14176-12-git-send-email-eric.devolder@oracle.com>

On Fri, Feb 10, 2017 at 04:07:42PM -0600, Eric DeVolder wrote:
> From: Daniel Kiper <daniel.kiper@oracle.com>
>
> From: Daniel Kiper <daniel.kiper@oracle.com>

Hmmm... One is sufficient...

> Crash kernel region size is available via sysfs on Linux running on
> bare metal. However, this does not work when Linux runs as Xen dom0.
> In this case Xen crash kernel region size should be established using
> __HYPERVISOR_kexec_op hypercall (Linux kernel kexec functionality does
> not make a lot of sense in Xen dom0). Sadly hypercalls are not easily
> accessible using shell scripts or something like that. Potentially we
> can check "xl dmesg" output for crashkernel option but this is not nice.
> So, let's add this functionality, for Linux running on bare metal and
> as Xen dom0, to kexec-tools. This way kdump scripts may establish crash
> kernel region size in one way regardless of platform. All burden of
> platform detection lies on kexec-tools.
>
> Figure (and unit) displayed by this new kexec-tools functionality is
> the same as one taken from /sys/kernel/kexec_crash_size.
>
> Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
> Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
> ---
>  kexec/kexec.8 |  3 +++
>  kexec/kexec.c | 20 ++++++++++++++++++++
>  kexec/kexec.h |  4 +++-
>  3 files changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/kexec/kexec.8 b/kexec/kexec.8
> index f4b39a6..e0131b4 100644
> --- a/kexec/kexec.8
> +++ b/kexec/kexec.8
> @@ -179,6 +179,9 @@ Load a helper image to jump back to original kernel.
>  .TP
>  .BI \-\-reuseinitrd
>  Reuse initrd from first boot.
> +.TP
> +.BI \-\-print-ckr-size
> +Print crash kernel region size, if available.
>
>
>  .SH SUPPORTED KERNEL FILE TYPES AND OPTIONS
> diff --git a/kexec/kexec.c b/kexec/kexec.c
> index a2ba79d..0be1be4 100644
> --- a/kexec/kexec.c
> +++ b/kexec/kexec.c
> @@ -995,6 +995,7 @@ void usage(void)
>  	       "     --mem-max=<addr> Specify the highest memory address to\n"
>  	       "                      load code into.\n"
>  	       "     --reuseinitrd    Reuse initrd from first boot.\n"
> +	       "     --print-ckr-size Print crash kernel region size.\n"
>  	       "     --load-preserve-context Load the new kernel and preserve\n"
>  	       "                      context of current kernel during kexec.\n"
>  	       "     --load-jump-back-helper Load a helper image to jump back\n"
> @@ -1218,6 +1219,22 @@ static int do_kexec_file_load(int fileind, int argc, char **argv,
>  	return ret;
>  }
>
> +static void print_crashkernel_region_size(void)
> +{
> +	uint64_t start = 0, end = 0;

This initialization is not needed.

> +
> +	if (is_crashkernel_mem_reserved()) {
> +		int ret = get_crash_kernel_load_range(&start, &end);

I do not like mixing code with variable declarations.

> +		if (ret != 0) {

if (ret)

> +			fprintf(stderr, "get_crash_kernel_load_range failed.\n");

s/get_crash_kernel_load_range/get_crash_kernel_load_range()/

> +			return;
> +		}
> +	}

Please add empty line here.

> +	if (start != end)

if (!ret && start != end)

There is no guarantee that in case of error nobody touched start and/or
end in get_crash_kernel_load_range() call.

> +		printf("%lu\n", end - start + 1);
> +	else
> +		printf("0\n");
> +}

Daniel

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  reply	other threads:[~2017-02-13 22:42 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-10 22:07 [PATCH v3 0/10] kexec: Add option to get crash kernel region size Eric DeVolder
2017-02-10 22:07 ` [PATCH v3 01/11] crashdump/arm: Add get_crash_kernel_load_range() function Eric DeVolder
2017-02-10 22:07 ` [PATCH v3 02/11] crashdump/arm64: " Eric DeVolder
2017-02-13 21:58   ` Daniel Kiper
2017-02-10 22:07 ` [PATCH v3 03/11] crashdump/cris: " Eric DeVolder
2017-02-13 21:59   ` Daniel Kiper
2017-02-10 22:07 ` [PATCH v3 04/11] crashdump/ia64: " Eric DeVolder
2017-02-10 22:07 ` [PATCH v3 05/11] crashdump/m68k: " Eric DeVolder
2017-02-13 22:01   ` Daniel Kiper
2017-02-10 22:07 ` [PATCH v3 06/11] crashdump/mips: " Eric DeVolder
2017-02-10 22:07 ` [PATCH v3 07/11] crashdump/ppc: " Eric DeVolder
2017-02-13 22:24   ` Daniel Kiper
2017-02-10 22:07 ` [PATCH v3 08/11] crashdump/ppc64: " Eric DeVolder
2017-02-13 22:26   ` Daniel Kiper
2017-02-10 22:07 ` [PATCH v3 09/11] crashdump/s390: " Eric DeVolder
2017-02-10 22:07 ` [PATCH v3 10/11] crashdump/sh: " Eric DeVolder
2017-02-10 22:07 ` [PATCH v3 11/11] kexec: Add option to get crash kernel region size Eric DeVolder
2017-02-13 22:41   ` Daniel Kiper [this message]
2017-02-13  4:23 ` [PATCH v3 0/10] " Pratyush Anand

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=20170213224156.GI9543@olila.local.net-space.pl \
    --to=daniel.kiper@oracle.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=dyoung@redhat.com \
    --cc=eric.devolder@oracle.com \
    --cc=horms@verge.net.au \
    --cc=kexec@lists.infradead.org \
    --cc=konrad.wilk@oracle.com \
    --cc=panand@redhat.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