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

Commit 38f8eefc authored by Jason Wessel's avatar Jason Wessel Committed by Greg Kroah-Hartman
Browse files

pmac_zilog,kdb: Fix console poll hook to return instead of loop



kdb <-> kgdb transitioning does not work properly with this UART
driver because the get character routine loops indefinitely as opposed
to returning NO_POLL_CHAR per the expectation of the KDB I/O driver
API.

The symptom is a kernel hang when trying to switch debug modes.

Cc: Alan Cox <alan@linux.intel.com>
Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 00592021
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -1348,10 +1348,16 @@ static int pmz_verify_port(struct uart_port *port, struct serial_struct *ser)
static int pmz_poll_get_char(struct uart_port *port)
{
	struct uart_pmac_port *uap = (struct uart_pmac_port *)port;
	int tries = 2;

	while ((read_zsreg(uap, R0) & Rx_CH_AV) == 0)
		udelay(5);
	while (tries) {
		if ((read_zsreg(uap, R0) & Rx_CH_AV) != 0)
			return read_zsdata(uap);
		if (tries--)
			udelay(5);
	}

	return NO_POLL_CHAR;
}

static void pmz_poll_put_char(struct uart_port *port, unsigned char c)