]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC of r288447. Only the Marvell driver has been updated as there is no
authorandrew <andrew@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 12 Oct 2015 13:20:17 +0000 (13:20 +0000)
committerandrew <andrew@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 12 Oct 2015 13:20:17 +0000 (13:20 +0000)
commita1ecfd7adfb3f9a60c1d7b5b939d4a2df05dae12
tree4d651f964747e6ca7292c02a6016e1c1fe3dac03
parent10afc9e59dd1e1d274062ce8d3923bd3285c006e
MFC of r288447. Only the Marvell driver has been updated as there is no
support for Raspbetty Pi 2 in stable/10.

An IPI must be cleared before it is handled otherwise next IPI could be
missed. In other words, if a new request for an IPI is sent while the
previous request is being handled but the IPI is not cleared yet, the
clearing of the previous IPI request also clears the new one and the
handling is missed.

There are only three MP interrupt controllers in ARM now. Two of them are
fixed by this change, the third one is correct, probably only just by
accident. The fix is minimalistic as new interrupt framework is awaited.

It was debugged on RPi2 where missing IPI handling together with SCHED_ULE
led to situation in which tdq_ipipending was not cleared and so IPI_PREEMPT
was stopped to be sent. Various odditys were found related to slow system
response time like various events timed out, and slow console response.

git-svn-id: svn://svn.freebsd.org/base/stable/10@289184 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/arm/mv/mpic.c