x86/setup: Do not reserve a crash kernel region if booted on Xen PV

Xen PV domains cannot shut down and start a crash kernel. Instead,
the crashing kernel makes a SCHEDOP_shutdown hypercall with the
reason code SHUTDOWN_crash, cf. xen_crash_shutdown() machine op in
arch/x86/xen/enlighten_pv.c.

A crash kernel reservation is merely a waste of RAM in this case. It
may also confuse users of kexec_load(2) and/or kexec_file_load(2).
When flags include KEXEC_ON_CRASH or KEXEC_FILE_ON_CRASH,
respectively, these syscalls return success, which is technically
correct, but the crash kexec image will never be actually used.

Signed-off-by: Petr Tesarik <ptesarik@suse.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Juergen Gross <jgross@suse.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Dou Liyang <douly.fnst@cn.fujitsu.com>
Cc: Mikulas Patocka <mpatocka@redhat.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: xen-devel@lists.xenproject.org
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Jean Delvare <jdelvare@suse.de>
Link: https://lkml.kernel.org/r/20180425120835.23cef60c@ezekiel.suse.cz

authored by Petr Tesarik and committed by Thomas Gleixner 3db3eb28 b837913f

Changed files
+6
arch
x86
kernel
+6
arch/x86/kernel/setup.c
··· 50 50 #include <linux/init_ohci1394_dma.h> 51 51 #include <linux/kvm_para.h> 52 52 #include <linux/dma-contiguous.h> 53 + #include <xen/xen.h> 53 54 54 55 #include <linux/errno.h> 55 56 #include <linux/kernel.h> ··· 533 532 if (ret != 0 || crash_size <= 0) 534 533 return; 535 534 high = true; 535 + } 536 + 537 + if (xen_pv_domain()) { 538 + pr_info("Ignoring crashkernel for a Xen PV domain\n"); 539 + return; 536 540 } 537 541 538 542 /* 0 means: find the address automatically */