Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP6
crash.10868
crash-xen-invalid-pcpu-vaddr-use-hware-domain-s...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File crash-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch of Package crash.10868
Two fixes for the Xen hypervisor; the first fixes a bug seen with Xen 4.11.0 during initialization, which fails with the error message "crash: invalid kernel virtual address: <address> type: fill_pcpu_struct", followed by "WARNING: cannot fill pcpu_struct" and "crash: cannot read cpu_info". The second fix prevents a segmentation violation associated with a crash-7.1.1 commit that addressed the Xen 4.5.0 hypervisor symbol name change from "dom0" to "hardware_domain". (dietmar.hahn@ts.fujitsu.com) --- x86_64.c | 7 +++++-- xen_hyper.c | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) --- a/x86_64.c +++ b/x86_64.c @@ -7744,8 +7744,11 @@ x86_64_init_hyper(int when) case POST_GDB: XEN_HYPER_STRUCT_SIZE_INIT(cpuinfo_x86, "cpuinfo_x86"); XEN_HYPER_STRUCT_SIZE_INIT(tss_struct, "tss_struct"); - XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "__blh") + sizeof(short unsigned int); - XEN_HYPER_MEMBER_OFFSET_INIT(tss_struct_ist, "tss_struct", "ist"); + if (MEMBER_EXISTS("tss_struct", "__blh")) { + XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "__blh") + sizeof(short unsigned int); + } else { + XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "rsp0"); + } XEN_HYPER_MEMBER_OFFSET_INIT(tss_struct_ist, "tss_struct", "ist"); if (symbol_exists("cpu_data")) { xht->cpu_data_address = symbol_value("cpu_data"); } --- a/xen_hyper.c +++ b/xen_hyper.c @@ -1060,8 +1060,8 @@ xen_hyper_get_domains(void) long domain_next_in_list; int i, j; - if (!try_get_symbol_data("dom0", sizeof(void *), &domain)) - get_symbol_data("hardware_domain", sizeof(void *), &domain); + if (!try_get_symbol_data("hardware_domain", sizeof(void *), &domain)) + get_symbol_data("dom0", sizeof(void *), &domain); domain_next_in_list = MEMBER_OFFSET("domain", "next_in_list"); i = 0; @@ -1103,8 +1103,8 @@ xen_hyper_get_domain_next(int mod, ulong if (xhdt->dom0) { *next = xhdt->dom0->domain; } else { - if (!try_get_symbol_data("dom0", sizeof(void *), next)) - get_symbol_data("hardware_domain", sizeof(void *), next); + if (!try_get_symbol_data("hardware_domain", sizeof(void *), next)) + get_symbol_data("dom0", sizeof(void *), next); } return xhdt->domain_struct; break;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor