lkml.org 
[lkml]   [2019]   [Nov]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 140/237] um: Make line/tty semantics use true write IRQ
    Date
    From: Anton Ivanov <anton.ivanov@cambridgegreys.com>

    [ Upstream commit 917e2fd2c53eb3c4162f5397555cbd394390d4bc ]

    This fixes a long standing bug where large amounts of output
    could freeze the tty (most commonly seen on stdio console).
    While the bug has always been there it became more pronounced
    after moving to the new interrupt controller.

    The line semantics are now changed to have true IRQ write
    semantics which should further improve the tty/line subsystem
    stability and performance

    Signed-off-by: Anton Ivanov <anton.ivanov@cambridgegreys.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/um/drivers/line.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
    index 8d80b27502e6a..7e524efed5848 100644
    --- a/arch/um/drivers/line.c
    +++ b/arch/um/drivers/line.c
    @@ -261,7 +261,7 @@ static irqreturn_t line_write_interrupt(int irq, void *data)
    if (err == 0) {
    spin_unlock(&line->lock);
    return IRQ_NONE;
    - } else if (err < 0) {
    + } else if ((err < 0) && (err != -EAGAIN)) {
    line->head = line->buffer;
    line->tail = line->buffer;
    }
    @@ -284,7 +284,7 @@ int line_setup_irq(int fd, int input, int output, struct line *line, void *data)
    if (err)
    return err;
    if (output)
    - err = um_request_irq(driver->write_irq, fd, IRQ_NONE,
    + err = um_request_irq(driver->write_irq, fd, IRQ_WRITE,
    line_write_interrupt, IRQF_SHARED,
    driver->write_irq_name, data);
    return err;
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-11-16 17:22    [W:4.105 / U:0.112 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site