<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/tty, branch v3.2.15</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/tty?h=v3.2.15</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/tty?h=v3.2.15'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-04-02T16:53:10Z</updated>
<entry>
<title>serial: sh-sci: fix a race of DMA submit_tx on transfer</title>
<updated>2012-04-02T16:53:10Z</updated>
<author>
<name>Yoshii Takashi</name>
<email>takashi.yoshii.zj@renesas.com</email>
</author>
<published>2012-03-14T07:14:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=46979bfe3c1c2435f7f8190ff0c0994de3cfc471'/>
<id>urn:sha1:46979bfe3c1c2435f7f8190ff0c0994de3cfc471</id>
<content type='text'>
commit 49d4bcaddca977fffdea8b0b71f6e5da96dac78e upstream.

When DMA is enabled, sh-sci transfer begins with
 uart_start()
  sci_start_tx()
    if (cookie_tx &lt; 0) schedule_work()
Then, starts DMA when wq scheduled, -- (A)
 process_one_work()
  work_fn_rx()
   cookie_tx = desc-&gt;submit_tx()
And finishes when DMA transfer ends, -- (B)
 sci_dma_tx_complete()
  async_tx_ack()
  cookie_tx = -EINVAL
  (possible another schedule_work())

This A to B sequence is not reentrant, since controlling variables
(for example, cookie_tx above) are not queues nor lists. So, they
must be invoked as A B A B..., otherwise results in kernel crash.

To ensure the sequence, sci_start_tx() seems to test if cookie_tx &lt; 0
(represents "not used") to call schedule_work().
But cookie_tx will not be set (to a cookie, also means "used") until
in the middle of work queue scheduled function work_fn_tx().

This gap between the test and set allows the breakage of the sequence
under the very frequently call of uart_start().
Another gap between async_tx_ack() and another schedule_work() results
in the same issue, too.

This patch introduces a new condition "cookie_tx == 0" just to mark
it is "busy" and assign it within spin-locked region to fill the gaps.

Signed-off-by: Takashi Yoshii &lt;takashi.yoshii.zj@renesas.com&gt;
Reviewed-by: Guennadi Liakhovetski &lt;g.liakhovetski@gmx.de&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>TTY: Wrong unicode value copied in con_set_unimap()</title>
<updated>2012-04-02T16:52:31Z</updated>
<author>
<name>Liz Clark</name>
<email>liz.clark@hp.com</email>
</author>
<published>2012-03-15T17:33:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9d7203a1946813100a0623289df8c2bbbe832831'/>
<id>urn:sha1:9d7203a1946813100a0623289df8c2bbbe832831</id>
<content type='text'>
commit 4a4c61b7ce26bfc9d49ea4bd121d52114bad9f99 upstream.

Bugzilla 40012: PIO_UNIMAP bug: error updating Unicode-to-font map
https://bugzilla.kernel.org/show_bug.cgi?id=40012

The unicode font map for the virtual console is a 32x32x64 table which
allocates rows dynamically as entries are added.  The unicode value
increases sequentially and should count all entries even in empty
rows.  The defect is when copying the unicode font map in con_set_unimap(),
the unicode value is not incremented properly.  The wrong unicode value
is entered in the new font map.

Signed-off-by: Liz Clark &lt;liz.clark@hp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>tty: moxa: fix bit test in moxa_start()</title>
<updated>2012-04-02T16:52:31Z</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2012-03-07T10:05:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=676ba4178125f06e9bd1d0b539f5644f1cea31a5'/>
<id>urn:sha1:676ba4178125f06e9bd1d0b539f5644f1cea31a5</id>
<content type='text'>
commit 58112dfbfe02d803566a2c6c8bd97b5fa3c62cdc upstream.

This is supposed to be doing a shift before the comparison instead of
just doing a bitwise AND directly.  The current code means the start()
just returns without doing anything.

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Acked-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>tty/powerpc: early udbg consoles can't be modules</title>
<updated>2012-03-12T19:31:26Z</updated>
<author>
<name>Stephen Rothwell</name>
<email>sfr@canb.auug.org.au</email>
</author>
<published>2012-02-19T20:22:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c8db5a5fc6042f937df8034bb2ed5544574ac123'/>
<id>urn:sha1:c8db5a5fc6042f937df8034bb2ed5544574ac123</id>
<content type='text'>
commit f21c6d4a49179f91fd70a41382382f08c780d425 upstream.

Fixes these build errors:

ERROR: ".udbg_printf" [drivers/tty/ehv_bytechan.ko] undefined!
ERROR: ".register_early_udbg_console" [drivers/tty/ehv_bytechan.ko] undefined!
ERROR: "udbg_putc" [drivers/tty/ehv_bytechan.ko] undefined!

Cc: Timur Tabi &lt;timur@freescale.com&gt;
Signed-off-by: Stephen Rothwell &lt;sfr@canb.auug.org.au&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>drivers/tty/vt/vt_ioctl.c: fix KDFONTOP 32bit compatibility layer</title>
<updated>2012-02-13T19:16:52Z</updated>
<author>
<name>Samuel Thibault</name>
<email>samuel.thibault@ens-lyon.org</email>
</author>
<published>2012-02-03T23:37:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=58f75a56e37352b7dea174ee75f2ca52218370a7'/>
<id>urn:sha1:58f75a56e37352b7dea174ee75f2ca52218370a7</id>
<content type='text'>
commit cbcb8346054073d000ecac324763372d6abd44ac upstream.

KDFONTOP(GET) currently fails with EIO when being run in a 32bit userland
with a 64bit kernel if the font width is not 8.

This is because of the setting of the KD_FONT_FLAG_OLD flag, which makes
con_font_get return EIO in such case.

This flag should *not* be set for KDFONTOP, since it's actually the whole
point of this flag (see comment in con_font_set for instance).

Signed-off-by: Samuel Thibault &lt;samuel.thibault@ens-lyon.org&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Cc: Arthur Taylor &lt;art@ified.ca&gt;
Cc: Jiri Slaby &lt;jslaby@suse.cz&gt;
Cc: Jiri Olsa &lt;jolsa@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>jsm: Fixed EEH recovery error</title>
<updated>2012-02-03T17:22:07Z</updated>
<author>
<name>Lucas Kannebley Tavares</name>
<email>lucaskt@linux.vnet.ibm.com</email>
</author>
<published>2012-01-09T12:58:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=103e53a3d8d66aa7e7bc2521d705718325630946'/>
<id>urn:sha1:103e53a3d8d66aa7e7bc2521d705718325630946</id>
<content type='text'>
commit 26aa38cafae0dbef3b2fe75ea487c83313c36d45 upstream.

There was an error on the jsm driver that would cause it to be unable to
recover after a second error is detected.

At the first error, the device recovers properly:

[72521.485691] EEH: Detected PCI bus error on device 0003:02:00.0
[72521.485695] EEH: This PCI device has failed 1 times in the last hour:
...
[72532.035693] ttyn3 at MMIO 0x0 (irq = 49) is a jsm
[72532.105689] jsm: Port 3 added

However, at the second error, it cascades until EEH disables the device:

[72631.229549] Call Trace:
...
[72641.725687] jsm: Port 3 added
[72641.725695] EEH: Detected PCI bus error on device 0003:02:00.0
[72641.725698] EEH: This PCI device has failed 3 times in the last hour:

It was caused because the PCI state was not being saved after the first
restore. Therefore, at the second recovery the PCI state would not be
restored.

Signed-off-by: Lucas Kannebley Tavares &lt;lucaskt@linux.vnet.ibm.com&gt;
Signed-off-by: Breno Leitao &lt;brenohl@br.ibm.com&gt;
Acked-by: Thadeu Lima de Souza Cascardo &lt;cascardo@linux.vnet.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>serial: amba-pl011: lock console writes against interrupts</title>
<updated>2012-02-03T17:22:07Z</updated>
<author>
<name>Rabin Vincent</name>
<email>rabin.vincent@stericsson.com</email>
</author>
<published>2012-01-17T10:52:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=48aeab6f5551341a59275f88dff84c9fa7a19aff'/>
<id>urn:sha1:48aeab6f5551341a59275f88dff84c9fa7a19aff</id>
<content type='text'>
commit ef605fdb33883d687cff5ba75095a91b313b4966 upstream.

Protect against pl011_console_write() and the interrupt for
the console UART running concurrently on different CPUs.

Otherwise the console_write could spin for a long time
waiting for the UART to become not busy, while the other
CPU continuously services UART interrupts and keeps the
UART busy.

The checks for sysrq and oops_in_progress are taken
from 8250.c.

Signed-off-by: Rabin Vincent &lt;rabin.vincent@stericsson.com&gt;
Reviewed-by: Srinidhi Kasagar &lt;srinidhi.kasagar@stericsson.com&gt;
Reviewed-by: Bibek Basu &lt;bibek.basu@stericsson.com&gt;
Reviewed-by: Shreshtha Kumar Sahu &lt;shreshthakumar.sahu@stericsson.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>TTY: fix UV serial console regression</title>
<updated>2012-02-03T17:22:06Z</updated>
<author>
<name>Jiri Slaby</name>
<email>jslaby@suse.cz</email>
</author>
<published>2012-01-12T21:55:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1fe9bb4495f86700f62021cf1f048007af92483c'/>
<id>urn:sha1:1fe9bb4495f86700f62021cf1f048007af92483c</id>
<content type='text'>
commit 0eee50af5b13e00b3fb7a5fe8480419a71b8235d upstream.

Commit 74c2107759d (serial: Use block_til_ready helper) and its fixup
3f582b8c110 (serial: fix termios settings in open) introduced a
regression on UV systems. The serial eventually freezes while being
used. It's completely unpredictable and sometimes needs a heap of
traffic to happen first.

To reproduce this, yast installation was used as it turned out to be
pretty reliable in reproducing. Especially during installation process
where one doesn't have an SSH daemon running. And no monitor as the HW
is completely headless. So this was fun to find. Given the machine
doesn't boot on vanilla before 2.6.36 final. (And the commits above
are older.)

Unless there is some bad race in the code, the hardware seems to be
pretty broken. Otherwise pure MSR read should not cause such a bug,
or?

So to prevent the bug, revert to the old behavior. I.e. read modem
status only if we really have to -- for non-CLOCAL set serials.
Non-CLOCAL works on this hardware OK, I tried. See? I don't.

And document that shit.

Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
References: https://lkml.org/lkml/2011/12/6/573
References: https://bugzilla.novell.com/show_bug.cgi?id=718518
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>atmel_serial: fix spinlock lockup in RS485 code</title>
<updated>2012-01-12T19:29:35Z</updated>
<author>
<name>Claudio Scordino</name>
<email>claudio@evidence.eu.com</email>
</author>
<published>2011-12-16T14:08:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b71bb82900b7491f47a0360f14d23dc30646433d'/>
<id>urn:sha1:b71bb82900b7491f47a0360f14d23dc30646433d</id>
<content type='text'>
commit dbf1115d3f8c7052788aa4e6e46abd27f3b3eeba upstream.

Patch to fix a spinlock lockup in the driver that sometimes happens when the
tasklet starts.

Signed-off-by: Claudio Scordino &lt;claudio@evidence.eu.com&gt;
Signed-off-by: Dave Bender &lt;codehero@gmail.com&gt;
Tested-by: Dave Bender &lt;codehero@gmail.com&gt;
Acked-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>Merge branch 'tty-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty</title>
<updated>2011-11-22T04:36:46Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-11-22T04:36:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3b9abc7e48561b0b140ee267e190bc1031f82ff3'/>
<id>urn:sha1:3b9abc7e48561b0b140ee267e190bc1031f82ff3</id>
<content type='text'>
* 'tty-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  TTY: ldisc, wait for ldisc infinitely in hangup
  TTY: ldisc, move wait idle to caller
  TTY: ldisc, allow waiting for ldisc arbitrarily long
  Revert "tty/serial: Prevent drop of DCD on suspend for Tegra UARTs"
  RS485: fix inconsistencies in the meaning of some variables
  pch_uart: Fix DMA resource leak issue
  serial,mfd: Fix CMSPAR setup
  tty/serial: Prevent drop of DCD on suspend for Tegra UARTs
  pch_uart: Change company name OKI SEMICONDUCTOR to LAPIS Semiconductor
  pch_uart: Support new device LAPIS Semiconductor ML7831 IOH
  pch_uart: Fix hw-flow control issue
  tty: hvc_dcc: Fix duplicate character inputs
  jsm: Change maintainership
</content>
</entry>
</feed>
