Revert alloc_idle_vcpu() to support multiple idle domains where max

vcpus is less than max pcpus (e.g., can happen on i386).

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
This commit is contained in:
Keir Fraser committed 2009-08-10 13:51:28 +01:00
1 parent 4d60f70295
commit c89a659a35
1 file changed
+13 -2
+13 -2
View File
@@ -182,8 +182,19 @@ struct vcpu *alloc_vcpu(
struct vcpu *alloc_idle_vcpu(unsigned int cpu_id)
{
return idle_vcpu[cpu_id] ?: alloc_vcpu(idle_vcpu[0]->domain,
cpu_id, cpu_id);
struct domain *d;
struct vcpu *v;
unsigned int vcpu_id = cpu_id % MAX_VIRT_CPUS;
if ( (v = idle_vcpu[cpu_id]) != NULL )
return v;
d = (vcpu_id == 0) ?
domain_create(IDLE_DOMAIN_ID, 0, 0) :
idle_vcpu[cpu_id - vcpu_id]->domain;
BUG_ON(d == NULL);
return alloc_vcpu(d, vcpu_id, cpu_id);
}
static unsigned int extra_dom0_irqs, extra_domU_irqs = 8;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.