[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5 2/2] xen/evtchn: rework per event channel lock
On 09.11.2020 14:16, Jürgen Groß wrote: > On 09.11.20 12:58, Jan Beulich wrote: >> On 09.11.2020 07:41, Juergen Gross wrote: >>> --- a/xen/arch/x86/pv/shim.c >>> +++ b/xen/arch/x86/pv/shim.c >>> @@ -660,11 +660,12 @@ void pv_shim_inject_evtchn(unsigned int port) >>> if ( port_is_valid(guest, port) ) >>> { >>> struct evtchn *chn = evtchn_from_port(guest, port); >>> - unsigned long flags; >>> >>> - spin_lock_irqsave(&chn->lock, flags); >>> - evtchn_port_set_pending(guest, chn->notify_vcpu_id, chn); >>> - spin_unlock_irqrestore(&chn->lock, flags); >>> + if ( evtchn_read_trylock(chn) ) >>> + { >>> + evtchn_port_set_pending(guest, chn->notify_vcpu_id, chn); >>> + evtchn_read_unlock(chn); >>> + } >> >> Does this need trylock? > > It is called directly from the event upcall, so interrupts should be > off here. Without trylock this would result in check_lock() triggering. Hmm, right. Since the trylock function needs exposing anyway, this isn't much of a problem, the more that it fits the pattern of being a send. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |