[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 05/10] kexec: extend hypercall with improved load/unload ops

On Mon, Jun 24, 2013 at 06:42:16PM +0100, David Vrabel wrote:
> From: David Vrabel <david.vrabel@xxxxxxxxxx>
> In the existing kexec hypercall, the load and unload ops depend on
> internals of the Linux kernel (the page list and code page provided by
> the kernel).  The code page is used to transition between Xen context
> and the image so using kernel code doesn't make sense and will not
> work for PVH guests.
> Add replacement KEXEC_CMD_kexec_load and KEXEC_CMD_kexec_unload ops
> that no longer require a code page to be provided by the guest -- Xen
> now provides the code for calling the image directly.
> The new load op looks similar to the Linux kexec_load system call and
> allows the guest to provide the image data to be loaded.  The guest
> specifies the architecture of the image which may be a 32-bit subarch
> of the hypervisor's architecture (i.e., an EM_386 image on an
> EM_X86_64 hypervisor).
> The toolstack can now load images without kernel involvement.  This is
> required for supporting kexec when using a dom0 with an upstream
> kernel.
> Crash images are copied directly into the crash region on load.
> Default images are copied into domheap pages and a list of source and
> destination machine addresses is created.  This is list is used in
> kexec_reloc() to relocate the image to its destination.
> The old load and unload sub-ops are still available (as
> KEXEC_CMD_load_v1 and KEXEC_CMD_unload_v1) and are implemented on top
> of the new infrastructure.
> Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
> Reviewed-by: Daniel Kiper <daniel.kiper@xxxxxxxxxx>
> Tested-by: Daniel Kiper <daniel.kiper@xxxxxxxxxx>


> diff --git a/xen/arch/x86/x86_64/kexec_reloc.S 
> b/xen/arch/x86/x86_64/kexec_reloc.S
> new file mode 100644
> index 0000000..135cbcd
> --- /dev/null
> +++ b/xen/arch/x86/x86_64/kexec_reloc.S


> +        .globl __kexec_reloc_size
> +        .set __kexec_reloc_size, . - kexec_reloc
> +        .globl kexec_reloc_size
> +kexec_reloc_size:
> +        .quad __kexec_reloc_size

Why do you define two variables to store the same value?
Why quad not long? I think that you could do that:

  .globl kexec_reloc_size /* Personaly I prefer do this at the beginning of S 
file. */
  .long . - xen_relocate_kernel

It should work for C files and linker script.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.