[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 5/7] x86/domain: Optimise the order of actions in arch_domain_create()
>>> On 15.03.18 at 21:15, <andrew.cooper3@xxxxxxxxxx> wrote: > On 09/03/18 16:54, Jan Beulich wrote: >>>>> On 09.03.18 at 14:18, <andrew.cooper3@xxxxxxxxxx> wrote: >>> --- a/xen/arch/x86/domain.c >>> +++ b/xen/arch/x86/domain.c >>> @@ -430,20 +430,37 @@ int arch_domain_create(struct domain *d, unsigned int >>> domcr_flags, >>> struct xen_arch_domainconfig *config) >>> { >>> bool paging_initialised = false; >>> + uint32_t emflags; >>> int rc; >>> >>> - if ( config == NULL && !is_idle_domain(d) ) >>> - return -EINVAL; >>> - >>> - d->arch.s3_integrity = domcr_flags & XEN_DOMCTL_CDF_s3_integrity; >>> - >>> INIT_LIST_HEAD(&d->arch.pdev_list); >>> >>> d->arch.relmem = RELMEM_not_started; >>> INIT_PAGE_LIST_HEAD(&d->arch.relmem_list); >>> >>> - if ( d->domain_id && !is_idle_domain(d) && >>> - cpu_has_amd_erratum(&boot_cpu_data, AMD_ERRATUM_121) ) >>> + spin_lock_init(&d->arch.e820_lock); >>> + spin_lock_init(&d->arch.vtsc_lock); >>> + >>> + /* Minimal initialisation for the idle domain. */ >>> + if ( unlikely(is_idle_domain(d)) ) >>> + { >>> + static const struct arch_csw idle_csw = { >>> + .from = paravirt_ctxt_switch_from, >>> + .to = paravirt_ctxt_switch_to, >>> + .tail = continue_idle_domain, >>> + }; >>> + >>> + d->arch.ctxt_switch = &idle_csw; >>> + >>> + d->arch.cpuid = ZERO_BLOCK_PTR; /* Catch stray misuses. */ >>> + d->arch.msr = ZERO_BLOCK_PTR; >>> + >>> + return 0; >>> + } >>> + else if ( !config ) >> May I suggest to avoid the "else" here? > > I've gone with > > ... > return 0; > } > > if ( !config ) > { > /* Only IDLE is allowed with no config. */ > ASSERT_UNREACHABLE(); > return -EINVAL; > } > ... > > For runtime safety and debug sanity. Ah, yes, that's even better. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |