Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 917e2fd2 authored by Anton Ivanov's avatar Anton Ivanov Committed by Richard Weinberger
Browse files

um: Make line/tty semantics use true write IRQ



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: default avatarAnton Ivanov <anton.ivanov@cambridgegreys.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 59fdf91d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;