• Darwin Dingel's avatar
    serial: 8250: Rate limit serial port rx interrupts during input overruns · ab77c2c1
    Darwin Dingel authored
    [ Upstream commit 6d7f677a ]
    
    When a serial port gets faulty or gets flooded with inputs, its interrupt
    handler starts to work double time to get the characters to the workqueue
    for the tty layer to handle them. When this busy time on the serial/tty
    subsystem happens during boot, where it is also busy on the userspace
    trying to initialise, some processes can continuously get preempted
    and will be on hold until the interrupts subside.
    
    The fix is to backoff on processing received characters for a specified
    amount of time when an input overrun is seen (received a new character
    before the previous one is processed). This only stops receive and will
    continue to transmit characters to serial port. After the backoff period
    is done, it receive will be re-enabled. This is optional and will only
    be enabled by setting 'overrun-throttle-ms' in the dts.
    Signed-off-by: default avatarDarwin Dingel <darwin.dingel@alliedtelesis.co.nz>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    ab77c2c1
8250_of.c 9.23 KB