struct vcpu *__init alloc_dom0_vcpu0(void)
{
- dom0->vcpu = xmalloc_array(struct vcpu *, opt_dom0_max_vcpus);
+ if ( opt_dom0_max_vcpus == 0 )
+ opt_dom0_max_vcpus = num_online_cpus();
+ if ( opt_dom0_max_vcpus > MAX_VIRT_CPUS )
+ opt_dom0_max_vcpus = MAX_VIRT_CPUS;
+
+ dom0->vcpu = xzalloc_array(struct vcpu *, opt_dom0_max_vcpus);
if ( !dom0->vcpu )
- {
- printk("failed to alloc dom0->vccpu\n");
return NULL;
- }
- memset(dom0->vcpu, 0, opt_dom0_max_vcpus * sizeof(*dom0->vcpu));
dom0->max_vcpus = opt_dom0_max_vcpus;
return alloc_vcpu(dom0, 0, 0);