<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/tty/serial/pch_uart.c, branch v3.7.3</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>pch_uart: check kzalloc result in dma_handle_tx()</title>
<updated>2012-08-16T19:10:16+00:00</updated>
<author>
<name>Fengguang Wu</name>
<email>fengguang.wu@intel.com</email>
</author>
<published>2012-07-28T12:43:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a92098a1cb7ec08c86d1b97d1831d8edaf26b1a2'/>
<id>a92098a1cb7ec08c86d1b97d1831d8edaf26b1a2</id>
<content type='text'>
Reported by coccinelle:

drivers/tty/serial/pch_uart.c:979:1-14: alloc with no test, possible model on line 994

Signed-off-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reported by coccinelle:

drivers/tty/serial/pch_uart.c:979:1-14: alloc with no test, possible model on line 994

Signed-off-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pch_uart: Fix parity setting issue</title>
<updated>2012-07-17T16:27:31+00:00</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya.rohm@gmail.com</email>
</author>
<published>2012-07-06T08:19:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2fc39aebf682bed97a78d278f6adf6c395700d19'/>
<id>2fc39aebf682bed97a78d278f6adf6c395700d19</id>
<content type='text'>
Parity Setting value is reverse.
E.G. In case of setting ODD parity, EVEN value is set.
This patch inverts "if" condition.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Parity Setting value is reverse.
E.G. In case of setting ODD parity, EVEN value is set.
This patch inverts "if" condition.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pch_uart: Fix rx error interrupt setting issue</title>
<updated>2012-07-17T16:27:31+00:00</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya.rohm@gmail.com</email>
</author>
<published>2012-07-06T08:19:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ae213f30358e5bf68a05badf059bb4d9115755f5'/>
<id>ae213f30358e5bf68a05badf059bb4d9115755f5</id>
<content type='text'>
Rx Error interrupt(E.G. parity error) is not enabled.
So, when parity error occurs, error interrupt is not occurred.
As a result, the received data is not dropped.

This patch adds enable/disable rx error interrupt code.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rx Error interrupt(E.G. parity error) is not enabled.
So, when parity error occurs, error interrupt is not occurred.
As a result, the received data is not dropped.

This patch adds enable/disable rx error interrupt code.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pch_uart: Fix missing break for 16 byte fifo</title>
<updated>2012-07-17T16:27:31+00:00</updated>
<author>
<name>Alan Cox</name>
<email>alan@linux.intel.com</email>
</author>
<published>2012-07-02T17:51:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=669bd45f117cc8c7309acd6b6bb054fe4d9e46c0'/>
<id>669bd45f117cc8c7309acd6b6bb054fe4d9e46c0</id>
<content type='text'>
Otherwise we fall back to the wrong value.

Reported-by: &lt;dcb314@hotmail.com&gt;
Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=44091
Signed-off-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Otherwise we fall back to the wrong value.

Reported-by: &lt;dcb314@hotmail.com&gt;
Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=44091
Signed-off-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pch_uart: Add eg20t_port lock field, avoid recursive spinlocks</title>
<updated>2012-06-20T23:50:46+00:00</updated>
<author>
<name>Darren Hart</name>
<email>dvhart@linux.intel.com</email>
</author>
<published>2012-06-19T21:00:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fe89def79c48e2149abdd1e816523e69a9067191'/>
<id>fe89def79c48e2149abdd1e816523e69a9067191</id>
<content type='text'>
pch_uart_interrupt() takes priv-&gt;port.lock which leads to two recursive
spinlock calls if low_latency==1 or CONFIG_PREEMPT_RT_FULL=y (one
otherwise):

pch_uart_interrupt
  spin_lock_irqsave(priv-&gt;port.lock, flags)
  case PCH_UART_IID_RDR_TO (data ready)
  handle_rx_to
    push_rx
      tty_port_tty_get
        spin_lock_irqsave(&amp;port-&gt;lock, flags) &lt;--- already hold this lock
        ...
      tty_flip_buffer_push
        ...
        flush_to_ldisc
          spin_lock_irqsave(&amp;tty-&gt;buf.lock)
            spin_lock_irqsave(&amp;tty-&gt;buf.lock)
            disc-&gt;ops-&gt;receive_buf(tty, char_buf)
              n_tty_receive_buf
                tty-&gt;ops-&gt;flush_chars()
                uart_flush_chars
                  uart_start
                    spin_lock_irqsave(&amp;port-&gt;lock) &lt;--- already hold this lock

Avoid this by using a dedicated lock to protect the eg20t_port structure
and IO access to its membase. This is more consistent with the 8250
driver.  Ensure priv-&gt;lock is always take prior to priv-&gt;port.lock when
taken at the same time.

V2: Remove inadvertent whitespace change.
V3: Account for oops_in_progress for the private lock in
    pch_console_write().

Note: Like the 8250 driver, if a printk is introduced anywhere inside
      the pch_console_write() critical section, the kernel will hang
      on a recursive spinlock on the private lock. The oops case is
      handled by using a trylock in the oops_in_progress case.

Signed-off-by: Darren Hart &lt;dvhart@linux.intel.com&gt;
CC: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
CC: Feng Tang &lt;feng.tang@intel.com&gt;
CC: Alexander Stein &lt;alexander.stein@systec-electronic.com&gt;
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
pch_uart_interrupt() takes priv-&gt;port.lock which leads to two recursive
spinlock calls if low_latency==1 or CONFIG_PREEMPT_RT_FULL=y (one
otherwise):

pch_uart_interrupt
  spin_lock_irqsave(priv-&gt;port.lock, flags)
  case PCH_UART_IID_RDR_TO (data ready)
  handle_rx_to
    push_rx
      tty_port_tty_get
        spin_lock_irqsave(&amp;port-&gt;lock, flags) &lt;--- already hold this lock
        ...
      tty_flip_buffer_push
        ...
        flush_to_ldisc
          spin_lock_irqsave(&amp;tty-&gt;buf.lock)
            spin_lock_irqsave(&amp;tty-&gt;buf.lock)
            disc-&gt;ops-&gt;receive_buf(tty, char_buf)
              n_tty_receive_buf
                tty-&gt;ops-&gt;flush_chars()
                uart_flush_chars
                  uart_start
                    spin_lock_irqsave(&amp;port-&gt;lock) &lt;--- already hold this lock

Avoid this by using a dedicated lock to protect the eg20t_port structure
and IO access to its membase. This is more consistent with the 8250
driver.  Ensure priv-&gt;lock is always take prior to priv-&gt;port.lock when
taken at the same time.

V2: Remove inadvertent whitespace change.
V3: Account for oops_in_progress for the private lock in
    pch_console_write().

Note: Like the 8250 driver, if a printk is introduced anywhere inside
      the pch_console_write() critical section, the kernel will hang
      on a recursive spinlock on the private lock. The oops case is
      handled by using a trylock in the oops_in_progress case.

Signed-off-by: Darren Hart &lt;dvhart@linux.intel.com&gt;
CC: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
CC: Feng Tang &lt;feng.tang@intel.com&gt;
CC: Alexander Stein &lt;alexander.stein@systec-electronic.com&gt;
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge 3.4-rc4 into tty-next</title>
<updated>2012-04-23T16:39:23+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2012-04-23T16:39:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=10af77c193681398e5dbe830db181d86047fcd41'/>
<id>10af77c193681398e5dbe830db181d86047fcd41</id>
<content type='text'>
This resolves the merge problem with:
	drivers/tty/serial/pch_uart.c

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This resolves the merge problem with:
	drivers/tty/serial/pch_uart.c

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge 3.4-rc3 into tty-next</title>
<updated>2012-04-18T22:57:31+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2012-04-18T22:57:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=665ab0f3c8b8f86bb77b25285ac93870c7054d63'/>
<id>665ab0f3c8b8f86bb77b25285ac93870c7054d63</id>
<content type='text'>
This allows us to pick up some changes needed for other serial patches.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows us to pick up some changes needed for other serial patches.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pch_uart: Fix dma channel unallocated issue</title>
<updated>2012-04-18T22:19:50+00:00</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya.rohm@gmail.com</email>
</author>
<published>2012-04-12T01:47:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=af6d17cdc8c89aeb3101f0d27cd32fc0592b40b2'/>
<id>af6d17cdc8c89aeb3101f0d27cd32fc0592b40b2</id>
<content type='text'>
This driver anticipates pch_uart_verify_port() is not called
during installation.
However, actually pch_uart_verify_port() is called during
installation.
As a result, memory access violation occurs like below.

0. initial value: use_dma=0
1. starup()
    - dma channel is not allocated because use_dma=0
2. pch_uart_verify_port()
    - Set use_dma=1
3. UART processing acts DMA mode because use_dma=1
     - memory access violation occurs!

This patch fixes the issue.

Solution:
Whenever pch_uart_verify_port() is called and then
dma channel is not allocated, the channel should be allocated.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This driver anticipates pch_uart_verify_port() is not called
during installation.
However, actually pch_uart_verify_port() is called during
installation.
As a result, memory access violation occurs like below.

0. initial value: use_dma=0
1. starup()
    - dma channel is not allocated because use_dma=0
2. pch_uart_verify_port()
    - Set use_dma=1
3. UART processing acts DMA mode because use_dma=1
     - memory access violation occurs!

This patch fixes the issue.

Solution:
Whenever pch_uart_verify_port() is called and then
dma channel is not allocated, the channel should be allocated.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'tty-3.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty</title>
<updated>2012-04-12T22:36:33+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-04-12T22:36:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f4f9c1ac78c5c20150f03c370c2bd7eca44f5127'/>
<id>f4f9c1ac78c5c20150f03c370c2bd7eca44f5127</id>
<content type='text'>
Pull tty and serial fixes from Greg KH:
 "Here are some tty and serial fixes for 3.4-rc2.

  Most important here is the pl011 fix, which has been reported by about
  100 different people, which means more people use it than I expected
  :)

  There are also some 8250 driver reverts due to some problems reported
  by them.  And other minor fixes as well.

  Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;"

* tag 'tty-3.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  pch_uart: Add Kontron COMe-mTT10 uart clock quirk
  pch_uart: Fix MSI setting issue
  serial/8250_pci: add a "force background timer" flag and use it for the "kt" serial port
  Revert "serial/8250_pci: setup-quirk workaround for the kt serial controller"
  Revert "serial/8250_pci: init-quirk msi support for kt serial controller"
  tty/serial/omap: console can only be built-in
  serial: samsung: fix omission initialize ulcon in reset port fn()
  printk(): add KERN_CONT where needed in hpet and vt code
  tty/serial: atmel_serial: fix RS485 half-duplex problem
  tty: serial: altera_uart: Check for NULL platform_data in probe.
  isdn/gigaset: use gig_dbg() for debugging output
  omap-serial: Fix the error handling in the omap_serial probe
  serial: PL011: move interrupt clearing
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull tty and serial fixes from Greg KH:
 "Here are some tty and serial fixes for 3.4-rc2.

  Most important here is the pl011 fix, which has been reported by about
  100 different people, which means more people use it than I expected
  :)

  There are also some 8250 driver reverts due to some problems reported
  by them.  And other minor fixes as well.

  Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;"

* tag 'tty-3.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  pch_uart: Add Kontron COMe-mTT10 uart clock quirk
  pch_uart: Fix MSI setting issue
  serial/8250_pci: add a "force background timer" flag and use it for the "kt" serial port
  Revert "serial/8250_pci: setup-quirk workaround for the kt serial controller"
  Revert "serial/8250_pci: init-quirk msi support for kt serial controller"
  tty/serial/omap: console can only be built-in
  serial: samsung: fix omission initialize ulcon in reset port fn()
  printk(): add KERN_CONT where needed in hpet and vt code
  tty/serial: atmel_serial: fix RS485 half-duplex problem
  tty: serial: altera_uart: Check for NULL platform_data in probe.
  isdn/gigaset: use gig_dbg() for debugging output
  omap-serial: Fix the error handling in the omap_serial probe
  serial: PL011: move interrupt clearing
</pre>
</div>
</content>
</entry>
<entry>
<title>pch_uart: Fix duplicate memory release issue</title>
<updated>2012-04-09T19:08:42+00:00</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya.rohm@gmail.com</email>
</author>
<published>2012-03-26T05:43:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ef4f9d4f09265b60fcb6bfa31a614ea84a72b7a8'/>
<id>ef4f9d4f09265b60fcb6bfa31a614ea84a72b7a8</id>
<content type='text'>
Add initialize variable to prevent duplicate free memory.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add initialize variable to prevent duplicate free memory.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
