Module Name: src Committed By: cherry Date: Sun Nov 25 07:48:47 UTC 2012
Modified Files: src/sys/arch/xen/xen: evtchn.c Log Message: hypervisor_set_ipending() should not set the pending flag across cpus. The reason for this is that the pending flag update is not atomic, or protected by a lock. Since its current (mis)use in evtchn_do_event() across cpus is to notify the remote cpu of an interrupt, we use hypervisor_send_event() instead, to trigger an event on the remote cpu, which in turn invokes evtchn_do_event() on that cpu and DTRT on it. On the local cpu, we protect hypervisor_set_ipending() from re-entry via cli(). Remove a redundant and unprotected call to hypervisor_set_ipending(). Thanks to jym@ for spotting this discrepancy while reviewing a related patch. See: http://mail-index.netbsd.org/tech-kern/2012/11/12/msg014374.html To generate a diff of this commit: cvs rdiff -u -r1.62 -r1.63 src/sys/arch/xen/xen/evtchn.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.