[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 04/12] xen/evtchn: Pass max_evtchn_port into evtchn_init()
... rather than setting it up once domain_create() has completed. This involves constructing a default value for dom0. No practical change in functionality. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Julien Grall <julien.grall@xxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> --- xen/arch/arm/setup.c | 4 +++- xen/arch/x86/setup.c | 1 + xen/common/domain.c | 2 +- xen/common/domctl.c | 3 --- xen/common/event_channel.c | 4 ++-- xen/include/xen/sched.h | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index 7d40a84..45f3841 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -691,7 +691,9 @@ void __init start_xen(unsigned long boot_phys_offset, const char *cmdline; struct bootmodule *xen_bootmodule; struct domain *dom0; - struct xen_domctl_createdomain dom0_cfg = {}; + struct xen_domctl_createdomain dom0_cfg = { + .max_evtchn_port = -1, + }; dcache_line_bytes = read_dcache_line_bytes(); diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 8301de8..015099f 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -681,6 +681,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) }; struct xen_domctl_createdomain dom0_cfg = { .flags = XEN_DOMCTL_CDF_s3_integrity, + .max_evtchn_port = -1, }; /* Critical region without IDT or TSS. Any fault is deadly! */ diff --git a/xen/common/domain.c b/xen/common/domain.c index 749722b..171d25e 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -362,7 +362,7 @@ struct domain *domain_create(domid_t domid, radix_tree_init(&d->pirq_tree); - if ( (err = evtchn_init(d)) != 0 ) + if ( (err = evtchn_init(d, config->max_evtchn_port)) != 0 ) goto fail; init_status |= INIT_evtchn; diff --git a/xen/common/domctl.c b/xen/common/domctl.c index 3a68fc9..0ef554a 100644 --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -540,9 +540,6 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) break; } - d->max_evtchn_port = min_t(unsigned int, - op->u.createdomain.max_evtchn_port, INT_MAX); - ret = 0; op->domain = d->domain_id; copyback = 1; diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index c620465..41cbbae 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -1284,10 +1284,10 @@ void evtchn_check_pollers(struct domain *d, unsigned int port) } } -int evtchn_init(struct domain *d) +int evtchn_init(struct domain *d, unsigned int max_port) { evtchn_2l_init(d); - d->max_evtchn_port = INT_MAX; + d->max_evtchn_port = min_t(unsigned int, max_port, INT_MAX); d->evtchn = alloc_evtchn_bucket(d, 0); if ( !d->evtchn ) diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 3c35473..51ceebe 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -134,7 +134,7 @@ struct evtchn #endif } __attribute__((aligned(64))); -int evtchn_init(struct domain *d); /* from domain_create */ +int evtchn_init(struct domain *d, unsigned int max_port); void evtchn_destroy(struct domain *d); /* from domain_kill */ void evtchn_destroy_final(struct domain *d); /* from complete_domain_destroy */ -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |