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 >