From: "Serge E. Hallyn" I still need the following two patches against icom.c (the first from Alan cox) applied. With these, 2.6.14-rc1-mm1 compiles and boots on my power5 machine. Acked-by: Alan Cox Signed-off-by: Andrew Morton --- drivers/serial/icom.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff -puN drivers/serial/icom.c~tty-layer-buffering-revamp-icom-fixes drivers/serial/icom.c --- devel/drivers/serial/icom.c~tty-layer-buffering-revamp-icom-fixes 2005-09-16 16:04:04.000000000 -0700 +++ devel-akpm/drivers/serial/icom.c 2005-09-16 16:04:04.000000000 -0700 @@ -736,6 +736,7 @@ static void recv_interrupt(u16 port_int_ status = cpu_to_le16(icom_port->statStg->rcv[rcv_buff].flags); while (status & SA_FL_RCV_DONE) { + int first = -1; trace(icom_port, "FID_STATUS", status); count = cpu_to_le16(icom_port->statStg->rcv[rcv_buff].leLength); @@ -750,15 +751,17 @@ static void recv_interrupt(u16 port_int_ icom_port->recv_buf_pci; /* Block copy all but the last byte as this may have status */ - if(count > 0) - tty_insert_flip_string(tty, icon_port->recv_buf + offset, count - 1); + if (count > 0) { + first = icom_port->recv_buf[offset]; + tty_insert_flip_string(tty, icom_port->recv_buf + offset, count - 1); + } icount = &icom_port->uart_port.icount; icount->rx += count; /* Break detect logic */ if ((status & SA_FLAGS_FRAME_ERROR) - && (tty->flip.char_buf_ptr[0] == 0x00)) { + && first == 0) { status &= ~SA_FLAGS_FRAME_ERROR; status |= SA_FLAGS_BREAK_DET; trace(icom_port, "BREAK_DET", 0); @@ -801,7 +804,7 @@ static void recv_interrupt(u16 port_int_ } - tty_insert_flip_char(tty, icon_port->recv_buf + offset + count - 1, flag); + tty_insert_flip_char(tty, *(icom_port->recv_buf + offset + count - 1), flag); if (status & SA_FLAGS_OVERRUN) /* _