Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package crash for openSUSE:Factory checked in at 2021-06-26 21:25:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/crash (Old) and /work/SRC/openSUSE:Factory/.crash.new.2625 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crash" Sat Jun 26 21:25:31 2021 rev:176 rq:902426 version:7.2.9 Changes: -------- --- /work/SRC/openSUSE:Factory/crash/crash.changes 2021-04-27 21:35:59.384114904 +0200 +++ /work/SRC/openSUSE:Factory/.crash.new.2625/crash.changes 2021-06-26 21:25:58.895384386 +0200 @@ -1,0 +2,14 @@ +Fri Jun 25 18:27:35 UTC 2021 - David Mair <dm...@suse.com> + +- Kernel commit 5c83511bdb9832c86be20fb86b783356e2f58062 removed + pv_init_ops, and commit 054ac8ad5ebe4a69e1f0e842483821ddbe560121 + removed the Xen-specific paravirt patch function. As a result, + pvops Xen dumps are no longer recognized as Xen dumps, and + virtual-to-physical translation fails. + + Use the value of xen_start_info to determine whether the kernel + is running in Xen PV mode. As suggested by Juergen Gross. + (bsc#1187634) + + crash-xen-pvops.patch + +------------------------------------------------------------------- New: ---- crash-xen-pvops.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crash.spec ++++++ --- /var/tmp/diff_new_pack.WgVc2M/_old 2021-06-26 21:25:59.859385659 +0200 +++ /var/tmp/diff_new_pack.WgVc2M/_new 2021-06-26 21:25:59.859385659 +0200 @@ -97,6 +97,7 @@ Patch44: %{name}-printk-use-committed-finalized-state-values.patch # PATCH-FIX-UPSTREAM - https://github.com/crash-utility/crash/commit/9c881ab372010b46655dfed0a3c5cd78b3ff8fa0.patch Patch45: %{name}-x86_64-VC-exception-stack-support.patch +Patch46: %{name}-xen-pvops.patch Patch90: %{name}-sial-ps-2.6.29.diff BuildRequires: bison BuildRequires: flex @@ -299,6 +300,7 @@ %patch43 -p1 %patch44 -p1 %patch45 -p1 +%patch46 -p1 %if %{have_snappy} %patch15 -p1 %endif ++++++ crash-xen-pvops.patch ++++++ Index: b/kernel.c =================================================================== --- a/kernel.c +++ b/kernel.c @@ -95,6 +95,7 @@ static ulong __dump_audit(char *); static void dump_audit(void); static char *vmcoreinfo_read_string(const char *); static void check_vmcoreinfo(void); +static int is_pvops_xen(void); /* @@ -109,7 +110,6 @@ kernel_init() char *rqstruct; char *rq_timestamp_name = NULL; char *irq_desc_type_name; - ulong pv_init_ops; struct gnu_request req; if (pc->flags & KERNEL_DEBUG_QUERY) @@ -169,11 +169,7 @@ kernel_init() error(FATAL, "cannot malloc m2p page."); } - if (PVOPS() && symbol_exists("pv_init_ops") && - readmem(symbol_value("pv_init_ops"), KVADDR, &pv_init_ops, - sizeof(void *), "pv_init_ops", RETURN_ON_ERROR) && - (p1 = value_symbol(pv_init_ops)) && - STREQ(p1, "xen_patch")) { + if (is_pvops_xen()) { kt->flags |= ARCH_XEN | ARCH_PVOPS_XEN; kt->xen_flags |= WRITABLE_PAGE_TABLES; if (machine_type("X86")) @@ -10690,6 +10686,32 @@ paravirt_init(void) } } +static int +is_pvops_xen(void) +{ + ulong addr; + char *sym; + + if (!PVOPS()) + return FALSE; + + if (symbol_exists("pv_init_ops") && + readmem(symbol_value("pv_init_ops"), KVADDR, &addr, + sizeof(void *), "pv_init_ops", RETURN_ON_ERROR) && + (sym = value_symbol(addr)) && + (STREQ(sym, "xen_patch") || + STREQ(sym, "paravirt_patch_default"))) + return TRUE; + + if (symbol_exists("xen_start_info") && + readmem(symbol_value("xen_start_info"), KVADDR, &addr, + sizeof(void *), "xen_start_info", RETURN_ON_ERROR) && + addr != 0) + return TRUE; + + return FALSE; +} + /* * Get the kernel's xtime timespec from its relevant location. */