Commit 61a9346f authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

serial: fix DLL writes



Commit 01478834 tries to handle
word-sized writes to DLL/DLH, but due to a typo,
this patch is causing tracebacks in all Linux kernels running the PXA
serial driver, due to an unexpected DLL register value. Here is the
surrounding code from drivers/tty/serial/pxa.c:

	serial_out(up, UART_DLL, quot & 0xff);		/* LS of divisor */

	/*
	 * work around Errata #75 according to Intel(R) PXA27x
	 * Processor Family Specification Update (Nov 2005)
	 */
	dll = serial_in(up, UART_DLL);
	WARN_ON(dll != (quot & 0xff));	// <-- warning

Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
Fixes: 01478834
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 35f7f3fb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -345,9 +345,9 @@ static void serial_ioport_write(void *opaque, hwaddr addr, uint64_t val,
    default:
    case 0:
        if (s->lcr & UART_LCR_DLAB) {
            if (size == 2) {
            if (size == 1) {
                s->divider = (s->divider & 0xff00) | val;
            } else if (size == 4) {
            } else {
                s->divider = val;
            }
            serial_update_parameters(s);