[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv1] evtchn: don't reuse ports that are still "busy"
>>> On 01.12.15 at 15:04, <david.vrabel@xxxxxxxxxx> wrote: > On 01/12/15 12:49, Jan Beulich wrote: >>>>> On 30.11.15 at 18:59, <david.vrabel@xxxxxxxxxx> wrote: >>> --- a/xen/common/event_channel.c >>> +++ b/xen/common/event_channel.c >>> @@ -170,7 +170,8 @@ static int get_free_port(struct domain *d) >>> { >>> if ( port > d->max_evtchn_port ) >>> return -ENOSPC; >>> - if ( evtchn_from_port(d, port)->state == ECS_FREE ) >>> + chn = evtchn_from_port(d, port); >>> + if ( chn->state == ECS_FREE && !evtchn_port_is_busy(d, chn) ) >> >> Despite the reasonable arguments you give this looks very wrong: >> How can a free port still be busy? Could we have a new ECS_* and >> require guests to notify the hypervisor when they unlinked an >> already closed port (while "close" would transition busy ports into >> that new state)? > > I would look at it as: The channel object is free, but the corresponding > ABI specific port object is busy. So it doesn't seem unreasonable to > check the state of both objects. While I think they're really tied together (namely due to how get_free_port() works), yes - that's a way to view it, taking the tying together as an implementation detail. However, in that case it seems wrong to pass the channel pointer to the is_busy() hook. > What you suggest (adding an additional call) would break all existing > guests that would not make the unlinked call, leaving the event channel > in a state where it cannot be reused. True. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |