if ( rc )
return rc;
- paging_vcpu_init(v);
+ if ( !is_idle_domain(d) )
+ {
+ paging_vcpu_init(v);
- if ( (rc = vcpu_init_fpu(v)) != 0 )
- return rc;
+ if ( (rc = vcpu_init_fpu(v)) != 0 )
+ return rc;
- vmce_init_vcpu(v);
+ vmce_init_vcpu(v);
+ }
if ( has_hvm_container_domain(d) )
{
HYPERVISOR_COMPAT_VIRT_START(d) =
is_pv_domain(d) ? __HYPERVISOR_COMPAT_VIRT_START : ~0u;
- if ( (rc = paging_domain_init(d, domcr_flags)) != 0 )
- goto fail;
- paging_initialised = 1;
-
if ( !is_idle_domain(d) )
{
+ if ( (rc = paging_domain_init(d, domcr_flags)) != 0 )
+ goto fail;
+ paging_initialised = 1;
+
d->arch.cpuids = xmalloc_array(cpuid_input_t, MAX_CPUID_INPUT);
rc = -ENOMEM;
if ( d->arch.cpuids == NULL )
/* Initialize FPU's context save area */
int vcpu_init_fpu(struct vcpu *v)
{
- int rc = 0;
+ int rc;
- /* Idle domain doesn't have FPU state allocated */
- if ( is_idle_vcpu(v) )
- goto done;
-
if ( (rc = xstate_alloc_save_area(v)) != 0 )
return rc;
{
v->arch.fpu_ctxt = _xzalloc(sizeof(v->arch.xsave_area->fpu_sse), 16);
if ( !v->arch.fpu_ctxt )
- {
rc = -ENOMEM;
- goto done;
- }
}
-done:
return rc;
}