|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/2] adjust special domain creation (and call it earlier on x86)
>>> On 31.05.19 at 17:32, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 31/05/2019 02:35, Jan Beulich wrote:
>> @@ -516,6 +521,36 @@ struct domain *domain_create(domid_t dom
>> return ERR_PTR(err);
>> }
>>
>> +void __init setup_special_domains(void)
>> +{
>> + /*
>> + * Initialise our DOMID_XEN domain.
>> + * Any Xen-heap pages that we will allow to be mapped will have
>> + * their domain field set to dom_xen.
>> + * Hidden PCI devices will also be associated with this domain
>> + * (but be [partly] controlled by Dom0 nevertheless).
>> + */
>> + dom_xen = domain_create(DOMID_XEN, NULL, false);
>> + BUG_ON(IS_ERR(dom_xen));
>
> I know this is copying code like-for-like, but this error handling is
> terrible in practice.
>
> Even just:
>
> if ( IS_ERR(dom_xen) )
> panic("Failed to create dom_xen: %d\n", PTR_ERR(dom_xen));
>
> would be an improvement.
I'll be happy to do this; I didn't just because it doesn't really belong
here.
>> +#ifdef CONFIG_HAS_PCI
>> + INIT_LIST_HEAD(&dom_xen->arch.pdev_list);
>> +#endif
>
> The position of this identifies that we've got obviously got bugs
> (perhaps latent) elsewhere, seeing as other special domains don't get
> working constructs such as list_empty().
>
> In the code which currently exists, I can't spot it ever being touched
> for ARM, but it is constructed for all non-special x86 guests at the top
> of arch_domain_create().
>
> I think the best option, given the #ifdef here, is to reposition the
> pdev fields into struct domain, rather than arch_domain, and have this
> code fragment near the top of domain_create() where special domains will
> all be covered.
Except that if I do this, then not by special casing special domains.
"Normal" domains want this too - the initialization could then be
dropped (moved there) from x86-specific code. But this will want to
be a separate patch then.
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 |