|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv3 2/6] evtchn: defer freeing struct evtchn's until evtchn_destroy_final()
>>> On 18.06.15 at 12:40, <david.vrabel@xxxxxxxxxx> wrote:
> On 18/06/15 11:36, Jan Beulich wrote:
>>>>> On 17.06.15 at 14:02, <david.vrabel@xxxxxxxxxx> wrote:
>>> --- a/xen/common/event_channel.c
>>> +++ b/xen/common/event_channel.c
>>> @@ -1175,22 +1175,6 @@ int alloc_unbound_xen_event_channel(
>>>
>>> void free_xen_event_channel(struct domain *d, int port)
>>> {
>>> - struct evtchn *chn;
>>> -
>>> - spin_lock(&d->event_lock);
>>> -
>>> - if ( unlikely(d->is_dying) )
>>> - {
>>> - spin_unlock(&d->event_lock);
>>> - return;
>>> - }
>>> -
>>> - BUG_ON(!port_is_valid(d, port));
>
> I can keep this one.
>
>>> - chn = evtchn_from_port(d, port);
>>> - BUG_ON(!consumer_is_xen(chn));
>>
>> At least in debug builds I think these would better be retained.
>
> But this one has to go because it will always trip when
> free_xen_event_channel() is called after evtchn_destroy() (which will
> have cleared xen_consumer).
Then why not
BUG_ON(!consumer_is_xen(chn) && !d->is_dying);
or keep the d->is_dying check in place? I can see why accelerating
notify_via_xen_event_channel() is useful, but
free_xen_event_channel()?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |