1. 04 10月, 2017 1 次提交
  2. 01 9月, 2017 1 次提交
  3. 29 8月, 2017 2 次提交
  4. 30 7月, 2017 1 次提交
  5. 29 6月, 2017 1 次提交
    • P
      serial: 8250: Fix THRE flag usage for CAP_MINI · cfde770d
      Phil Elwell 提交于
      The BCM2835 MINI UART has non-standard THRE semantics. Conventionally
      the bit means that the FIFO is empty (although there may still be a
      byte in the transmit register), but on 2835 it indicates that the FIFO
      is not full. This causes interrupts after every byte is transmitted,
      with the FIFO providing some interrupt latency tolerance.
      
      A consequence of this difference is that the usual strategy of writing
      multiple bytes into the TX FIFO after checking THRE once is unsafe.
      In the worst case of 7 bytes in the FIFO, writing 8 bytes loses all
      but the first since by then the FIFO is full.
      
      There is an HFIFO ("Hidden FIFO") capability that causes the transmit
      loop to terminate when both THRE and TEMT are set, i.e. when the TX
      block is completely idle. This is unnecessarily cautious, potentially
      causing gaps in transmission.
      
      Add a new conditional to the transmit loop, predicated on CAP_MINI,
      that exits when THRE is no longer set (the FIFO is full). This allows
      the FIFO to fill quickly but subsequent writes are paced by the
      transmission rate.
      Signed-off-by: NPhil Elwell <phil@raspberrypi.org>
      Acked-by: NEric Anholt <eric@anholt.net>
      Acked-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cfde770d
  6. 24 5月, 2017 1 次提交
  7. 18 5月, 2017 3 次提交
  8. 18 4月, 2017 1 次提交
  9. 10 2月, 2017 1 次提交
  10. 12 1月, 2017 2 次提交
    • D
      serial: 8250: Add new port type for TI DA8xx/66AK2x · a2d6a987
      David Lechner 提交于
      This adds a new UART port type for TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x.
      These SoCs have standard 8250 registers plus some extra non-standard
      registers.
      
      The UART will not function unless the non-standard Power and Emulation
      Management Register (PWREMU_MGMT) is configured correctly. This is
      currently handled in arch/arm/mach-davinci/serial.c for non-device-tree
      boards. Making this part of the UART driver will allow UART to work on
      device-tree boards as well and the mach code can eventually be removed.
      Signed-off-by: NDavid Lechner <david@lechnology.com>
      Acked-by: NSekhar Nori <nsekhar@ti.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a2d6a987
    • A
      serial: 8250_port: Remove dangerous pr_debug() · 699a11ba
      Alexey Brodkin 提交于
      With CONFIG_DYNAMIC_DEBUG if dyndbg enables debug output in
      8250_port.c deadlock happens inevitably on UART IRQ handling.
      
      That's the problematic execution path:
      ---------------------------->8------------------------
      UART IRQ:
        serial8250_interrupt() ->
          serial8250_handle_irq(): lock "port->lock" ->
            pr_debug() ->
              serial8250_console_write(): bump in locked "port->lock".
      
            OR (if above pr_debug() gets removed):
            serial8250_tx_chars() ->
              pr_debug() ->
                serial8250_console_write(): bump in locked "port->lock".
      ---------------------------->8------------------------
      
      So let's get rid of those not that much useful debug entries.
      
      Discussed problem could be easily reproduced with QEMU for x86_64.
      As well as this fix could be mimicked with muting of dynamic debug for
      the problematic lines as simple as:
      ---------------------------->8------------------------
      dyndbg="+p; file 8250_port.c line 1756 -p; file 8250_port.c line 1822 -p"
      ---------------------------->8------------------------
      Signed-off-by: NAlexey Brodkin <abrodkin@synopsys.com>
      Cc: Jiri Slaby <jslaby@suse.com>
      Cc: Peter Hurley <peter@hurleysoftware.com>
      Cc: Phillip Raffeck <phillip.raffeck@fau.de>
      Cc: Anton Wuerfel <anton.wuerfel@fau.de>
      Cc: "Matwey V. Kornilov" <matwey@sai.msu.ru>
      Cc: Yegor Yefremov <yegorslists@googlemail.com>
      Cc: Thor Thayer <tthayer@opensource.altera.com>
      Reviewed-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      699a11ba
  11. 11 1月, 2017 1 次提交
    • D
      Clearing FIFOs in RS485 emulation mode causes subsequent transmits to break · 2bed8a8e
      Daniel Jedrychowski 提交于
      When in RS485 emulation mode, __do_stop_tx_rs485() calls
      serial8250_clear_fifos().  This not only clears the FIFOs, but also sets
      all bits in their control register (UART_FCR) to 0.
      
      One of the effects of this is the disabling of the FIFOs, which turns
      them into single-byte holding registers.  The rest of the driver doesn't
      know this, which results in the lions share of characters passed into a
      write call to be dropped.
      
      (I can supply logic analyzer screenshots if necessary)
      
      This fix replaces the serial8250_clear_fifos() call to
      serial8250_clear_and_reinit_fifos() - this prevents the "dropped
      characters" issue from manifesting again while retaining the requirement
      of clearing the RX FIFO after transmission if the SER_RS485_RX_DURING_TX
      flag is disabled.
      Signed-off-by: NDaniel Jedrychowski <avistel@gmail.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2bed8a8e
  12. 16 11月, 2016 2 次提交
  13. 27 10月, 2016 1 次提交
  14. 27 9月, 2016 1 次提交
  15. 22 9月, 2016 1 次提交
    • J
      tty/serial/8250: Touch NMI watchdog in wait_for_xmitr · 54f19b4a
      Jiri Olsa 提交于
      First loop in wait_for_xmitr could also trigger NMI
      watchdog in case reading from the port is slow:
      
        PID: 0      TASK: ffffffff819c1460  CPU: 0   COMMAND: "swapper/0"
         #0 [ffff88019f405e58] crash_nmi_callback at ffffffff8104d382
         #1 [ffff88019f405e68] nmi_handle at ffffffff8168ead9
         #2 [ffff88019f405eb0] do_nmi at ffffffff8168ec53
         #3 [ffff88019f405ef0] end_repeat_nmi at ffffffff8168df13
            [exception RIP: delay_tsc+50]
            RIP: ffffffff81325642  RSP: ffff88019f403bb0  RFLAGS: 00000083
            RAX: 00000000000005c8  RBX: ffffffff81f83000  RCX: 0000024e4fb88a8b
            RDX: 0000024e4fb89053  RSI: 0000000000000000  RDI: 00000000000007d1
            RBP: ffff88019f403bb0   R8: 000000000000000a   R9: 0000000000000000
            R10: 0000000000000000  R11: ffff88019f403ad6  R12: 000000000000250f
            R13: 0000000000000020  R14: ffffffff81d360c7  R15: 0000000000000047
            ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
        --- <NMI exception stack> ---
         #4 [ffff88019f403bb0] delay_tsc at ffffffff81325642
         #5 [ffff88019f403bb8] __const_udelay at ffffffff813255a8
         #6 [ffff88019f403bc8] wait_for_xmitr at ffffffff81404390
         #7 [ffff88019f403bf0] serial8250_console_putchar at ffffffff8140455c
         #8 [ffff88019f403c10] uart_console_write at ffffffff813ff00a
         #9 [ffff88019f403c40] serial8250_console_write at ffffffff814044ae
        #10 [ffff88019f403c88] call_console_drivers.constprop.15 at ffffffff81086b01
        #11 [ffff88019f403cb0] console_unlock at ffffffff8108842f
        #12 [ffff88019f403ce8] vprintk_emit at ffffffff81088834
        #13 [ffff88019f403d58] vprintk_default at ffffffff81088ba9
        #14 [ffff88019f403d68] printk at ffffffff8167f034
      
      Adding touch_nmi_watchdog call to the first loop as well.
      Reported-by: NChunyu Hu <chuhu@redhat.com>
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      54f19b4a
  16. 02 9月, 2016 2 次提交
  17. 31 8月, 2016 3 次提交
  18. 26 6月, 2016 3 次提交
  19. 25 6月, 2016 1 次提交
  20. 01 5月, 2016 5 次提交
  21. 19 4月, 2016 1 次提交
  22. 08 3月, 2016 2 次提交
  23. 07 2月, 2016 3 次提交