[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-devel] Re: A credit scheduler issue



>Although you may have spotted a performance bug that should be looked 
>into (if this migration happens significantly frequently), it *should 
>not* be a correctness bug! I don't think the fixes for the 
>HVM-and-credit-sched bugs lie in the credit scheduler itself. :-)
>

Hi Keir,
we just found the root cause of IA32 HVM guests can not run on 64 bit
host with the default credit scheduler.
credit scheduler migrates HVM vcpu from logical precessor from time to
time, but on x86_64 hypervisor, in __context_switch, we have 

    if ( !is_idle_vcpu(p) )
    {
        memcpy(&p->arch.guest_context.user_regs,
               stack_regs,
               CTXT_SWITCH_STACK_BYTES);
        unlazy_fpu(p);
        p->arch.ctxt_switch_from(p);
    }

    if ( !is_idle_vcpu(n) )
    {
        memcpy(stack_regs,
               &n->arch.guest_context.user_regs,
               CTXT_SWITCH_STACK_BYTES);

And CTXT_SWITCH_STACK_BYTES is defined as (offsetof(struct
cpu_user_regs, es)).

The definition of CTXT_SWITCH_STACK_BYTES on x86_64 is OK for 64 bit
guests, no matter para guests or HVM guests, but for 32 bit HVM guests,
since segments registers are skipped, it's buggy.

I'd perfer to define CTXT_SWITCH_STACK_BYTES to sizeof(struct
cpu_user_regs).

How about your opinion?

Thanks

-Xin 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.