1. 08 Apr, 2009 1 commit
  2. 07 Apr, 2009 8 commits
  3. 06 Apr, 2009 17 commits
  4. 01 Apr, 2009 3 commits
  5. 30 Mar, 2009 1 commit
  6. 25 Mar, 2009 1 commit
  7. 24 Mar, 2009 1 commit
  8. 23 Mar, 2009 1 commit
  9. 22 Mar, 2009 1 commit
  10. 13 Mar, 2009 1 commit
  11. 09 Mar, 2009 2 commits
  12. 02 Mar, 2009 1 commit
  13. 27 Feb, 2009 1 commit
  14. 20 Feb, 2009 1 commit
    • Mauro Carvalho Chehab's avatar
      8250: fix boot hang with serial console when using with Serial Over Lan port · b6adea33
      Mauro Carvalho Chehab authored
      Intel 8257x Ethernet boards have a feature called Serial Over Lan.
      This feature works by emulating a serial port, and it is detected by
      kernel as a normal 8250 port.  However, this emulation is not perfect, as
      also noticed on changeset 7500b1f6
      Before this patch, the kernel were trying to check if the serial TX is
      capable of work using IRQ's.
      This were done with a code similar this:
              serial_outp(up, UART_IER, UART_IER_THRI);
              lsr = serial_in(up, UART_LSR);
              iir = serial_in(up, UART_IIR);
              serial_outp(up, UART_IER, 0);
              if (lsr & UART_LSR_TEMT && iir & UART_IIR_NO_INT)
      		up->bugs |= UART_BUG_TXEN;
      This works fine for other 8250 ports, but, on 8250-emulated SoL port, the
      chip is a little lazy to down UART_IIR_NO_INT at UART_IIR register.
      Due to that, UART_BUG_TXEN is sometimes enabled.  However, as TX IRQ keeps
      working, and the TX polling is now enabled, the driver miss-interprets the
      IRQ received later, hanging up the machine until a key is pressed at the
      serial console.
      This is the 6 version of this patch.  Previous versions were trying to
      introduce a large enough delay between serial_outp and serial_in(up,
      UART_IIR), but not taking forever.  However, the needed delay couldn't be
      safely determined.
      At the experimental tests, a delay of 1us solves most of the cases, but
      still hangs sometimes.  Increasing the delay to 5us was better, but still
      doesn't solve.  A very high delay of 50 ms seemed to work every time.
      However, poking around with delays and pray for it to be enough doesn't
      seem to be a good approach, even for a quirk.
      So, instead of playing with random large arbitrary delays, let's just
      disable UART_BUG_TXEN for all SoL ports.
      [akpm@linux-foundation.org: fix warnings]
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>