[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 03/10 v2] xen/arm: vpl011: Enable pl011 emulation for a guest domain in Xen
On Fri, 28 Apr 2017, Bhupinder Thakur wrote: > Vpl011 emulation is enabled for a guest domain in Xen only when it is > enabled through an option in libxl provided by the user through > guest configuration. > > The pl011 enable/disable knob in libxl is introduced in the following > patch: > > xen/arm: vpl011: Add support for vuart in libxl > > Signed-off-by: Bhupinder Thakur <bhupinder.thakur@xxxxxxxxxx> > --- > xen/arch/arm/domain.c | 6 ++++++ > xen/common/domctl.c | 3 +++ > xen/include/public/domctl.h | 2 ++ > xen/include/xen/sched.h | 4 ++++ > 4 files changed, 15 insertions(+) > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > index 76310ed..23baa81 100644 > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -36,6 +36,7 @@ > #include <asm/platform.h> > #include "vtimer.h" > #include "vuart.h" > +#include <xen/vpl011.h> > > DEFINE_PER_CPU(struct vcpu *, curr_vcpu); > > @@ -631,6 +632,9 @@ int arch_domain_create(struct domain *d, unsigned int > domcr_flags, > if ( (rc = domain_vtimer_init(d, config)) != 0 ) > goto fail; > > + if ( domcr_flags & DOMCRF_vuart ) > + if ( (rc = domain_vpl011_init(d, config)) != 0 ) > + goto fail; > update_domain_wallclock_time(d); > > /* > @@ -665,6 +669,8 @@ fail: > > void arch_domain_destroy(struct domain *d) > { > + domain_vpl011_deinit(d); > + > /* IOMMU page table is shared with P2M, always call > * iommu_domain_destroy() before p2m_teardown(). > */ > diff --git a/xen/common/domctl.c b/xen/common/domctl.c > index 951a5dc..902dd71 100644 > --- a/xen/common/domctl.c > +++ b/xen/common/domctl.c > @@ -501,6 +501,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) > u_domctl) > | XEN_DOMCTL_CDF_hap > | XEN_DOMCTL_CDF_s3_integrity > | XEN_DOMCTL_CDF_oos_off > + | XEN_DOMCTL_VUART_enable > | XEN_DOMCTL_CDF_xs_domain)) ) Please place XEN_DOMCTL_VUART_enable at last item. Aside from this: Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > break; > > @@ -539,6 +540,8 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) > u_domctl) > domcr_flags |= DOMCRF_oos_off; > if ( op->u.createdomain.flags & XEN_DOMCTL_CDF_xs_domain ) > domcr_flags |= DOMCRF_xs_domain; > + if ( op->u.createdomain.flags & XEN_DOMCTL_VUART_enable ) > + domcr_flags |= DOMCRF_vuart; > > d = domain_create(dom, domcr_flags, op->u.createdomain.ssidref, > &op->u.createdomain.config); > diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h > index 8bee0c3..c307013 100644 > --- a/xen/include/public/domctl.h > +++ b/xen/include/public/domctl.h > @@ -63,6 +63,8 @@ struct xen_domctl_createdomain { > /* Is this a xenstore domain? */ > #define _XEN_DOMCTL_CDF_xs_domain 4 > #define XEN_DOMCTL_CDF_xs_domain (1U<<_XEN_DOMCTL_CDF_xs_domain) > +#define _XEN_DOMCTL_VUART_enable 6 > +#define XEN_DOMCTL_VUART_enable (1U<<_XEN_DOMCTL_VUART_enable) > uint32_t flags; > struct xen_arch_domainconfig config; > }; > diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h > index 1127ca9..ee7dc7a 100644 > --- a/xen/include/xen/sched.h > +++ b/xen/include/xen/sched.h > @@ -555,6 +555,10 @@ struct domain *domain_create(domid_t domid, unsigned int > domcr_flags, > #define _DOMCRF_xs_domain 5 > #define DOMCRF_xs_domain (1U<<_DOMCRF_xs_domain) > > + /* DOMCRF_vuart: enable virtual uart emulation. Used for Aarch64. */ > +#define _DOMCRF_vuart 7 > +#define DOMCRF_vuart (1U<<_DOMCRF_vuart) > + > /* > * rcu_lock_domain_by_id() is more efficient than get_domain_by_id(). > * This is the preferred function if the returned domain reference > -- > 2.7.4 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |