public inbox for kexec@lists.infradead.org
 help / color / mirror / Atom feed
From: David Vrabel <david.vrabel@citrix.com>
To: Daniel Kiper <daniel.kiper@oracle.com>
Cc: "kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH 3/8] kexec: add public interface for improved load/unload sub-ops
Date: Fri, 22 Feb 2013 11:49:19 +0000	[thread overview]
Message-ID: <51275B3F.7010503@citrix.com> (raw)
In-Reply-To: <20130221222928.GA18464@host-192-168-1-59.local.net-space.pl>

On 21/02/13 22:29, Daniel Kiper wrote:
> On Thu, Feb 21, 2013 at 05:48:09PM +0000, David Vrabel wrote:
>> From: David Vrabel <david.vrabel@citrix.com>
>>
>> Add replacement KEXEC_CMD_load and KEXEC_CMD_unload sub-ops to the
>> kexec hypercall.  These new sub-ops allow a priviledged guest to
>> provide the image data to be loaded into Xen memory or the crash
>> region instead of guests loading the image data themselves and
>> providing the relocation code and metadata.
>>
>> The old interface is provided to guests requesting an interface
>> version prior to 4.3.
>>
[...]
>> +/*
>> + * Load a kexec image into memory.
>> + *
>> + * For KEXEC_TYPE_DEFAULT images, the segments may be anywhere in RAM.
>> + * The image is relocated prior to being executed.
>> + *
>> + * For KEXEC_TYPE_CRASH images, each segment of the image must reside
>> + * in the memory region reserved for kexec (KEXEC_RANGE_MA_CRASH) and
>> + * the entry point must be within the image. The caller is responsible
>> + * for ensuring that multiple images do not overlap.
> 
> What do you mean by "The caller is responsible for ensuring
> that multiple images do not overlap."?

The intention here is to allow for safe replacement of a crash image by
loading the second image at a different location in the crash region.

This won't actually work however, as the control pages (also allocated
from the crash region) will conflict.

This is the behaviour of the Linux implementation.  It's less than ideal
and something I plan to look at later on (it's low priority as replacing
crash images isn't an interesting use case).

>> + */
>> +
>> +#define KEXEC_CMD_kexec_load 4
>> +typedef struct xen_kexec_load {
>> +    uint8_t  type;        /* One of KEXEC_TYPE_* */
>> +    uint16_t arch;        /* ELF machine type (EM_*). */
>> +    uint32_t __pad;
> 
> Why do you need __pad here?

To ensure that the following uint64_t is aligned to 8 bytes in both 32
and 64-bit.

Annoyingly uint64_t only has 4 byte alignment on 32-bit architectures.

>> +    uint64_t entry_maddr; /* image entry point machine address. */
>> +    uint32_t nr_segments;
>> +    XEN_GUEST_HANDLE_64(xen_kexec_segment_t) segments;
>> +} xen_kexec_load_t;
>> +DEFINE_XEN_GUEST_HANDLE(xen_kexec_load_t);
>> +
>> +/*
>> + * Unload a kexec image.
>> + *
>> + * Type must be one of KEXEC_TYPE_DEFAULT or KEXEC_TYPE_CRASH.
>> + */
>> +#define KEXEC_CMD_kexec_unload 5
>> +typedef struct xen_kexec_unload {
>> +    uint8_t type;
>> +} xen_kexec_unload_t;
>> +DEFINE_XEN_GUEST_HANDLE(xen_kexec_unload_t);
>> +
>> +#else /* __XEN_INTERFACE_VERSION__ < 0x00040300 */
>> +
>> +#undef KEXEC_CMD_kexec_load
>> +#undef KEXEC_CMD_kexec_unload
>> +#define KEXEC_CMD_kexec_load KEXEC_CMD_kexec_load_v1
>> +#define KEXEC_CMD_kexec_unload KEXEC_CMD_kexec_unload_v1
> 
> Could you define all constants in one place at the
> beginning of this file? It is very difficult to
> see what is going on. Especially those undefs are
> crazy for me.

I was copying the style used for sched_op_compat.

David

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

  reply	other threads:[~2013-02-22 11:49 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-21 17:48 [PATCH 0/8] kexec: extended kexec hypercall for use with pv-ops kernels David Vrabel
2013-02-21 17:48 ` [PATCH 1/8] x86: give FIX_EFI_MPF its own fixmap entry David Vrabel
2013-02-21 17:48 ` [PATCH 2/8] xen: make GUEST_HANDLE_64() and uint64_aligned_t available everywhere David Vrabel
2013-02-21 17:48 ` [PATCH 3/8] kexec: add public interface for improved load/unload sub-ops David Vrabel
2013-02-21 22:29   ` Daniel Kiper
2013-02-22 11:49     ` David Vrabel [this message]
2013-02-22  8:33   ` [Xen-devel] " Jan Beulich
2013-02-22 11:50     ` David Vrabel
2013-02-22 13:09       ` Jan Beulich
2013-03-08 10:50   ` Daniel Kiper
2013-03-08 11:52     ` David Vrabel
2013-03-08 12:28       ` Daniel Kiper
2013-03-08 12:36         ` [Xen-devel] " Jan Beulich
2013-03-08 15:34           ` Daniel Kiper
2013-02-21 17:48 ` [PATCH 4/8] kexec: add infrastructure for handling kexec images David Vrabel
2013-03-08 11:37   ` Daniel Kiper
2013-03-08 11:42     ` David Vrabel
2013-03-08 11:58       ` Daniel Kiper
2013-02-21 17:48 ` [PATCH 5/8] kexec: extend hypercall with improved load/unload ops David Vrabel
2013-02-21 22:41   ` Daniel Kiper
2013-02-22  8:42   ` [Xen-devel] " Jan Beulich
2013-02-22 11:54     ` David Vrabel
2013-02-22 13:11       ` Jan Beulich
2013-03-08 11:23   ` Daniel Kiper
2013-03-08 11:40     ` David Vrabel
2013-03-08 12:21       ` Daniel Kiper
2013-03-08 14:01         ` David Vrabel
2013-03-08 15:23           ` Daniel Kiper
2013-03-08 17:29             ` [Xen-devel] " Andrew Cooper
2013-03-08 21:45               ` Daniel Kiper
2013-03-08 23:38                 ` Andrew Cooper
2013-03-11 11:17                   ` Daniel Kiper
2013-03-11 13:21                     ` David Vrabel
2013-03-11 13:30                       ` Daniel Kiper
2013-03-11 13:43                         ` David Vrabel
2013-03-11 14:13                           ` Daniel Kiper
2013-03-11 14:27                             ` Andrew Cooper
2013-03-11 20:45                               ` Daniel Kiper
2013-03-11 21:18                                 ` Andrew Cooper
2013-03-12 11:17                                   ` Daniel Kiper
2013-03-12 11:36   ` Daniel Kiper
2013-02-21 17:48 ` [PATCH 6/8] xen: kexec crash image when dom0 crashes David Vrabel
2013-02-21 17:48 ` [PATCH 7/8] libxc: add hypercall buffer arrays David Vrabel
2013-03-06 14:25   ` [Xen-devel] " Ian Jackson
2013-03-07  2:44   ` Ian Campbell
2013-02-21 17:48 ` [PATCH 8/8] libxc: add API for kexec hypercall David Vrabel
2013-03-07  2:46   ` [Xen-devel] " Ian Campbell
2013-02-21 22:47 ` [PATCH 0/8] kexec: extended kexec hypercall for use with pv-ops kernels Daniel Kiper
2013-02-22  8:17 ` [Xen-devel] " Jan Beulich
2013-02-22 11:56   ` David Vrabel
2013-02-26 13:58 ` Don Slutz
2013-03-05 11:04 ` David Vrabel
  -- strict thread matches above, loose matches on Subject: below --
2013-04-08 18:59 [PATCHv3 0/8] kexec: extend " David Vrabel
2013-04-08 18:59 ` [PATCH 3/8] kexec: add public interface for improved load/unload sub-ops David Vrabel
2013-04-16 17:13 [PATCHv4 0/8] kexec: extend kexec hypercall for use with pv-ops kernels David Vrabel
2013-04-16 17:13 ` [PATCH 3/8] kexec: add public interface for improved load/unload sub-ops 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=51275B3F.7010503@citrix.com \
    --to=david.vrabel@citrix.com \
    --cc=daniel.kiper@oracle.com \
    --cc=kexec@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox