[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. */
kexec_reloc_size:
  .long . - xen_relocate_kernel

It should work for C files and linker script.

Daniel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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