From: Don Slutz <dslutz@verizon.com>
To: David Vrabel <david.vrabel@citrix.com>, xen-devel@lists.xen.org
Cc: Keir Fraser <keir@xen.org>, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH 3/9] kexec: add infrastructure for handling kexec images
Date: Tue, 5 Nov 2013 17:39:15 -0500 [thread overview]
Message-ID: <52797393.3030704@terremark.com> (raw)
In-Reply-To: <1381251310-29449-4-git-send-email-david.vrabel@citrix.com>
[-- Attachment #1.1: Type: text/plain, Size: 3067 bytes --]
On 10/08/13 12:55, David Vrabel wrote:
> From: David Vrabel <david.vrabel@citrix.com>
>
> Add the code needed to handle and load kexec images into Xen memory or
> into the crash region. This is needed for the new KEXEC_CMD_load and
> KEXEC_CMD_unload hypercall sub-ops.
>
[...]
> +static int kimage_crash_alloc(struct kexec_image **rimage, paddr_t entry,
> + unsigned long nr_segments,
> + xen_kexec_segment_t *segments)
> +{
> + unsigned long i;
> + int result;
> +
> + /* Verify we have a valid entry point */
> + if ( (entry < kexec_crash_area.start)
> + || (entry > kexec_crash_area.start + kexec_crash_area.size))
> + return -EADDRNOTAVAIL;
> +
> + /*
> + * Verify we have good destination addresses. Normally
> + * the caller is responsible for making certain we don't
> + * attempt to load the new image into invalid or reserved
> + * areas of RAM. But crash kernels are preloaded into a
> + * reserved area of ram. We must ensure the addresses
> + * are in the reserved area otherwise preloading the
> + * kernel could corrupt things.
> + */
> + for ( i = 0; i < nr_segments; i++ )
> + {
> + paddr_t mstart, mend;
> +
> + if ( guest_handle_is_null(segments[i].buf.h) )
> + continue;
> +
> + mstart = segments[i].dest_maddr;
> + mend = mstart + segments[i].dest_size - 1;
It is safer and matches the rest of the use to drop the -1 here, and use "mend >=" below. (The more I think on it, "mend >" below is still correct after removing the "- 1".)
> + /* Ensure we are within the crash kernel limits. */
> + if ( (mstart < kexec_crash_area.start )
> + || (mend > kexec_crash_area.start + kexec_crash_area.size))
> + return -EADDRNOTAVAIL;
> + }
> +
> + /* Allocate and initialize a controlling structure. */
> + result = do_kimage_alloc(rimage, entry, nr_segments, segments,
> + KEXEC_TYPE_CRASH);
> + if ( result )
> + return result;
> +
> + return 0;
It can be proved that result === 0. So "return result" and "return 0" are the same. This means that the if above is not needed. When it is removed the only use of result is to be returned, so changing to:
return do_kimage_alloc(rimage, entry, nr_segments, segments, KEXEC_TYPE_CRASH);
makes sense to me.
> +}
[...]
> +static int kimage_add_entry(struct kexec_image *image, kimage_entry_t entry)
> +{
> + kimage_entry_t *entries;
> +
> + if ( image->next_entry == KIMAGE_LAST_ENTRY )
> + {
> + struct page_info *page;
> +
> + page = kimage_alloc_page(image, KIMAGE_NO_DEST);
> + if ( !page )
> + return -ENOMEM;
> +
> + entries = __map_domain_page(image->entry_page);
Not sure if entries needs to be checked for NULL. Best guess is that it cannot be NULL.
> + entries[image->next_entry] = page_to_maddr(page) | IND_INDIRECTION;
> + unmap_domain_page(entries);
> +
>
-Don Slutz
[-- Attachment #1.2: Type: text/html, Size: 4379 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2013-11-05 22:39 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-08 16:55 [PATCHv9 0/9] Xen: extend kexec hypercall for use with pv-ops kernels David Vrabel
2013-10-08 16:55 ` [PATCH 1/9] x86: give FIX_EFI_MPF its own fixmap entry David Vrabel
2013-10-08 16:55 ` [PATCH 2/9] kexec: add public interface for improved load/unload sub-ops David Vrabel
2013-10-08 16:55 ` [PATCH 3/9] kexec: add infrastructure for handling kexec images David Vrabel
2013-11-05 22:39 ` Don Slutz [this message]
2013-11-06 8:12 ` Jan Beulich
2013-10-08 16:55 ` [PATCH 4/9] kexec: extend hypercall with improved load/unload ops David Vrabel
2013-11-05 22:43 ` Don Slutz
2013-10-08 16:55 ` [PATCH 5/9] xen: kexec crash image when dom0 crashes David Vrabel
2013-10-08 16:55 ` [PATCH 6/9] libxc: add hypercall buffer arrays David Vrabel
2013-10-08 16:55 ` [PATCH 7/9] libxc: add API for kexec hypercall David Vrabel
2013-10-08 16:55 ` [PATCH 8/9] x86: check kexec relocation code fits in a page David Vrabel
2013-10-08 16:55 ` [PATCH 9/9] MAINTAINERS: Add KEXEC maintainer David Vrabel
2013-10-08 17:03 ` [PATCHv9 0/9] Xen: extend kexec hypercall for use with pv-ops kernels Andrew Cooper
2013-10-09 15:26 ` Daniel Kiper
2013-10-09 15:52 ` Andrew Cooper
2013-10-09 16:03 ` David Vrabel
2013-10-10 15:45 ` Daniel Kiper
2013-10-10 16:35 ` David Vrabel
2013-10-10 21:24 ` Daniel Kiper
2013-10-11 6:49 ` Jan Beulich
2013-10-11 8:58 ` Daniel Kiper
2013-10-11 9:56 ` David Vrabel
2013-10-11 11:15 ` Daniel Kiper
2013-10-11 14:06 ` David Vrabel
2013-10-14 13:53 ` Daniel Kiper
2013-10-14 14:14 ` David Vrabel
2013-10-14 18:13 ` Daniel Kiper
2013-10-16 21:09 ` Daniel Kiper
2013-11-14 11:20 ` Daniel Kiper
2013-11-14 11:27 ` David Vrabel
2013-10-18 18:40 ` Daniel Kiper
2013-10-18 23:14 ` David Vrabel
2013-10-21 12:19 ` Daniel Kiper
2013-10-21 12:56 ` David Vrabel
2013-10-21 20:20 ` Daniel Kiper
2013-10-25 9:13 ` Daniel Kiper
2013-10-25 23:04 ` David Vrabel
2013-10-30 16:57 ` David Vrabel
2013-10-31 16:59 ` Don Slutz
2013-10-31 18:30 ` David Vrabel
2013-10-31 20:23 ` Don Slutz
2013-10-31 22:21 ` Daniel Kiper
2013-11-05 17:41 ` Daniel Kiper
2013-11-05 18:01 ` David Vrabel
2013-10-18 23:42 ` Andrew Cooper
2013-10-21 3:11 ` Xu, YongweiX
2013-10-21 10:21 ` David Vrabel
2013-10-21 12:26 ` David Vrabel
-- strict thread matches above, loose matches on Subject: below --
2013-11-06 14:49 [PATCHv10 " David Vrabel
2013-11-06 14:49 ` [PATCH 3/9] kexec: add infrastructure for handling kexec images David Vrabel
2013-11-06 14:49 ` David Vrabel
2013-11-07 20:40 ` [Xen-devel] " Don Slutz
2013-11-07 23:51 ` Don Slutz
2013-11-07 20:40 ` Don Slutz
2013-09-20 13:10 [PATCHv8 0/9] Xen: extend kexec hypercall for use with pv-ops kernels David Vrabel
2013-09-20 13:10 ` [PATCH 3/9] kexec: add infrastructure for handling kexec images David Vrabel
2013-09-12 19:48 [PATCHv7 0/9] Xen: extend kexec hypercall for use with pv-ops kernels David Vrabel
2013-09-12 19:49 ` [PATCH 3/9] kexec: add infrastructure for handling kexec images David Vrabel
2013-09-12 19:49 ` David Vrabel
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=52797393.3030704@terremark.com \
--to=dslutz@verizon.com \
--cc=david.vrabel@citrix.com \
--cc=jbeulich@suse.com \
--cc=keir@xen.org \
--cc=xen-devel@lists.xen.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.