[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 25, 2011 at 12:15 AM, Jan Beulich <JBeulich@xxxxxxxxxx> wrote: >>>> On 24.05.11 at 22:09, Keir Fraser <keir.xen@xxxxxxxxx> wrote: >> It depends on c/s 23142, and I think it isn't even needed in the absence of >> that other patch. > > Correct - no checking on the context was done up to 23142, so as > long as that one doesn't get backported the fix to it obviously doesn't > need to be either. > > It's odd in the first place that you're asking, as it sort of implies you've > been seeing -EOPNOTSUPP problems on 4.1, which you'd need to > explain/investigate independently of the problem addressed here. You are right. I lost site of my original problem which is xl save -c not working with 4.1. I did a quick get_vcpucontext and set_vcpucontext test with a HVM domain and that seems to work without any issues. So I think the root cause of the -c option not working is something else. AP > Jan > >> -- Keir >> >> On 24/05/2011 20:24, "AP Xen" <apxeng@xxxxxxxxx> wrote: >> >>> Is is possible for this (23348:3e8e1800d472) to be included in Xen 4.1.1? >>> >>> Thanks, >>> AP >>> >>> On Mon, May 16, 2011 at 6:48 PM, Shriram Rajagopalan <rshriram@xxxxxxxxx> >>> wrote: >>>> On Mon, May 16, 2011 at 8:02 AM, Jan Beulich <JBeulich@xxxxxxxxxx> wrote: >>>>> >>>>>>>> On 15.05.11 at 00:15, Shriram Rajagopalan <rshriram@xxxxxxxxx> wrote: >>>>>> This one works only for 64-bit domUs. 32bit domU (on 64bit dom0) fails >>>>>> with >>>>>> usual EOPNOTSUPP. >>>>> >>>>> Next (hopefully final) try below. >>>>> >>>>> Jan >>>>> >>>>> --- a/xen/arch/x86/domain.c >>>>> +++ b/xen/arch/x86/domain.c >>>>> @@ -856,6 +856,15 @@ int arch_set_info_guest( >>>>> goto out; >>>>> } >>>>> >>>>> + init_int80_direct_trap(v); >>>>> + >>>>> + /* IOPL privileges are virtualised. */ >>>>> + v->arch.pv_vcpu.iopl = (v->arch.user_regs.eflags >> 12) & 3; >>>>> + v->arch.user_regs.eflags &= ~X86_EFLAGS_IOPL; >>>>> + >>>>> + /* Ensure real hardware interrupts are enabled. */ >>>>> + v->arch.user_regs.eflags |= X86_EFLAGS_IF; >>>>> + >>>>> if ( !v->is_initialised ) >>>>> { >>>>> v->arch.pv_vcpu.ldt_base = c(ldt_base); >>>>> @@ -863,11 +872,27 @@ int arch_set_info_guest( >>>>> } >>>>> else >>>>> { >>>>> - bool_t fail = v->arch.pv_vcpu.ctrlreg[3] != c(ctrlreg[3]); >>>>> + unsigned long pfn = pagetable_get_pfn(v->arch.guest_table); >>>>> + bool_t fail; >>>>> >>>>> + if ( !compat ) >>>>> + { >>>>> + fail = xen_pfn_to_cr3(pfn) != c.nat->ctrlreg[3]; >>>>> #ifdef CONFIG_X86_64 >>>>> - fail |= v->arch.pv_vcpu.ctrlreg[1] != c(ctrlreg[1]); >>>>> + if ( pagetable_is_null(v->arch.guest_table_user) ) >>>>> + fail |= c.nat->ctrlreg[1] || !(flags & VGCF_in_kernel); >>>>> + else >>>>> + { >>>>> + pfn = pagetable_get_pfn(v->arch.guest_table_user); >>>>> + fail |= xen_pfn_to_cr3(pfn) != c.nat->ctrlreg[1]; >>>>> + } >>>>> + } else { >>>>> + l4_pgentry_t *l4tab = __va(pfn_to_paddr(pfn)); >>>>> + >>>>> + pfn = l4e_get_pfn(*l4tab); >>>>> + fail = compat_pfn_to_cr3(pfn) != c.cmp->ctrlreg[3]; >>>>> #endif >>>>> + } >>>>> >>>>> for ( i = 0; i < ARRAY_SIZE(v->arch.pv_vcpu.gdt_frames); ++i ) >>>>> fail |= v->arch.pv_vcpu.gdt_frames[i] != c(gdt_frames[i]); >>>>> @@ -907,15 +932,6 @@ int arch_set_info_guest( >>>>> v->arch.pv_vcpu.ctrlreg[0] &= X86_CR0_TS; >>>>> v->arch.pv_vcpu.ctrlreg[0] |= read_cr0() & ~X86_CR0_TS; >>>>> >>>>> - init_int80_direct_trap(v); >>>>> - >>>>> - /* IOPL privileges are virtualised. */ >>>>> - v->arch.pv_vcpu.iopl = (v->arch.user_regs.eflags >> 12) & 3; >>>>> - v->arch.user_regs.eflags &= ~X86_EFLAGS_IOPL; >>>>> - >>>>> - /* Ensure real hardware interrupts are enabled. */ >>>>> - v->arch.user_regs.eflags |= X86_EFLAGS_IF; >>>>> - >>>>> cr4 = v->arch.pv_vcpu.ctrlreg[4]; >>>>> v->arch.pv_vcpu.ctrlreg[4] = cr4 ? pv_guest_cr4_fixup(v, cr4) : >>>>> real_cr4_to_pv_guest_cr4(mmu_cr4_features); >>>>> >>>>> >>>> ok. this one works :). I ve tested with remus too :P. Can you please please >>>> spin out a patch to be pushed into the repo ? thanks for the help. >>>> >>>> shriram >>>> >>>> _______________________________________________ >>>> Xen-devel mailing list >>>> Xen-devel@xxxxxxxxxxxxxxxxxxx >>>> http://lists.xensource.com/xen-devel >>>> >>>> > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |