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
|