[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: xl/xm save -c fails - set_vcpucontext EOPNOTSUPP (was Re: [Xen-devel] xl save -c issues with Windows 7 Ultimate)
On Wed, May 11, 2011 at 1:37 PM, Shriram Rajagopalan <rshriram@xxxxxxxxx> wrote:
Looking at arch_get_info_guest in domctl.c , I see that cr3 is first copied verbatim from the vcpu and then modified in the if-else block if ( !is_pv_32on64_domain(v->domain) ) { c.nat->ctrlreg[3] = xen_pfn_to_cr3( pagetable_get_pfn(v->arch.guest_table)); #ifdef __x86_64__ c.nat->ctrlreg[1] = pagetable_is_null(v->arch.guest_table_user) ? 0 : xen_pfn_to_cr3(pagetable_get_pfn(v->arch.guest_table_user)); #endif .... } else { l4_pgentry_t *l4e = __va(pagetable_get_paddr(v->arch.guest_table)); c.cmp->ctrlreg[3] = compat_pfn_to_cr3(l4e_get_pfn(*l4e)); } This seems to account for the difference in the values that libxc supplies (obtained from get context) and the one validated against by arch_set_info_guest arch_set_context validates cr3 and cr1 against the wrong values (the vcpu.cr[1/3]) while it should be validated against the value that results from the operation done in the if-else loop in arch_get_info_guest I have verified this too, with both a 32bit domU and 64bit domU. 64-bit PV domU (2.6.39..) -------------------------------------- get_vcpu_context(): (debug output from arch_get_info_guest) (XEN) domctl.c:1707:d0 copying cr1 00000000 (XEN) domctl.c:1707:d0 copying cr3 827bd5000 (XEN) domctl.c:1743:d0 not pv_32on64, outgoing cr3 42b85b000, cur cr3 827bd5000 (XEN) domctl.c:1746:d0 not pv_32on64, outgoing cr1 42b85c000, cur cr1 00000000 set_vcpu_context(): (debug output from arch_set_info_guest) (XEN) domain.c:893:d0 incoming cr3 42b85b000, cur cr3 827bd5000, fail = 1 (XEN) domain.c:901:d0 incoming cr1 42b85c000, cur cr1 00000000, !(flags & VGCF_in_kernel)=0,fail=1 32-bit PV domU (2.6.18) ---------------------------------- get_vcpu_context() (XEN) domctl.c:1707:d0 copying cr1 00000000 (XEN) domctl.c:1707:d0 copying cr3 2960e008 (XEN) domctl.c:1758:d0 is pv_32on64, outgoing cr3 4f0ac004, cur cr3 2960e008 set_vcpu_context() (XEN) domain.c:893:d0 incoming cr3 4f0ac004, cur cr3 2960e008, fail = 1 shriram
_______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |