svn commit: r253161 - head/sys/dev/uart
Marcel Moolenaar
marcel at xcllnt.net
Wed Jul 10 20:28:37 UTC 2013
On Jul 10, 2013, at 11:09 AM, John Baldwin <jhb at FreeBSD.org> wrote:
> On Wednesday, July 10, 2013 2:05:43 pm John Baldwin wrote:
>> On Wednesday, July 10, 2013 1:42:20 pm Marcel Moolenaar wrote:
>>> Author: marcel
>>> Date: Wed Jul 10 17:42:20 2013
>>> New Revision: 253161
>>> URL: http://svnweb.freebsd.org/changeset/base/253161
>>>
>>> Log:
>>> Protect against broken hardware. In this particular case, protect against
>>> H/W not de-asserting the interrupt at all. On x86, and because of the
>>> following conditions, this results in a hard hang with interrupts disabled:
>>> 1. The uart(4) driver uses a spin lock to protect against concurrent
>>> access to the H/W. Spin locks disable and restore interrupts.
>>> 2. Restoring the interrupt on x86 always writes the flags register. Even
>>> if we're restoring the interrupt from disabled to disabled.
>>> 3. The x86 CPU has a short window in which interrupts are enabled when the
>>> flags register is written.
>>
>> Do you have proof of this?
No. I only have proof of a hard hang during auto configuration that
cannot be fixed in any other way than not to setup the interrupt at
all.
--
Marcel Moolenaar
marcel at xcllnt.net
More information about the svn-src-head
mailing list