[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 03/10] xen/arm: vpl011: Enable pl011 emulation for a guest domain in Xen
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: Provide a knob in libxl to enable/disable pl011 emulation Signed-off-by: Bhupinder Thakur <bhupinder.thakur@xxxxxxxxxx> --- xen/arch/arm/domain.c | 11 +++++++++++ xen/common/domctl.c | 3 +++ xen/include/public/domctl.h | 2 ++ xen/include/xen/sched.h | 4 ++++ 4 files changed, 20 insertions(+) diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c index 7e43691..8e383d0 100644 --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -36,6 +36,9 @@ #include <asm/platform.h> #include "vtimer.h" #include "vuart.h" +#ifdef CONFIG_VPL011_CONSOLE +#include <xen/vpl011.h> +#endif DEFINE_PER_CPU(struct vcpu *, curr_vcpu); @@ -626,6 +629,11 @@ 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_vconsole ) +#ifdef CONFIG_VPL011_CONSOLE + if ( (rc = domain_vpl011_init(d, config)) != 0 ) +#endif + goto fail; update_domain_wallclock_time(d); /* @@ -660,6 +668,9 @@ fail: void arch_domain_destroy(struct domain *d) { +#ifdef CONFIG_VPL011_CONSOLE + domain_vpl011_deinit(d); +#endif /* 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 12cf4a9..3385479 100644 --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -506,6 +506,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_VCONSOLE_enable | XEN_DOMCTL_CDF_xs_domain)) ) break; @@ -550,6 +551,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_VCONSOLE_enable ) + domcr_flags |= DOMCRF_vconsole; 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 85cbb7c..1fca180 100644 --- a/xen/include/public/domctl.h +++ b/xen/include/public/domctl.h @@ -66,6 +66,8 @@ struct xen_domctl_createdomain { /* Is this a xenstore domain? */ #define _XEN_DOMCTL_CDF_xs_domain 5 #define XEN_DOMCTL_CDF_xs_domain (1U<<_XEN_DOMCTL_CDF_xs_domain) +#define _XEN_DOMCTL_VCONSOLE_enable 6 +#define XEN_DOMCTL_VCONSOLE_enable (1U<<_XEN_DOMCTL_VCONSOLE_enable) uint32_t flags; struct xen_arch_domainconfig config; }; diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 063efe6..4efdc48 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 6 #define DOMCRF_xs_domain (1U<<_DOMCRF_xs_domain) + /* DOMCRF_vconsole: enable virtual console emulation. Used for aarach64. */ +#define _DOMCRF_vconsole 7 +#define DOMCRF_vconsole (1U<<_DOMCRF_vconsole) + /* * 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 |