]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC: r230664
authormarius <marius@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 1 Feb 2012 21:28:16 +0000 (21:28 +0000)
committermarius <marius@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 1 Feb 2012 21:28:16 +0000 (21:28 +0000)
commite48b3e3736e84199e8999c3b8e6769cddff82efa
tree907edc22bd029f8b44550dda3624a944288f94a3
parent6be7edd09040f042c8be4db4b400e8df77396aa4
MFC: r230664

As it turns out r227960 (MFC'ed to stable/8 in r228145) may still be
insufficient with PREEMPTION so try harder to get the CDMA sync
interrupt delivered and also in a more efficient way:
- wrap the whole process of sending and receiving the CDMA sync
  interrupt in a critical section so we don't get preempted,
- send the CDMA sync interrupt to the CPU that is actually waiting
  for it to happen so we don't take a detour via another CPU,
- instead of waiting for up to 15 seconds for the interrupt to
  trigger try the whole process for up to 15 times using a one
  second timeout (the code was also changed to just ignore belated
  interrupts of a previous tries should they appear).

According to testing done by Peter Jeremy with the debugging also
added as part of this commit the first two changes apparently are
sufficient to now properly get the CDMA sync interrupts delivered
at the first try though.

git-svn-id: svn://svn.freebsd.org/base/stable/8@230895 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/sparc64/pci/schizo.c
sys/sparc64/pci/schizovar.h