Re: [Xen-devel] [PATCH v2 04/12] xen/evtchn: Pass max_evtchn_port into evtchn_init()
Hi Andrew, On 08/13/2018 11:01 AM, Andrew Cooper wrote: ... 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 For the Arm bits: Acked-by: Julien Grall Cheers, --- CC: Jan Beulich CC: Stefano Stabellini CC: Julien Grall CC: Wei Liu --- 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(>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 */ -- Julien Grall ___ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Re: [Xen-devel] [PATCH v2 04/12] xen/evtchn: Pass max_evtchn_port into evtchn_init()
>>> On 13.08.18 at 12:01, wrote: > ... 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 Reviewed-by: Jan Beulich ___ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Re: [Xen-devel] [PATCH v2 04/12] xen/evtchn: Pass max_evtchn_port into evtchn_init()
On Mon, Aug 13, 2018 at 11:01:01AM +0100, Andrew Cooper wrote: > ... 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 Reviewed-by: Roger Pau Monné ___ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
[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 --- CC: Jan Beulich CC: Stefano Stabellini CC: Julien Grall CC: Wei Liu --- 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(>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@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel