[PATCH] detect Xen dom0 properly to avoid conflict with pv_on_hvm domU
Simon Horman
horms at verge.net.au
Thu May 5 08:20:03 EDT 2011
On Wed, May 04, 2011 at 06:32:32PM +0200, Olaf Hering wrote:
> A Xen HVM guest with PV drivers loaded has also a /proc/xen directory.
> But such a guest is an ordinary PC and the special handling for dom0
> breaks kdump in this environment.
> Test for /proc/xen/capabilities instead and cache the result.
>
> Also make two variables static, they are only used in this file.
>
> Signed-off-by: Olaf Hering <olaf at aepfle.de>
>
> ---
> kexec/crashdump-xen.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> Index: kexec-tools-0.8.15/kexec/crashdump-xen.c
> ===================================================================
> --- kexec-tools-0.8.15.orig/kexec/crashdump-xen.c
> +++ kexec-tools-0.8.15/kexec/crashdump-xen.c
> @@ -25,14 +25,19 @@ struct crash_note_info {
> unsigned long length;
> };
>
> -int xen_phys_cpus = 0;
> -struct crash_note_info *xen_phys_notes;
> +static int xen_phys_cpus;
> +static struct crash_note_info *xen_phys_notes;
> +static int is_dom0;
I think you need to explicitly initialise is_dom0 to 0.
Alternatively, is it really such a burden to call access()
each time xen_present() is called? (I'm ambivalent with regards to this).
>
> int xen_present(void)
> {
> - struct stat buf;
> -
> - return stat("/proc/xen", &buf) == 0;
> + if (!is_dom0) {
> + if (access("/proc/xen/capabilities", F_OK) == 0)
> + is_dom0 = 1;
> + else
> + is_dom0 = -1;
> + }
> + return is_dom0 > 0;
> }
>
> unsigned long xen_architecture(struct crash_elf_info *elf_info)
>
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
>
More information about the kexec
mailing list