|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 2/2] allow hardware domain != dom0
>>> On 14.04.14 at 23:23, <dgdegra@xxxxxxxxxxxxx> wrote:
Much better!
> --- a/docs/misc/xen-command-line.markdown
> +++ b/docs/misc/xen-command-line.markdown
> @@ -590,6 +590,16 @@ Paging (HAP).
> Flag to enable 2 MB host page table support for Hardware Assisted
> Paging (HAP).
>
> +### hardware\_dom
> +> `= <domid>`
> +
> +> Default: `0`
> +
> +Enable late hardware domain creation using the specified domain ID. This is
> +intended to be used when domain 0 is a stub domain which builds a
> disaggregated
> +system including a hardware domain with the specified domain ID. This
> option is
> +supported only when compiled with CONFIG\_XSM on x86.
I think we ought to name the build option (XSM_ENABLE=y) here
rather than the internally used manifest constant to propagate the
requested setting.
> +static int late_hwdom_init(struct domain *d)
> +{
> +#ifdef CONFIG_LATE_HWDOM
> + struct domain *dom0;
> + int rv;
> +
> + if ( d != hardware_domain || d->domain_id == 0 )
> + return 0;
> +
> + rv = xsm_init_hardware_domain(XSM_HOOK, d);
> + if ( rv )
> + return rv;
> +
> + printk("Initialising hardware domain %d\n", hardware_domid);
> +
> + dom0 = rcu_lock_domain_by_id(0);
> + ASSERT(dom0 != NULL);
> + /*
> + * Hardware resource ranges for domain 0 have been set up from
> + * various sources intended to restrict the hardware domain's
> + * access. Apply these ranges to the actual hardware domain.
> + *
> + * Because the lists are being swapped, a side effect of this
> + * operation is that Domain 0's rangesets are cleared. Since
> + * domain 0 should not be accessing the hardware when it constructs
> + * a hardware domain, this should not be a problem. Both lists
> + * may be modified after this hypercall returns if a more complex
> + * device model is desired.
> + *
> + * Since late hardware domain initialization is only supported on
> + * x86, the reference to arch.ioport_caps does not need its own
> + * preprocessor conditional.
This is only "for now" - please either say so, or even better drop this
part of the comment and add the conditional regardless of it being
redundant right now.
> +void rangeset_swap(struct rangeset *a, struct rangeset *b)
> +{
> + struct list_head tmp;
> + if (&a < &b)
Coding style. Also I pretty certain you don't want to compare the
addresses of the pointers here, but the pointer themselves.
> @@ -73,4 +73,7 @@ void rangeset_printk(
> void rangeset_domain_printk(
> struct domain *d);
>
> +/* swap contents */
> +void rangeset_swap(struct rangeset *a, struct rangeset *b);
> +
Please put this above the printing ones.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |