<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/dev/uart/uart_dev_ns8250.c, branch release/5.3.0_cvs</title>
<subtitle>FreeBSD source tree</subtitle>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/'/>
<entry>
<title>This commit was manufactured by cvs2svn to create tag</title>
<updated>2004-11-04T19:12:42+00:00</updated>
<author>
<name>cvs2svn</name>
<email>cvs2svn@FreeBSD.org</email>
</author>
<published>2004-11-04T19:12:42+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=3f86d8a2ea3f3265afaa1fd263b0004c5c000e69'/>
<id>3f86d8a2ea3f3265afaa1fd263b0004c5c000e69</id>
<content type='text'>
'RELENG_5_3_0_RELEASE'.

This commit was manufactured to restore the state of the 5.3-RELEASE image.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
'RELENG_5_3_0_RELEASE'.

This commit was manufactured to restore the state of the 5.3-RELEASE image.
</pre>
</div>
</content>
</entry>
<entry>
<title>Do not use hardware flow control for the moment. There are some issues</title>
<updated>2004-08-06T15:51:31+00:00</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2004-08-06T15:51:31+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=dc70e792a6db924c8b242508ba056d3a104e3016'/>
<id>dc70e792a6db924c8b242508ba056d3a104e3016</id>
<content type='text'>
with it that need to be understood better before they can be resolved.
This takes time and time is already in short supply.

Reported &amp; tested by: glebius@
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
with it that need to be understood better before they can be resolved.
This takes time and time is already in short supply.

Reported &amp; tested by: glebius@
</pre>
</div>
</content>
</entry>
<entry>
<title>When sizing the FIFO, don't count all the way up to 1030 if any FIFO</title>
<updated>2004-07-26T03:54:40+00:00</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2004-07-26T03:54:40+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=d882cf921f4d856f8b5142b864f55a5721bf06a0'/>
<id>d882cf921f4d856f8b5142b864f55a5721bf06a0</id>
<content type='text'>
size larger than 128 is considered an incompatible size. Stop counting
when we reach 130 in the loop.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
size larger than 128 is considered an incompatible size. Stop counting
when we reach 130 in the loop.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use the new serial port definitions for modemsignals.</title>
<updated>2004-06-24T10:07:28+00:00</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>2004-06-24T10:07:28+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=28710806cbb64a31d7b4afcba9523376bd0ca941'/>
<id>28710806cbb64a31d7b4afcba9523376bd0ca941</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>It seems that clearing the MCR_IE bit in the modem control register</title>
<updated>2004-05-26T21:59:01+00:00</updated>
<author>
<name>Thomas Moestl</name>
<email>tmm@FreeBSD.org</email>
</author>
<published>2004-05-26T21:59:01+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=89eef2de478dd9c6ba14aca1cfd304c18f769289'/>
<id>89eef2de478dd9c6ba14aca1cfd304c18f769289</id>
<content type='text'>
does not reliably prevent the triggering of interrupts for all supported
configurations. Thus, the FIFO size probe could cause an interrupt,
which could lead to an interrupt storm in the shared interrupt case.

To prevent this, change ns8250_bus_probe() to use the overflow bit in
the line status register instead of the RX ready bit in the interrupt
identification register to detect whether the FIFO has filled up.
This allows us to clear all bits in the interrupt enable register during
the probe, which should prevent interrupts reliably.
Additionally, the detected FIFO size may be a bit more accurate, because
the overflow bit is only set when the FIFO did actually fill up, while
interrupts would trigger a bit early.

Reviewed and tested on a lot of hardware by:	marcel
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
does not reliably prevent the triggering of interrupts for all supported
configurations. Thus, the FIFO size probe could cause an interrupt,
which could lead to an interrupt storm in the shared interrupt case.

To prevent this, change ns8250_bus_probe() to use the overflow bit in
the line status register instead of the RX ready bit in the interrupt
identification register to detect whether the FIFO has filled up.
This allows us to clear all bits in the interrupt enable register during
the probe, which should prevent interrupts reliably.
Additionally, the detected FIFO size may be a bit more accurate, because
the overflow bit is only set when the FIFO did actually fill up, while
interrupts would trigger a bit early.

Reviewed and tested on a lot of hardware by:	marcel
</pre>
</div>
</content>
</entry>
<entry>
<title>In ns8250_putc() insert a barrier between writing the character and</title>
<updated>2004-04-02T07:37:28+00:00</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2004-04-02T07:37:28+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=4e55f7230a93fa32a4c4918dff3ac5a3138bfe43'/>
<id>4e55f7230a93fa32a4c4918dff3ac5a3138bfe43</id>
<content type='text'>
checking for transmitter empty.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
checking for transmitter empty.
</pre>
</div>
</content>
</entry>
<entry>
<title>In uart_intr() loop until all interrupts have been handled. Previously</title>
<updated>2003-09-17T03:11:32+00:00</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2003-09-17T03:11:32+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=44ed791b92a2d5a5a2ec7dceeaac65e9749a8eda'/>
<id>44ed791b92a2d5a5a2ec7dceeaac65e9749a8eda</id>
<content type='text'>
an UART interface could get stuck when a new interrupt condition
arose while servicing a previous interrupt. Since an interrupt was
already pending, no new interrupt would be triggered.

Avoid infinite recursion by flushing the Rx FIFO and marking an
overrun condition when we could not move the data from the Rx
FIFO to the receive buffer in toto. Failure to flush the Rx FIFO
would leave the Rx ready condition pending.

Note that the SAB 82532 already did this due to the nature of the
chip.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
an UART interface could get stuck when a new interrupt condition
arose while servicing a previous interrupt. Since an interrupt was
already pending, no new interrupt would be triggered.

Avoid infinite recursion by flushing the Rx FIFO and marking an
overrun condition when we could not move the data from the Rx
FIFO to the receive buffer in toto. Failure to flush the Rx FIFO
would leave the Rx ready condition pending.

Note that the SAB 82532 already did this due to the nature of the
chip.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add locking to the hardware drivers. I intended to figure out more</title>
<updated>2003-09-17T01:41:21+00:00</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2003-09-17T01:41:21+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=06287620b4f768f18a0874557b1cfa70e35791df'/>
<id>06287620b4f768f18a0874557b1cfa70e35791df</id>
<content type='text'>
precisely where locking would be needed before adding it, but it
seems uart(4) draws slightly too much attention to have it without
locking for too long.
The lock added is a spinlock that protects access to the underlying
hardware. As a first and obvious stab at this, each method of the
hardware interface grabs the lock. Roughly speaking this serializes
the methods. Exceptions are the probe, attach and detach methods.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
precisely where locking would be needed before adding it, but it
seems uart(4) draws slightly too much attention to have it without
locking for too long.
The lock added is a spinlock that protects access to the underlying
hardware. As a first and obvious stab at this, each method of the
hardware interface grabs the lock. Roughly speaking this serializes
the methods. Exceptions are the probe, attach and detach methods.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add support for automatic hardware flow control for 16[679]50 UARTs.</title>
<updated>2003-09-13T06:25:04+00:00</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2003-09-13T06:25:04+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=84c7b427f562f218837ea277f90b1266df9a3676'/>
<id>84c7b427f562f218837ea277f90b1266df9a3676</id>
<content type='text'>
We simply use the detected FIFO size to determine whether we have
a post 16550 UART or not. The support lacks proper serialization of
hardware access for now.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We simply use the detected FIFO size to determine whether we have
a post 16550 UART or not. The support lacks proper serialization of
hardware access for now.
</pre>
</div>
</content>
</entry>
<entry>
<title>If we failed to size the Rx FIFO, assume the worst. This however</title>
<updated>2003-09-10T05:01:08+00:00</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2003-09-10T05:01:08+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=c21e0da2f86dbd8a4ba923b240ad87f6276ed498'/>
<id>c21e0da2f86dbd8a4ba923b240ad87f6276ed498</id>
<content type='text'>
is not a size of 1. Since we already know there is a FIFO, we can
safely assume that it is at least 16 bytes. Note that all this is
mostly academic anyway. We don't use the size of the Rx FIFO
currently. If we add support for hardware flow control, we only
care about Rx FIFO sizes larger than 16.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
is not a size of 1. Since we already know there is a FIFO, we can
safely assume that it is at least 16 bytes. Note that all this is
mostly academic anyway. We don't use the size of the Rx FIFO
currently. If we add support for hardware flow control, we only
care about Rx FIFO sizes larger than 16.
</pre>
</div>
</content>
</entry>
</feed>
