[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCHv3 5/6] evtchn: remove the locking when unmasking an event channel



>>> On 17.06.15 at 14:03, <david.vrabel@xxxxxxxxxx> wrote:
> --- a/xen/common/event_channel.c
> +++ b/xen/common/event_channel.c
> @@ -978,8 +978,6 @@ int evtchn_unmask(unsigned int port)
>      struct domain *d = current->domain;
>      struct evtchn *evtchn;
>  
> -    ASSERT(spin_is_locked(&d->event_lock));
> -
>      if ( unlikely(!port_is_valid(d, port)) )
>          return -EINVAL;
>  
> @@ -1146,9 +1144,7 @@ long do_event_channel_op(int cmd, 
> XEN_GUEST_HANDLE_PARAM(void) arg)
>          struct evtchn_unmask unmask;
>          if ( copy_from_guest(&unmask, arg, 1) != 0 )
>              return -EFAULT;
> -        spin_lock(&current->domain->event_lock);
>          rc = evtchn_unmask(unmask.port);
> -        spin_unlock(&current->domain->event_lock);

And, looking particularly at evtchn_fifo_unmask() (and its descendant
evtchn_fifo_set_pending()), you get away without acquiring the port
lock in or around evtchn_port_unmask()? If indeed so, this one would
again be independent on 1, 2, and 4, i.e. could go in together with 3.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.