From: Wei Liu Date: Fri, 19 Oct 2018 14:28:34 +0000 (+0100) Subject: x86: connect guest creation with CONFIG_PV X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~3119 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ef72c93df9a8775faa5006516fbcc375dcb14a5d;p=xen.git x86: connect guest creation with CONFIG_PV This is a bit more complicated than the HVM case because system domains have PV guest type. Leave them like that. Signed-off-by: Wei Liu Reviewed-by: Andrew Cooper --- diff --git a/xen/common/domain.c b/xen/common/domain.c index 65151e2ac4..b8d4848970 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -322,17 +322,36 @@ struct domain *domain_create(domid_t domid, } /* Sort out our idea of is_{pv,hvm}_domain(). */ - if ( config && (config->flags & XEN_DOMCTL_CDF_hvm_guest) ) + if ( config ) { + if ( config->flags & XEN_DOMCTL_CDF_hvm_guest ) + { #ifdef CONFIG_HVM - d->guest_type = guest_type_hvm; + d->guest_type = guest_type_hvm; #else - err = -EINVAL; - goto fail; + err = -EINVAL; + goto fail; #endif + } + else + { +#ifdef CONFIG_PV + d->guest_type = guest_type_pv; +#else + err = -EINVAL; + goto fail; +#endif + } } else + { + /* + * At least the idle domain should be treated as PV domain + * because it uses PV context switch functions. To err on the + * safe side, leave all system domains to be guest_type_pv. + */ d->guest_type = guest_type_pv; + } TRACE_1D(TRC_DOM0_DOM_ADD, d->domain_id);