According to that change set in the Xen unstable branch changeset: 18428:ae9b223a675d user: Keir Fraser <keir.fraser@xxxxxxxxxx> date: Thu Sep 04 14:38:26 2008 +0100 files: xen/common/domain.c xen/common/event_channel.c xen/common/schedule.c xen/include/xen/sched.h description: More efficient implementation of SCHEDOP_poll when polling a single port. Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> the member "is_polling" of struct domain will be removed in Xen 4.4. This patch fixes the problem that a dump cannot be opened in Hypervisor mode in crash when produced by such a Xen version. That's the error message of Crash: crash: invalid structure member offset: domain_is_polling FILE: xen_hyper.c LINE: 1182 FUNCTION: xen_hyper_store_domain_context() [./crash] error trace: 52bfc2 => 52e401 => 52ee07 => 508062 508062: OFFSET_verify+168 52ee07: xen_hyper_store_domain_context+742 52e401: xen_hyper_refresh_domain_context_space+196 52bfc2: xen_hyper_domain_init+959 Signed-off-by: Bernhard Walle <bwalle@xxxxxxx> --- xen_hyper.c | 9 ++++++++- xen_hyper_dump_tables.c | 6 ++++-- 2 files changed, 12 insertions(+), 3 deletions(-) --- a/xen_hyper.c +++ b/xen_hyper.c @@ -188,7 +188,13 @@ xen_hyper_domain_init(void) XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_hvm, "domain", "is_hvm"); XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_privileged, "domain", "is_privileged"); XEN_HYPER_MEMBER_OFFSET_INIT(domain_debugger_attached, "domain", "debugger_attached"); + + /* + * Will be removed in Xen 4.4 (hg ae9b223a675d), + * need to check that with XEN_HYPER_VALID_MEMBER() before using + */ XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_polling, "domain", "is_polling"); + XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_dying, "domain", "is_dying"); XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_paused_by_controller, "domain", "is_paused_by_controller"); XEN_HYPER_MEMBER_OFFSET_INIT(domain_is_shutting_down, "domain", "is_shutting_down"); @@ -1179,7 +1185,8 @@ xen_hyper_store_domain_context(struct xe dc->domain_flags |= XEN_HYPER_DOMS_privileged; } else if (*(dp + XEN_HYPER_OFFSET(domain_debugger_attached))) { dc->domain_flags |= XEN_HYPER_DOMS_debugging; - } else if (*(dp + XEN_HYPER_OFFSET(domain_is_polling))) { + } else if (XEN_HYPER_VALID_MEMBER(domain_is_polling) && + *(dp + XEN_HYPER_OFFSET(domain_is_polling))) { dc->domain_flags |= XEN_HYPER_DOMS_polling; } else if (*(dp + XEN_HYPER_OFFSET(domain_is_paused_by_controller))) { dc->domain_flags |= XEN_HYPER_DOMS_ctrl_pause; --- a/xen_hyper_dump_tables.c +++ b/xen_hyper_dump_tables.c @@ -775,8 +775,10 @@ xen_hyper_dump_xen_hyper_offset_table(ch (buf, "%ld\n", xen_hyper_offset_table.domain_is_privileged)); XEN_HYPER_PRI(fp, len, "domain_debugger_attached: ", buf, flag, (buf, "%ld\n", xen_hyper_offset_table.domain_debugger_attached)); - XEN_HYPER_PRI(fp, len, "domain_is_polling: ", buf, flag, - (buf, "%ld\n", xen_hyper_offset_table.domain_is_polling)); + if (XEN_HYPER_VALID_MEMBER(domain_is_polling)) { + XEN_HYPER_PRI(fp, len, "domain_is_polling: ", buf, flag, + (buf, "%ld\n", xen_hyper_offset_table.domain_is_polling)); + } XEN_HYPER_PRI(fp, len, "domain_is_dying: ", buf, flag, (buf, "%ld\n", xen_hyper_offset_table.domain_is_dying)); XEN_HYPER_PRI(fp, len, "domain_is_paused_by_controller: ", buf, flag, -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility