Sorry Dave,

My mistake. Actually, we have to use 64 bit hypervisor...  The file I show
to you was created with xen-64 bit and dom0 32 bit.  :(

Sorry about my mistakes.

When I tried the crash with --p2m_mfn 000bf969 option.

x86_xen_kdump_p2m_create: p2m_mfn: bf969
00000000: cccccccc cccccccc cccccccc cccccccc
00000010: cccccccc cccccccc cccccccc cccccccc
00000020: cccccccc cccccccc cccccccc cccccccc
00000030: cccccccc cccccccc cccccccc cccccccc

crash32: read error: physical address: cccccccc000  type: "xen kdump p2m mfn
list page"


On Mon, Sep 13, 2010 at 4:03 PM, Dave Anderson <[email protected]> wrote:

>
> ----- "Feng LI" <[email protected]> wrote:
>
> > Hey Dave,
> >
> > I attached the crash -d1 output with this email...
> >
> > Do you think whether anything wrong with my vmcore ?
>
> I'm not sure...
>
> The dom0 "p2m_mfn" value required by the crash utility is
> contained in the Xen XEN_ELFNOTE_CRASH_INFO note in the
> vmcore header.  That note contains this data structure,
> as defined in "include/xen/elfcore.h" in the Xen hypervisor
> source tree:
>
>  typedef struct {
>      unsigned long xen_major_version;
>      unsigned long xen_minor_version;
>      unsigned long xen_extra_version;
>      unsigned long xen_changeset;
>      unsigned long xen_compiler;
>      unsigned long xen_compile_date;
>      unsigned long xen_compile_time;
>      unsigned long tainted;
>  #ifdef CONFIG_X86
>      unsigned long xen_phys_start;
>      unsigned long dom0_pfn_to_mfn_frame_list_list;
>  #endif
>  } crash_xen_info_t;
>
> When a dom0 crashes, it goes through machine_crash_shutdown()
> in the hypervisor's "arch/x86/crash.c" file, where it gets a
> pointer to the crash_xen_info structure, and then appends the
> CONFIG_X86-only xen_phys_start and dom0_pfn_to_mfn_frame_list_list
> fields:
>
>  void machine_crash_shutdown(void)
>  {
>      crash_xen_info_t *info;
>
>      local_irq_disable();
>
>      nmi_shootdown_cpus();
>
>      disable_IO_APIC();
>
>      hvm_disable();
>
>      info = kexec_crash_save_info();
>      info->xen_phys_start = xen_phys_start;
>      info->dom0_pfn_to_mfn_frame_list_list =
>          arch_get_pfn_to_mfn_frame_list_list(dom0);
>  }
>
> And then the crash utility reads the dom0_pfn_to_mfn_frame_list_list
> value, and stores it in the "p2m_mfn" field that I referenced in the
> last email.
>
> Now, looking at your crash -d1 output, here's the XEN_ELFNOTE_CRASH_INFO,
> where it should have picked up the bf969 as the p2m_mfn value:
>
> Elf64_Nhdr:
>               n_namesz: 4 ("Xen")
>               n_descsz: 80
>                 n_type: 1000001 (XEN_ELFNOTE_CRASH_INFO)
>                         00000003 00000000 00000004 00000000
>                         d7beb409 00000000 d7bed168 00000000
>                         d7bed138 00000000 d7beb3c5 00000000
>                         d7beb3e2 00000000 00000000 00000000
>                         d7a00000 00000000 000bf969 00000000
> ... [ snip ] ...
>
> But it read it as a 0, as evidenced by the "p2m_mfn: 0" shown
> below:
>
> ... [ snip ] ...
>
> This GDB was configured as "i686-pc-linux-gnu"...
>
> x86_xen_kdump_p2m_create: p2m_mfn: 0
>
> ... [ snip ] ...
>
> In the meantime, I provisioned a RHEL5 32-bit x86 system with a 32-bit
> dom0,
> and forced a crash.  As expected, it created a 64-bit ELF vmcore, which
> does *not* display the "mismatch" warning message like yours does.  But
> more
> importantly, the XEN_ELFNOTE_CRASH_INFO dump on my vmcore looks like this,
> where the p2m_mfn is 2c199:
>
> Elf64_Nhdr:
>               n_namesz: 4 ("Xen")
>               n_descsz: 40
>                 n_type: 1000001 (XEN_ELFNOTE_CRASH_INFO)
>                         00000003 00000001 0018e97f 0018e98a
>                         00190120 0018e932 0018e94f 00000001
>                         00000000 0002c199
>
> Note that the fields in your vmcore are 64-bit values, while those above
> in the RHEL5 are 32-bit values.  That presumably is due to the fact that
> you are running a 64-bit hypervisor?  (whereas my RHEL5 the hypervisor is
> a 32-bit)  Are you *sure* that you are running a 32-bit hypervisor?
>
> In any case, the p2m_mfn value in the vmcore header can be overridden
> on the crash command line.  What happens if you enter:
>
>  # crash vmlinux vmcore --p2m_mfn bf969
>
> I'm guessing that you'll probably bump into yet another oddity, but it's
> worth a shot...
>
> Dave
>
> --
> Crash-utility mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/crash-utility
>
--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility

Reply via email to