diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2018-03-27 06:48:27 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-04-23 11:16:50 +0300 |
commit | 5909c0bf9c7a17c52cf357bf5e752a76b8d72568 (patch) | |
tree | 3ccbc3fa01f81d6d08d55eee2a6cb578fefcd24c /mm/compaction.c | |
parent | 989983ea849d9421e8b9cd11f18e072fe00ea0d7 (diff) | |
download | linux-5909c0bf9c7a17c52cf357bf5e752a76b8d72568.tar.xz |
serial/aspeed-vuart: Implement quick throttle mechanism
Although we populate the ->throttle and ->unthrottle UART operations,
these may not be called until the ldisc has had a chance to schedule and
check buffer space. This means that we may overflow the flip buffers
without ever hitting the ldisc's throttle threshold.
This change implements an interrupt-based throttle, where we check for
space in the flip buffers before reading characters from the UART's
FIFO. If there's no space available, we disable the RX interrupt and
schedule a timer to check for space later.
For this, we need an unlocked version of the set_throttle function to be
able to change throttle state from the irq_handler, which already holds
port->lock.
This prevents a case where we drop characters under heavy RX load.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Tested-by: Eddie James <eajames@linux.vnet.ibm.com>
Tested-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm/compaction.c')
0 files changed, 0 insertions, 0 deletions