From: Vivek Goyal <vgoyal@redhat.com>
To: Borislav Petkov <bp@alien8.de>
Cc: mjg59@srcf.ucam.org, jkosina@suse.cz, greg@kroah.com,
kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
ebiederm@xmission.com, hpa@zytor.com
Subject: Re: [PATCH 11/11] kexec: Support for Kexec on panic using new system call
Date: Fri, 28 Feb 2014 16:06:11 -0500 [thread overview]
Message-ID: <20140228210611.GB17195@redhat.com> (raw)
In-Reply-To: <20140228172857.GG4326@pd.tnic>
On Fri, Feb 28, 2014 at 06:28:57PM +0100, Borislav Petkov wrote:
[..]
> > +/* Memory to backup during crash kdump */
> > +#define KEXEC_BACKUP_SRC_START (0UL)
> > +#define KEXEC_BACKUP_SRC_END (655360UL) /* 640K */
>
> I guess
>
> #define KEXEC_BACKUP_SRC_END (640 * 1024UL)
>
> should be more clear.
Will Change.
[..]
> > +/* Alignment required for elf header segment */
> > +#define ELF_CORE_HEADER_ALIGN 4096
> > +
> > +/* This primarily reprsents number of split ranges due to exclusion */
> > +#define CRASH_MAX_RANGES 16
> > +
> > +struct crash_mem_range {
> > + unsigned long long start, end;
>
> u64?
Ok, that's shorter. Can use that.
[..]
> > +
> > +/* Used while prepareing memory map entries for second kernel */
>
> s/prepareing/preparing/
Yep typo. Will fix.
[..]
> > +static int get_gart_ranges_callback(u64 start, u64 end, void *arg)
> > +{
> > + struct crash_elf_data *ced = arg;
> > +
> > + ced->gart_start = start;
> > + ced->gart_end = end;
> > +
> > + /* Not expecting more than 1 gart aperture */
> > + return 1;
> > +}
> > +
> > +
> > +/* Gather all the required information to prepare elf headers for ram regions */
> > +static int fill_up_ced(struct crash_elf_data *ced, struct kimage *image)
>
> All other functions have nice, spelled out names but not this one :)
>
> Why not fill_up_crash_elf_data()?
Will change it.
>
> > +{
> > + unsigned int nr_ranges = 0;
> > +
> > + ced->image = image;
> > +
> > + walk_system_ram_range(0, -1, &nr_ranges,
> > + get_nr_ram_ranges_callback);
> > +
> > + ced->max_nr_ranges = nr_ranges;
> > +
> > + /*
> > + * We don't create ELF headers for GART aperture as an attempt
> > + * to dump this memory in second kernel leads to hang/crash.
> > + * If gart aperture is present, one needs to exclude that region
> > + * and that could lead to need of extra phdr.
> > + */
> > +
>
> superfluous newline.
Will remove.
[..]
> > +int load_crashdump_segments(struct kimage *image)
> > +{
> > + unsigned long src_start, src_sz;
> > + unsigned long elf_addr, elf_sz;
> > + int ret;
> > +
> > + /*
> > + * Determine and load a segment for backup area. First 640K RAM
> > + * region is backup source
> > + */
> > +
> > + ret = walk_system_ram_res(KEXEC_BACKUP_SRC_START, KEXEC_BACKUP_SRC_END,
> > + image, determine_backup_region);
> > +
> > + /* Zero or postive return values are ok */
> > + if (ret < 0)
> > + return ret;
> > +
> > + src_start = image->arch.backup_src_start;
> > + src_sz = image->arch.backup_src_sz;
> > +
> > + /* Add backup segment. */
> > + if (src_sz) {
> > + ret = kexec_add_buffer(image, __va(src_start), src_sz, src_sz,
> > + PAGE_SIZE, 0, -1, 0,
> > + &image->arch.backup_load_addr);
> > + if (ret)
> > + return ret;
> > + }
> > +
> > + /* Prepare elf headers and add a segment */
> > + ret = prepare_elf_headers(image, &elf_addr, &elf_sz);
> > + if (ret)
> > + return ret;
> > +
> > + image->arch.elf_headers = elf_addr;
> > + image->arch.elf_headers_sz = elf_sz;
> > +
> > + ret = kexec_add_buffer(image, (char *)elf_addr, elf_sz, elf_sz,
>
> For some reason, my compiler complains here:
>
> arch/x86/kernel/crash.c: In function ‘load_crashdump_segments’:
> arch/x86/kernel/crash.c:704:6: warning: ‘elf_sz’ may be used uninitialized in this function [-Wuninitialized]
> arch/x86/kernel/crash.c:704:24: warning: ‘elf_addr’ may be used uninitialized in this function [-Wuninitialized]
>
> It is likely bogus, though.
Hmm..., I did not see these warnings with my setup. elf_addr and elf_sz
will be initialized by prepare_elf_headers(). Not sure why compiler is
complaining.
[..]
> > + pr_debug("Final command line is:%s\n", cmdline_ptr);
>
> one space after ":"
Ok. will do.
>
> The rest looks ok to me, but that doesn't mean a whole lot considering
> my very limited kexec knowledge.
Thanks for review. We need many eyes on this patch set. I will make
changes and post another version for review.
Thanks
Vivek
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Vivek Goyal <vgoyal@redhat.com>
To: Borislav Petkov <bp@alien8.de>
Cc: linux-kernel@vger.kernel.org, kexec@lists.infradead.org,
ebiederm@xmission.com, hpa@zytor.com, mjg59@srcf.ucam.org,
greg@kroah.com, jkosina@suse.cz
Subject: Re: [PATCH 11/11] kexec: Support for Kexec on panic using new system call
Date: Fri, 28 Feb 2014 16:06:11 -0500 [thread overview]
Message-ID: <20140228210611.GB17195@redhat.com> (raw)
In-Reply-To: <20140228172857.GG4326@pd.tnic>
On Fri, Feb 28, 2014 at 06:28:57PM +0100, Borislav Petkov wrote:
[..]
> > +/* Memory to backup during crash kdump */
> > +#define KEXEC_BACKUP_SRC_START (0UL)
> > +#define KEXEC_BACKUP_SRC_END (655360UL) /* 640K */
>
> I guess
>
> #define KEXEC_BACKUP_SRC_END (640 * 1024UL)
>
> should be more clear.
Will Change.
[..]
> > +/* Alignment required for elf header segment */
> > +#define ELF_CORE_HEADER_ALIGN 4096
> > +
> > +/* This primarily reprsents number of split ranges due to exclusion */
> > +#define CRASH_MAX_RANGES 16
> > +
> > +struct crash_mem_range {
> > + unsigned long long start, end;
>
> u64?
Ok, that's shorter. Can use that.
[..]
> > +
> > +/* Used while prepareing memory map entries for second kernel */
>
> s/prepareing/preparing/
Yep typo. Will fix.
[..]
> > +static int get_gart_ranges_callback(u64 start, u64 end, void *arg)
> > +{
> > + struct crash_elf_data *ced = arg;
> > +
> > + ced->gart_start = start;
> > + ced->gart_end = end;
> > +
> > + /* Not expecting more than 1 gart aperture */
> > + return 1;
> > +}
> > +
> > +
> > +/* Gather all the required information to prepare elf headers for ram regions */
> > +static int fill_up_ced(struct crash_elf_data *ced, struct kimage *image)
>
> All other functions have nice, spelled out names but not this one :)
>
> Why not fill_up_crash_elf_data()?
Will change it.
>
> > +{
> > + unsigned int nr_ranges = 0;
> > +
> > + ced->image = image;
> > +
> > + walk_system_ram_range(0, -1, &nr_ranges,
> > + get_nr_ram_ranges_callback);
> > +
> > + ced->max_nr_ranges = nr_ranges;
> > +
> > + /*
> > + * We don't create ELF headers for GART aperture as an attempt
> > + * to dump this memory in second kernel leads to hang/crash.
> > + * If gart aperture is present, one needs to exclude that region
> > + * and that could lead to need of extra phdr.
> > + */
> > +
>
> superfluous newline.
Will remove.
[..]
> > +int load_crashdump_segments(struct kimage *image)
> > +{
> > + unsigned long src_start, src_sz;
> > + unsigned long elf_addr, elf_sz;
> > + int ret;
> > +
> > + /*
> > + * Determine and load a segment for backup area. First 640K RAM
> > + * region is backup source
> > + */
> > +
> > + ret = walk_system_ram_res(KEXEC_BACKUP_SRC_START, KEXEC_BACKUP_SRC_END,
> > + image, determine_backup_region);
> > +
> > + /* Zero or postive return values are ok */
> > + if (ret < 0)
> > + return ret;
> > +
> > + src_start = image->arch.backup_src_start;
> > + src_sz = image->arch.backup_src_sz;
> > +
> > + /* Add backup segment. */
> > + if (src_sz) {
> > + ret = kexec_add_buffer(image, __va(src_start), src_sz, src_sz,
> > + PAGE_SIZE, 0, -1, 0,
> > + &image->arch.backup_load_addr);
> > + if (ret)
> > + return ret;
> > + }
> > +
> > + /* Prepare elf headers and add a segment */
> > + ret = prepare_elf_headers(image, &elf_addr, &elf_sz);
> > + if (ret)
> > + return ret;
> > +
> > + image->arch.elf_headers = elf_addr;
> > + image->arch.elf_headers_sz = elf_sz;
> > +
> > + ret = kexec_add_buffer(image, (char *)elf_addr, elf_sz, elf_sz,
>
> For some reason, my compiler complains here:
>
> arch/x86/kernel/crash.c: In function ‘load_crashdump_segments’:
> arch/x86/kernel/crash.c:704:6: warning: ‘elf_sz’ may be used uninitialized in this function [-Wuninitialized]
> arch/x86/kernel/crash.c:704:24: warning: ‘elf_addr’ may be used uninitialized in this function [-Wuninitialized]
>
> It is likely bogus, though.
Hmm..., I did not see these warnings with my setup. elf_addr and elf_sz
will be initialized by prepare_elf_headers(). Not sure why compiler is
complaining.
[..]
> > + pr_debug("Final command line is:%s\n", cmdline_ptr);
>
> one space after ":"
Ok. will do.
>
> The rest looks ok to me, but that doesn't mean a whole lot considering
> my very limited kexec knowledge.
Thanks for review. We need many eyes on this patch set. I will make
changes and post another version for review.
Thanks
Vivek
next prev parent reply other threads:[~2014-02-28 21:06 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-27 18:57 [RFC PATCH 00/11][V2] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-01-27 18:57 ` [PATCH 01/11] kexec: Move segment verification code in a separate function Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-01-27 18:57 ` [PATCH 02/11] resource: Provide new functions to walk through resources Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-01-27 18:57 ` [PATCH 03/11] bin2c: Move bin2c in scripts/basic Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-01-27 21:12 ` Michal Marek
2014-01-27 21:12 ` Michal Marek
2014-01-27 21:18 ` Vivek Goyal
2014-01-27 21:18 ` Vivek Goyal
2014-01-27 21:54 ` Michal Marek
2014-01-27 21:54 ` Michal Marek
2014-01-27 18:57 ` [PATCH 04/11] kernel: Build bin2c based on config option CONFIG_BUILD_BIN2C Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-01-27 18:57 ` [PATCH 05/11] kexec: Make kexec_segment user buffer pointer a union Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-01-27 18:57 ` [PATCH 06/11] kexec: A new system call, kexec_file_load, for in kernel kexec Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-02-21 14:59 ` Borislav Petkov
2014-02-21 14:59 ` Borislav Petkov
2014-02-24 16:41 ` Vivek Goyal
2014-02-24 16:41 ` Vivek Goyal
2014-02-25 19:35 ` Petr Tesarik
2014-02-25 19:35 ` Petr Tesarik
2014-02-25 21:47 ` Borislav Petkov
2014-02-25 21:47 ` Borislav Petkov
2014-02-26 15:37 ` Borislav Petkov
2014-02-26 15:37 ` Borislav Petkov
2014-02-26 15:46 ` Vivek Goyal
2014-02-26 15:46 ` Vivek Goyal
2014-01-27 18:57 ` [PATCH 07/11] kexec: Create a relocatable object called purgatory Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-02-24 19:08 ` H. Peter Anvin
2014-02-24 19:08 ` H. Peter Anvin
2014-02-25 16:43 ` Vivek Goyal
2014-02-25 16:43 ` Vivek Goyal
2014-02-25 16:55 ` H. Peter Anvin
2014-02-25 16:55 ` H. Peter Anvin
2014-02-25 18:20 ` Vivek Goyal
2014-02-25 18:20 ` Vivek Goyal
2014-02-25 21:09 ` H. Peter Anvin
2014-02-25 21:09 ` H. Peter Anvin
2014-02-26 14:52 ` Vivek Goyal
2014-02-26 14:52 ` Vivek Goyal
2014-02-26 16:00 ` Borislav Petkov
2014-02-26 16:00 ` Borislav Petkov
2014-02-26 16:32 ` Vivek Goyal
2014-02-26 16:32 ` Vivek Goyal
2014-02-27 15:44 ` Borislav Petkov
2014-02-27 15:44 ` Borislav Petkov
2014-01-27 18:57 ` [PATCH 08/11] kexec-bzImage: Support for loading bzImage using 64bit entry Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-02-25 18:38 ` H. Peter Anvin
2014-02-25 18:38 ` H. Peter Anvin
2014-02-25 18:43 ` Vivek Goyal
2014-02-25 18:43 ` Vivek Goyal
2014-02-27 21:36 ` Borislav Petkov
2014-02-27 21:36 ` Borislav Petkov
2014-02-28 16:31 ` Vivek Goyal
2014-02-28 16:31 ` Vivek Goyal
2014-03-05 16:37 ` Borislav Petkov
2014-03-05 16:37 ` Borislav Petkov
2014-03-05 16:40 ` H. Peter Anvin
2014-03-05 16:40 ` H. Peter Anvin
2014-03-05 18:40 ` Vivek Goyal
2014-03-05 18:40 ` Vivek Goyal
2014-03-05 19:47 ` Borislav Petkov
2014-03-05 19:47 ` Borislav Petkov
2014-01-27 18:57 ` [PATCH 09/11] kexec: Provide a function to add a segment at fixed address Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-02-27 21:52 ` Borislav Petkov
2014-02-27 21:52 ` Borislav Petkov
2014-02-28 16:56 ` Vivek Goyal
2014-02-28 16:56 ` Vivek Goyal
2014-03-10 10:01 ` Borislav Petkov
2014-03-10 10:01 ` Borislav Petkov
2014-03-10 15:35 ` Vivek Goyal
2014-03-10 15:35 ` Vivek Goyal
2014-01-27 18:57 ` [PATCH 10/11] kexec: Support for loading ELF x86_64 images Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-02-28 14:58 ` Borislav Petkov
2014-02-28 14:58 ` Borislav Petkov
2014-02-28 17:11 ` Vivek Goyal
2014-02-28 17:11 ` Vivek Goyal
2014-03-07 17:12 ` Borislav Petkov
2014-03-07 17:12 ` Borislav Petkov
2014-03-07 18:39 ` Borislav Petkov
2014-03-07 18:39 ` Borislav Petkov
2014-03-10 14:42 ` Vivek Goyal
2014-03-10 14:42 ` Vivek Goyal
2014-03-12 16:19 ` Borislav Petkov
2014-03-12 16:19 ` Borislav Petkov
2014-03-12 17:24 ` Vivek Goyal
2014-03-12 17:24 ` Vivek Goyal
2014-01-27 18:57 ` [PATCH 11/11] kexec: Support for Kexec on panic using new system call Vivek Goyal
2014-01-27 18:57 ` Vivek Goyal
2014-02-28 17:28 ` Borislav Petkov
2014-02-28 17:28 ` Borislav Petkov
2014-02-28 21:06 ` Vivek Goyal [this message]
2014-02-28 21:06 ` Vivek Goyal
2014-05-26 8:25 ` [RFC PATCH 00/11][V2] kexec: A new system call to allow in kernel loading Borislav Petkov
2014-05-26 8:25 ` Borislav Petkov
2014-05-27 12:34 ` Vivek Goyal
2014-05-27 12:34 ` Vivek Goyal
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=20140228210611.GB17195@redhat.com \
--to=vgoyal@redhat.com \
--cc=bp@alien8.de \
--cc=ebiederm@xmission.com \
--cc=greg@kroah.com \
--cc=hpa@zytor.com \
--cc=jkosina@suse.cz \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mjg59@srcf.ucam.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.