On Tue, 2011-05-10 at 00:06 +0100, Shriram Rajagopalan wrote:
> I was testing xl/xm checkpoint with the latest c/s in the repo, 23300.
> neither xl nor xm seem to work. The error code is 95 (EOPNOTSUPP).
>
> Migration works but not checkpointing. While doing a
> xc_domain_resume,
> the "modify_returncode" phase (for suspend_cancel) fails. Tracing
> through
> the control flow, I found that the hypercall for set_vcpucontext
> (in do_xen_hypercall() from xc_private.c) fails with this error code.
>
> I have tested this with a 64-bit 2.6.39 and 32-bit 2.6.18 pv domU.
> Any help would be great.
Are we still talking about HVM guests?
No! its all PV. There is a 2.6.39-rc1 debian guest and a 2.6.18 standard
xenlinux kernel based debian guest.
And that rings with the pv guests I am using. It makes perfect sense, looking
at that function and especially at the code that returns EOPNOTSUPP (the only
place in the entire file).
else
{
bool_t fail = v->arch.pv_vcpu.ctrlreg[3] != c(ctrlreg[3]);
#ifdef CONFIG_X86_64
fail |= v->arch.pv_vcpu.ctrlreg[1] != c(ctrlreg[1]);
#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]);
fail |= v->arch.pv_vcpu.gdt_ents != c(gdt_ents);
fail |= v->arch.pv_vcpu.ldt_base != c(ldt_base);
fail |= v->arch.pv_vcpu.ldt_ents != c(ldt_ents);
if ( fail )
return -EOPNOTSUPP;
}
This change was introduced by c/s
changeset: 23142:f5e8d152a565
user: Jan Beulich <
jbeulich@xxxxxxxxxx>
date: Tue Apr 05 13:01:25 2011 +0100
x86: split struct vcpu
I think I am missing something really obvious in this piece of code. The
xc_domain_resume code tries to modify the return value of shutdown hypercall
(i.e eax register is set to 1) and this code doesnt seem to check those registers.