Hi Emmanuel,
    I am trying to debug the credit scheduler
to solve the many HVM domain instability issues we have found with the credit
scheduler. 
 
    While debugging I notice an odd behavior;
When running on a 2 CPU system, dom0 gets 2 vcpus by default. And even if there
are no other domains running in the system,  the dom0 vcpus are getting
migrated to different pcpus in the load balance. I think it is due to the preemption
happening in the credit scheduler; and it is not necessary and is actually
wasteful to move vcpus when no of vcpus in the system are equal to no of pcpus.
    I would like to know your thinking about
this behavior. Is it an intended in the design?
 
I added this small fix to the scheduler to fix this
behavior. And with it I see the stability of Xen improved. Win2003 boot was
crashing with unhandled MMIO error on xen64 earlier with credit scheduler. I am
not seeing that crash with this small fix anymore. It is quiet possible that
there are more bugs I need to catch for HVM domains in the credit scheduler. And
I would like to know your thoughts for this change.
 
csched_runq_steal(struct csched_pcpu *spc, int cpu, int pri)
{
    struct list_head *iter;
    struct csched_vcpu *speer;
    struct vcpu *vc;
 
    /* If
there are only 1 vcpu in the queue then stealing it from the queue
     * is not going not
help in load balancing.
     */
    if
(spc->runq.next->next == &spc->runq)
           
return NULL;
 
Thanks & Regards,
Nitin
-----------------------------------------------------------------------------------
Open Source Technology Center, Intel Corp