[PATCH 3.19.y-ckt 042/155] x86/xen: Support kexec/kdump in HVM guests by doing a soft reset

David Vrabel david.vrabel at citrix.com
Fri Nov 13 10:27:15 UTC 2015


On 12/11/15 23:16, Kamal Mostafa wrote:
> 3.19.8-ckt10 -stable review patch.  If anyone has any objections, please let me know.
> 
> ------------------
> 
> From: Vitaly Kuznetsov <vkuznets at redhat.com>
> 
> commit 0b34a166f291d255755be46e43ed5497cdd194f2 upstream.
> 
> Currently there is a number of issues preventing PVHVM Xen guests from
> doing successful kexec/kdump:
> 
>   - Bound event channels.
>   - Registered vcpu_info.
>   - PIRQ/emuirq mappings.
>   - shared_info frame after XENMAPSPACE_shared_info operation.
>   - Active grant mappings.
> 
> Basically, newly booted kernel stumbles upon already set up Xen
> interfaces and there is no way to reestablish them. In Xen-4.7 a new
> feature called 'soft reset' is coming. A guest performing kexec/kdump
> operation is supposed to call SCHEDOP_shutdown hypercall with
> SHUTDOWN_soft_reset reason before jumping to new kernel. Hypervisor
> (with some help from toolstack) will do full domain cleanup (but
> keeping its memory and vCPU contexts intact) returning the guest to
> the state it had when it was first booted and thus allowing it to
> start over.
> 
> Doing SHUTDOWN_soft_reset on Xen hypervisors which don't support it is
> probably OK as by default all unknown shutdown reasons cause domain
> destroy with a message in toolstack log: 'Unknown shutdown reason code
> 5. Destroying domain.'  which gives a clue to what the problem is and
> eliminates false expectations.
> 
> Signed-off-by: Vitaly Kuznetsov <vkuznets at redhat.com>
> Signed-off-by: David Vrabel <david.vrabel at citrix.com>
> Signed-off-by: Kamal Mostafa <kamal at canonical.com>
> ---
>  arch/x86/xen/enlighten.c      | 23 +++++++++++++++++++++++
>  include/xen/interface/sched.h |  8 ++++++++
>  2 files changed, 31 insertions(+)
> 
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index f94ad30..2339a33 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -33,6 +33,10 @@
>  #include <linux/memblock.h>
>  #include <linux/edd.h>
>  
> +#ifdef CONFIG_KEXEC_CORE

You need to change all uses of CONFIG_KEXEC_CORE to CONFIG_KEXEC.

David




More information about the kernel-team mailing list