On 11.04.2024 17:24, Matthew Barnes wrote: > --- a/xen/common/domctl.c > +++ b/xen/common/domctl.c > @@ -73,6 +73,7 @@ void getdomaininfo(struct domain *d, struct > xen_domctl_getdomaininfo *info) > > info->domain = d->domain_id; > info->max_vcpu_id = XEN_INVALID_MAX_VCPU_ID; > + info->highest_evtchn_port = read_atomic(&d->valid_evtchns); > > /* > * - domain is marked as blocked only if all its vcpus are blocked > --- a/xen/include/public/domctl.h > +++ b/xen/include/public/domctl.h > @@ -145,7 +145,8 @@ struct xen_domctl_getdomaininfo { > xen_domain_handle_t handle; > uint32_t cpupool; > uint8_t gpaddr_bits; /* Guest physical address space size. */ > - uint8_t pad2[7]; > + uint8_t pad2[3]; > + evtchn_port_t highest_evtchn_port; /* Highest allocated event channel > port. Used for enumeration */
While, as per my reply to patch 2, I don't think this is a viable route, I'd still like to mention that the name of the new field is wrong, leading to an off-by-1 in the consumer in patch 2. d->valid_evtchns is a count, not the "maximum valid" port number. Jan