1. 27 Aug, 2013 4 commits
    • Viresh Kumar's avatar
      tty: serial: altera: drop uart_port->lock before calling tty_flip_buffer_push() · dd085ed8
      Viresh Kumar authored
      The current driver triggers a lockdep warning for if tty_flip_buffer_push() is
      called with uart_port->lock locked. This never shows up on UP kernels and comes
      up only on SMP kernels.
      
      Crash looks like this (produced with samsung.c driver):
      
      -----
      [<c0014d58>] (unwind_backtrace+0x0/0xf8) from [<c0011908>] (show_stack+0x10/0x14)
      [<c0011908>] (show_stack+0x10/0x14) from [<c035da34>] (dump_stack+0x6c/0xac)
      [<c035da34>] (dump_stack+0x6c/0xac) from [<c01b59ac>] (do_raw_spin_unlock+0xc4/0xd8)
      [<c01b59ac>] (do_raw_spin_unlock+0xc4/0xd8) from [<c03627e4>] (_raw_spin_unlock_irqrestore+0xc/0)
      [<c03627e4>] (_raw_spin_unlock_irqrestore+0xc/0x38) from [<c020a1a8>] (s3c24xx_serial_rx_chars+0)
      [<c020a1a8>] (s3c24xx_serial_rx_chars+0x12c/0x260) from [<c020aae8>] (s3c64xx_serial_handle_irq+)
      [<c020aae8>] (s3c64xx_serial_handle_irq+0x48/0x60) from [<c006aaa0>] (handle_irq_event_percpu+0x)
      [<c006aaa0>] (handle_irq_event_percpu+0x50/0x194) from [<c006ac20>] (handle_irq_event+0x3c/0x5c)
      [<c006ac20>] (handle_irq_event+0x3c/0x5c) from [<c006d864>] (handle_fasteoi_irq+0x80/0x13c)
      [<c006d864>] (handle_fasteoi_irq+0x80/0x13c) from [<c006a4a4>] (generic_handle_irq+0x20/0x30)
      [<c006a4a4>] (generic_handle_irq+0x20/0x30) from [<c000f454>] (handle_IRQ+0x38/0x94)
      [<c000f454>] (handle_IRQ+0x38/0x94) from [<c0008538>] (gic_handle_irq+0x34/0x68)
      [<c0008538>] (gic_handle_irq+0x34/0x68) from [<c00123c0>] (__irq_svc+0x40/0x70)
      Exception stack(0xc04cdf70 to 0xc04cdfb8)
      df60:                                     00000000 00000000 0000166e 00000000
      df80: c04cc000 c050278f c050278f 00000001 c04d444c 410fc0f4 c03649b0 00000000
      dfa0: 00000001 c04cdfb8 c000f758 c000f75c 60070013 ffffffff
      [<c00123c0>] (__irq_svc+0x40/0x70) from [<c000f75c>] (arch_cpu_idle+0x28/0x30)
      [<c000f75c>] (arch_cpu_idle+0x28/0x30) from [<c0054888>] (cpu_startup_entry+0x5c/0x148)
      [<c0054888>] (cpu_startup_entry+0x5c/0x148) from [<c0497aa4>] (start_kernel+0x334/0x38c)
      BUG: spinlock lockup suspected on CPU#0, kworker/0:1/360
       lock: s3c24xx_serial_ports+0x1d8/0x370, .magic: dead4ead, .owner: <none>/-1, .owner_cpu: -1
      CPU: 0 PID: 360 Comm: kworker/0:1 Not tainted 3.11.0-rc6-next-20130819-00003-g75485f1 #2
      Workqueue: events flush_to_ldisc
      [<c0014d58>] (unwind_backtrace+0x0/0xf8) from [<c0011908>] (show_stack+0x10/0x14)
      [<c0011908>] (show_stack+0x10/0x14) from [<c035da34>] (dump_stack+0x6c/0xac)
      [<c035da34>] (dump_stack+0x6c/0xac) from [<c01b581c>] (do_raw_spin_lock+0x100/0x17c)
      [<c01b581c>] (do_raw_spin_lock+0x100/0x17c) from [<c03628a0>] (_raw_spin_lock_irqsave+0x20/0x28)
      [<c03628a0>] (_raw_spin_lock_irqsave+0x20/0x28) from [<c0203224>] (uart_start+0x18/0x34)
      [<c0203224>] (uart_start+0x18/0x34) from [<c01ef890>] (__receive_buf+0x4b4/0x738)
      [<c01ef890>] (__receive_buf+0x4b4/0x738) from [<c01efb44>] (n_tty_receive_buf2+0x30/0x98)
      [<c01efb44>] (n_tty_receive_buf2+0x30/0x98) from [<c01f2ba8>] (flush_to_ldisc+0xec/0x138)
      [<c01f2ba8>] (flush_to_ldisc+0xec/0x138) from [<c0031af0>] (process_one_work+0xfc/0x348)
      [<c0031af0>] (process_one_work+0xfc/0x348) from [<c0032138>] (worker_thread+0x138/0x37c)
      [<c0032138>] (worker_thread+0x138/0x37c) from [<c0037a7c>] (kthread+0xa4/0xb0)
      [<c0037a7c>] (kthread+0xa4/0xb0) from [<c000e5f8>] (ret_from_fork+0x14/0x3c)
      -----
      
      Release the port lock before calling tty_flip_buffer_push() and reacquire it
      after the call.
      
      Similar stuff was already done for few other drivers in the past, like:
      
      commit 2389b272
      Author: Thomas Gleixner <tglx@linutronix.de>
      Date:   Tue May 29 21:53:50 2007 +0100
      
          [ARM] 4417/1: Serial: Fix AMBA drivers locking
      
      Cc: Tobias Klauser <tklauser@distanz.ch>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      dd085ed8
    • Viresh Kumar's avatar
      tty: serial: altera_jtag: drop uart_port->lock before calling tty_flip_buffer_push() · 53dd0ba7
      Viresh Kumar authored
      The current driver triggers a lockdep warning for if tty_flip_buffer_push() is
      called with uart_port->lock locked. This never shows up on UP kernels and comes
      up only on SMP kernels.
      
      Crash looks like this (produced with samsung.c driver):
      
      -----
      [<c0014d58>] (unwind_backtrace+0x0/0xf8) from [<c0011908>] (show_stack+0x10/0x14)
      [<c0011908>] (show_stack+0x10/0x14) from [<c035da34>] (dump_stack+0x6c/0xac)
      [<c035da34>] (dump_stack+0x6c/0xac) from [<c01b59ac>] (do_raw_spin_unlock+0xc4/0xd8)
      [<c01b59ac>] (do_raw_spin_unlock+0xc4/0xd8) from [<c03627e4>] (_raw_spin_unlock_irqrestore+0xc/0)
      [<c03627e4>] (_raw_spin_unlock_irqrestore+0xc/0x38) from [<c020a1a8>] (s3c24xx_serial_rx_chars+0)
      [<c020a1a8>] (s3c24xx_serial_rx_chars+0x12c/0x260) from [<c020aae8>] (s3c64xx_serial_handle_irq+)
      [<c020aae8>] (s3c64xx_serial_handle_irq+0x48/0x60) from [<c006aaa0>] (handle_irq_event_percpu+0x)
      [<c006aaa0>] (handle_irq_event_percpu+0x50/0x194) from [<c006ac20>] (handle_irq_event+0x3c/0x5c)
      [<c006ac20>] (handle_irq_event+0x3c/0x5c) from [<c006d864>] (handle_fasteoi_irq+0x80/0x13c)
      [<c006d864>] (handle_fasteoi_irq+0x80/0x13c) from [<c006a4a4>] (generic_handle_irq+0x20/0x30)
      [<c006a4a4>] (generic_handle_irq+0x20/0x30) from [<c000f454>] (handle_IRQ+0x38/0x94)
      [<c000f454>] (handle_IRQ+0x38/0x94) from [<c0008538>] (gic_handle_irq+0x34/0x68)
      [<c0008538>] (gic_handle_irq+0x34/0x68) from [<c00123c0>] (__irq_svc+0x40/0x70)
      Exception stack(0xc04cdf70 to 0xc04cdfb8)
      df60:                                     00000000 00000000 0000166e 00000000
      df80: c04cc000 c050278f c050278f 00000001 c04d444c 410fc0f4 c03649b0 00000000
      dfa0: 00000001 c04cdfb8 c000f758 c000f75c 60070013 ffffffff
      [<c00123c0>] (__irq_svc+0x40/0x70) from [<c000f75c>] (arch_cpu_idle+0x28/0x30)
      [<c000f75c>] (arch_cpu_idle+0x28/0x30) from [<c0054888>] (cpu_startup_entry+0x5c/0x148)
      [<c0054888>] (cpu_startup_entry+0x5c/0x148) from [<c0497aa4>] (start_kernel+0x334/0x38c)
      BUG: spinlock lockup suspected on CPU#0, kworker/0:1/360
       lock: s3c24xx_serial_ports+0x1d8/0x370, .magic: dead4ead, .owner: <none>/-1, .owner_cpu: -1
      CPU: 0 PID: 360 Comm: kworker/0:1 Not tainted 3.11.0-rc6-next-20130819-00003-g75485f1 #2
      Workqueue: events flush_to_ldisc
      [<c0014d58>] (unwind_backtrace+0x0/0xf8) from [<c0011908>] (show_stack+0x10/0x14)
      [<c0011908>] (show_stack+0x10/0x14) from [<c035da34>] (dump_stack+0x6c/0xac)
      [<c035da34>] (dump_stack+0x6c/0xac) from [<c01b581c>] (do_raw_spin_lock+0x100/0x17c)
      [<c01b581c>] (do_raw_spin_lock+0x100/0x17c) from [<c03628a0>] (_raw_spin_lock_irqsave+0x20/0x28)
      [<c03628a0>] (_raw_spin_lock_irqsave+0x20/0x28) from [<c0203224>] (uart_start+0x18/0x34)
      [<c0203224>] (uart_start+0x18/0x34) from [<c01ef890>] (__receive_buf+0x4b4/0x738)
      [<c01ef890>] (__receive_buf+0x4b4/0x738) from [<c01efb44>] (n_tty_receive_buf2+0x30/0x98)
      [<c01efb44>] (n_tty_receive_buf2+0x30/0x98) from [<c01f2ba8>] (flush_to_ldisc+0xec/0x138)
      [<c01f2ba8>] (flush_to_ldisc+0xec/0x138) from [<c0031af0>] (process_one_work+0xfc/0x348)
      [<c0031af0>] (process_one_work+0xfc/0x348) from [<c0032138>] (worker_thread+0x138/0x37c)
      [<c0032138>] (worker_thread+0x138/0x37c) from [<c0037a7c>] (kthread+0xa4/0xb0)
      [<c0037a7c>] (kthread+0xa4/0xb0) from [<c000e5f8>] (ret_from_fork+0x14/0x3c)
      -----
      
      Release the port lock before calling tty_flip_buffer_push() and reacquire it
      after the call.
      
      Similar stuff was already done for few other drivers in the past, like:
      
      commit 2389b272
      Author: Thomas Gleixner <tglx@linutronix.de>
      Date:   Tue May 29 21:53:50 2007 +0100
      
          [ARM] 4417/1: Serial: Fix AMBA drivers locking
      
      Cc: Tobias Klauser <tklauser@distanz.ch>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      53dd0ba7
    • Greg Kroah-Hartman's avatar
      Revert "OMAP: UART: Keep the TX fifo full when possible" · 355fe568
      Greg Kroah-Hartman authored
      This reverts commit c4415084.
      
      Kevin writes:
      	Hmm, another OMAP serial patch that wasn't Cc'd to linux-omap
      	where OMAP users might have seen it. :(
      
      	I just bisected a strange problem in linux-next on OMAP3 down to
      	this patch.  Reverting it fixes the problem.
      
      	On OMAP3530 Beagle and Overo, after boot, doing a 'cat
      	/proc/cpuinfo' was not returning to a prompt, suggesting
      	something strange with the FIFO.  Hitting return gets me back to
      	a prompt.
      
      	Greg, this one should also be dropped from tty-next until it can
      	be further investgated and the problem solved.
      Reported-by: default avatarKevin Hilman <khilman@linaro.org>
      Cc: Dmitry Fink <finik@ti.com>
      Cc: Alexander Savchenko <oleksandr.savchenko@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      355fe568
    • Greg Kroah-Hartman's avatar
      Revert "serial: omap: Fix IRQ handling return value" · 7b013e44
      Greg Kroah-Hartman authored
      This reverts commit 908fd7e5.
      
      Kevin writes:
      	Greg, without a better justification in the changelog, I think
      	this patch should be dropped from tty-next.
      Reported-by: default avatarKevin Hilman <khilman@linaro.org>
      Cc: Ruchika Kharwar <ruchika@ti.com>
      Cc: Alexander Savchenko <oleksandr.savchenko@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7b013e44
  2. 20 Aug, 2013 5 commits
  3. 16 Aug, 2013 1 commit
  4. 15 Aug, 2013 4 commits
  5. 14 Aug, 2013 2 commits
    • Mark Jackson's avatar
      OMAP: add RS485 support · 4a0ac0f5
      Mark Jackson authored
      This patch adds RS485 support to the OMAP serial driver, as
      defined in:-
      
      Documentation/devicetree/bindings/serial/rs485.txt
      
      When a UART transmitter is connected to (eg) a RS485 driver, it is
      necessary to turn the driver on/off as quickly as possible.  This is
      best achieved in the serial driver itself (rather than in userspace
      where the latency can be quite large).
      
      This patch allows a GPIO pin to be defined (via DT) that controls
      the enabling of the driver at the start of a message, and disables
      the driver when the message has been completed.
      
      When RS485 is disabled, the RTS pin is set to on.
      Signed-off-by: default avatarMark Jackson <mpfj@newflow.co.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4a0ac0f5
    • Julia Lawall's avatar
      tty: ar933x_uart: simplify use of devm_ioremap_resource · 071eb0ff
      Julia Lawall authored
      Remove unneeded error handling on the result of a call to
      platform_get_resource when the value is passed to devm_ioremap_resource.
      
      Move the call to platform_get_resource adjacent to the call to
      devm_ioremap_resource to make the connection between them more clear.
      
      A simplified version of the semantic patch that makes this change is as
      follows: (http://coccinelle.lip6.fr/)
      
      // <smpl>
      @@
      expression pdev,res,n,e,e1;
      expression ret != 0;
      identifier l;
      @@
      
      - res = platform_get_resource(pdev, IORESOURCE_MEM, n);
        ... when != res
      - if (res == NULL) { ... \(goto l;\|return ret;\) }
        ... when != res
      + res = platform_get_resource(pdev, IORESOURCE_MEM, n);
        e = devm_ioremap_resource(e1, res);
      // </smpl>
      Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      071eb0ff
  6. 12 Aug, 2013 22 commits
  7. 05 Aug, 2013 2 commits
    • Andreas Bießmann's avatar
      register_console: prevent adding the same console twice · 16cf48a6
      Andreas Bießmann authored
      This patch guards the console_drivers list to be corrupted. The
      for_each_console() macro insist on a strictly forward list ended by NULL:
      
       con0->next->con1->next->NULL
      
      Without this patch it may happen easily to destroy this list for example by
      adding 'earlyprintk' twice, especially on embedded devices where the early
      console is often a single static instance.  This will result in the following
      list:
      
       con0->next->con0
      
      This in turn will result in an endless loop in console_unlock() later on by
      printing the first __log_buf line endlessly.
      Signed-off-by: default avatarAndreas Bießmann <andreas@biessmann.de>
      Cc: Kay Sievers <kay@vrfy.org>
      Cc: Ben Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      16cf48a6
    • Clemens Ladisch's avatar
      vt: make the default color configurable · 3855ae1c
      Clemens Ladisch authored
      The virtual console has (undocumented) module parameters to set the
      colors for italic and underlined text, but the default text color was
      hardcoded for some reason.  This made it impossible to change the color
      for startup messages, or to set the default for new virtual consoles.
      Add a module parameter for that, and document the entire bunch.
      
      Any hacker who thinks that a command prompt on a "black screen with
      white font" is not supicious enough can now use the kernel parameter
      vt.color=10 to get a nice, evil green.
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3855ae1c