On Wed, 2013-01-16 at 16:29 +0000, David Vrabel wrote: > > +/* > + * Load a kexec image into memory. > + * > + * 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. > + */ > +#define KEXEC_CMD_kexec_load_v2 4 > +typedef struct xen_kexec_load_v2 { > + uint8_t type; /* One of KEXEC_TYPE_* */ > + uint8_t class; /* One of KEXEC_CLASS_* */ > + uint32_t nr_segments; > + XEN_GUEST_HANDLE(xen_kexec_segment_t) segments; > + uint64_t entry_maddr; /* image entry point machine address. */ > +} xen_kexec_load_v2_t; > +DEFINE_XEN_GUEST_HANDLE(xen_kexec_load_v2_t); Might you want to implement the double buffering scheme which the existing stuff has? This can avoid windows where there is no complete crash kernel present while you load a new one. Ian.