<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/tty/hvc/hvc_console.c, branch v5.6-rc5</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>tty: hvc: hvc_write() fix break condition</title>
<updated>2018-09-10T16:04:31+00:00</updated>
<author>
<name>Nicholas Piggin</name>
<email>npiggin@gmail.com</email>
</author>
<published>2018-09-09T05:39:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7f2bf7840b74a160f908db83bc8829f8de10629b'/>
<id>7f2bf7840b74a160f908db83bc8829f8de10629b</id>
<content type='text'>
Commit 550ddadcc758 ("tty: hvc: hvc_write() may sleep") broke the
termination condition in case the driver stops accepting characters.
This can result in unnecessary polling of the busy driver.

Restore it by testing the hvc_push return code.

Tested-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Tested-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;
Tested-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;
Signed-off-by: Nicholas Piggin &lt;npiggin@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>
Commit 550ddadcc758 ("tty: hvc: hvc_write() may sleep") broke the
termination condition in case the driver stops accepting characters.
This can result in unnecessary polling of the busy driver.

Restore it by testing the hvc_push return code.

Tested-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Tested-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;
Tested-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;
Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: hvc: hvc_poll() fix read loop batching</title>
<updated>2018-09-10T16:04:31+00:00</updated>
<author>
<name>Nicholas Piggin</name>
<email>npiggin@gmail.com</email>
</author>
<published>2018-09-09T05:39:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=68b2fc714fb1e08385f9c810d84f06affd007350'/>
<id>68b2fc714fb1e08385f9c810d84f06affd007350</id>
<content type='text'>
Commit ec97eaad1383 ("tty: hvc: hvc_poll() break hv read loop")
removes get_chars batching entirely, which slows down large console
operations like paste -- virtio console "feels worse than a 9600 baud
serial line," reports Matteo.

This adds back batching in a more latency friendly way. If the caller
can sleep then we try to fill the entire flip buffer, releasing the
lock and scheduling between each iteration. If it can not sleep, then
batches are limited to 128 bytes. Matteo confirms this fixes the
performance problem.

Latency testing the powerpc OPAL console with OpenBMC UART with a
large paste shows about 0.25ms latency, which seems reasonable. 10ms
latencies were typical for this case before the latency breaking work,
so we still see most of the benefit.

  kopald-1204    0d.h.    5us : hvc_poll &lt;-hvc_handle_interrupt
  kopald-1204    0d.h.    5us : __hvc_poll &lt;-hvc_handle_interrupt
  kopald-1204    0d.h.    5us : _raw_spin_lock_irqsave &lt;-__hvc_poll
  kopald-1204    0d.h.    5us : tty_port_tty_get &lt;-__hvc_poll
  kopald-1204    0d.h.    6us : _raw_spin_lock_irqsave &lt;-tty_port_tty_get
  kopald-1204    0d.h.    6us : _raw_spin_unlock_irqrestore &lt;-tty_port_tty_get
  kopald-1204    0d.h.    6us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.    7us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.    7us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.   36us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   36us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   36us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.   65us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   65us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   66us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.   94us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   95us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   95us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  124us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  124us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  125us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  154us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  154us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  154us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  183us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  184us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  184us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  213us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  213us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  213us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  242us : _raw_spin_unlock_irqrestore &lt;-__hvc_poll
  kopald-1204    0d.h.  242us : tty_flip_buffer_push &lt;-__hvc_poll
  kopald-1204    0d.h.  243us : queue_work_on &lt;-tty_flip_buffer_push
  kopald-1204    0d.h.  243us : tty_kref_put &lt;-__hvc_poll
  kopald-1204    0d.h.  243us : hvc_kick &lt;-hvc_handle_interrupt
  kopald-1204    0d.h.  243us : wake_up_process &lt;-hvc_kick
  kopald-1204    0d.h.  244us : try_to_wake_up &lt;-hvc_kick
  kopald-1204    0d.h.  244us : _raw_spin_lock_irqsave &lt;-try_to_wake_up
  kopald-1204    0d.h.  244us : _raw_spin_unlock_irqrestore &lt;-try_to_wake_up

Reported-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Tested-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Tested-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;
Tested-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;
Signed-off-by: Nicholas Piggin &lt;npiggin@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>
Commit ec97eaad1383 ("tty: hvc: hvc_poll() break hv read loop")
removes get_chars batching entirely, which slows down large console
operations like paste -- virtio console "feels worse than a 9600 baud
serial line," reports Matteo.

This adds back batching in a more latency friendly way. If the caller
can sleep then we try to fill the entire flip buffer, releasing the
lock and scheduling between each iteration. If it can not sleep, then
batches are limited to 128 bytes. Matteo confirms this fixes the
performance problem.

Latency testing the powerpc OPAL console with OpenBMC UART with a
large paste shows about 0.25ms latency, which seems reasonable. 10ms
latencies were typical for this case before the latency breaking work,
so we still see most of the benefit.

  kopald-1204    0d.h.    5us : hvc_poll &lt;-hvc_handle_interrupt
  kopald-1204    0d.h.    5us : __hvc_poll &lt;-hvc_handle_interrupt
  kopald-1204    0d.h.    5us : _raw_spin_lock_irqsave &lt;-__hvc_poll
  kopald-1204    0d.h.    5us : tty_port_tty_get &lt;-__hvc_poll
  kopald-1204    0d.h.    6us : _raw_spin_lock_irqsave &lt;-tty_port_tty_get
  kopald-1204    0d.h.    6us : _raw_spin_unlock_irqrestore &lt;-tty_port_tty_get
  kopald-1204    0d.h.    6us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.    7us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.    7us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.   36us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   36us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   36us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.   65us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   65us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   66us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.   94us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   95us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.   95us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  124us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  124us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  125us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  154us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  154us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  154us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  183us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  184us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  184us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  213us : tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  213us : __tty_buffer_request_room &lt;-__hvc_poll
  kopald-1204    0d.h.  213us+: opal_get_chars &lt;-__hvc_poll
  kopald-1204    0d.h.  242us : _raw_spin_unlock_irqrestore &lt;-__hvc_poll
  kopald-1204    0d.h.  242us : tty_flip_buffer_push &lt;-__hvc_poll
  kopald-1204    0d.h.  243us : queue_work_on &lt;-tty_flip_buffer_push
  kopald-1204    0d.h.  243us : tty_kref_put &lt;-__hvc_poll
  kopald-1204    0d.h.  243us : hvc_kick &lt;-hvc_handle_interrupt
  kopald-1204    0d.h.  243us : wake_up_process &lt;-hvc_kick
  kopald-1204    0d.h.  244us : try_to_wake_up &lt;-hvc_kick
  kopald-1204    0d.h.  244us : _raw_spin_lock_irqsave &lt;-try_to_wake_up
  kopald-1204    0d.h.  244us : _raw_spin_unlock_irqrestore &lt;-try_to_wake_up

Reported-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Tested-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Tested-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;
Tested-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;
Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: hvc: hvc_poll() fix read loop hang</title>
<updated>2018-09-10T16:04:31+00:00</updated>
<author>
<name>Nicholas Piggin</name>
<email>npiggin@gmail.com</email>
</author>
<published>2018-09-09T05:39:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6e7f6b82c60afb46ff71c2127421c66207966d6d'/>
<id>6e7f6b82c60afb46ff71c2127421c66207966d6d</id>
<content type='text'>
Commit ec97eaad1383 ("tty: hvc: hvc_poll() break hv read loop") causes
the virtio console to hang at times (e.g., if you paste a bunch of
characters to it.

The reason is that get_chars must return 0 before we can be sure the
driver will kick or poll input again, but this change only scheduled a
poll if get_chars had returned a full count. Change this to poll on
any &gt; 0 count.

Reported-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Reported-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;
Tested-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Tested-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;
Tested-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;
Signed-off-by: Nicholas Piggin &lt;npiggin@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>
Commit ec97eaad1383 ("tty: hvc: hvc_poll() break hv read loop") causes
the virtio console to hang at times (e.g., if you paste a bunch of
characters to it.

The reason is that get_chars must return 0 before we can be sure the
driver will kick or poll input again, but this change only scheduled a
poll if get_chars had returned a full count. Change this to poll on
any &gt; 0 count.

Reported-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Reported-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;
Tested-by: Matteo Croce &lt;mcroce@redhat.com&gt;
Tested-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;
Tested-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;
Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: hvc: introduce the hv_ops.flush operation for hvc drivers</title>
<updated>2018-07-23T10:13:20+00:00</updated>
<author>
<name>Nicholas Piggin</name>
<email>npiggin@gmail.com</email>
</author>
<published>2018-04-30T14:55:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9f65b81f36e31563c5a5e4df3b3b8bc7550b6030'/>
<id>9f65b81f36e31563c5a5e4df3b3b8bc7550b6030</id>
<content type='text'>
Use .flush to wait for drivers to flush their console outside of
the spinlock, to reduce lock/irq latencies.

Flush the hvc console driver after each write, which can help
messages make it out to the console after a crash.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use .flush to wait for drivers to flush their console outside of
the spinlock, to reduce lock/irq latencies.

Flush the hvc console driver after each write, which can help
messages make it out to the console after a crash.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: hvc: hvc_write() may sleep</title>
<updated>2018-07-23T10:12:32+00:00</updated>
<author>
<name>Nicholas Piggin</name>
<email>npiggin@gmail.com</email>
</author>
<published>2018-04-30T14:55:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=550ddadcc7580ec2a6c22d4ed04291bc6e2428fb'/>
<id>550ddadcc7580ec2a6c22d4ed04291bc6e2428fb</id>
<content type='text'>
Rework the hvc_write loop to drop and re-take the spinlock on each
iteration, add a cond_resched. Don't bother with an initial hvc_push
initially, which makes the logic simpler -- just do a hvc_push on
each time around the loop.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rework the hvc_write loop to drop and re-take the spinlock on each
iteration, add a cond_resched. Don't bother with an initial hvc_push
initially, which makes the logic simpler -- just do a hvc_push on
each time around the loop.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: hvc: hvc_poll() may sleep</title>
<updated>2018-07-23T10:12:12+00:00</updated>
<author>
<name>Nicholas Piggin</name>
<email>npiggin@gmail.com</email>
</author>
<published>2018-04-30T14:55:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cfb5946b55f1dfd19e042feae1fbff6041e25a98'/>
<id>cfb5946b55f1dfd19e042feae1fbff6041e25a98</id>
<content type='text'>
Introduce points where hvc_poll drops the lock, enables interrupts,
and reschedules.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce points where hvc_poll drops the lock, enables interrupts,
and reschedules.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: hvc: hvc_poll() break hv read loop</title>
<updated>2018-07-23T10:11:55+00:00</updated>
<author>
<name>Nicholas Piggin</name>
<email>npiggin@gmail.com</email>
</author>
<published>2018-04-30T14:55:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ec97eaad1383ab2500fcf9a07ade6044fbcc67f5'/>
<id>ec97eaad1383ab2500fcf9a07ade6044fbcc67f5</id>
<content type='text'>
Avoid looping with the spinlock held while there is read data
being returned from the hv driver. Instead note if the entire
size returned by tty_buffer_request_room was read, and request
another read poll.

This limits the critical section lengths, and provides more
even service to other consoles in case there is a pathological
condition.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Avoid looping with the spinlock held while there is read data
being returned from the hv driver. Instead note if the entire
size returned by tty_buffer_request_room was read, and request
another read poll.

This limits the critical section lengths, and provides more
even service to other consoles in case there is a pathological
condition.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: hvc: use mutex instead of spinlock for hvc_structs lock</title>
<updated>2018-07-23T10:07:53+00:00</updated>
<author>
<name>Nicholas Piggin</name>
<email>npiggin@gmail.com</email>
</author>
<published>2018-04-30T14:55:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a9bf5c8a271b9a954709b7ada1bd258f5cadf7ff'/>
<id>a9bf5c8a271b9a954709b7ada1bd258f5cadf7ff</id>
<content type='text'>
This allows hvc operations to sleep under the lock.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows hvc operations to sleep under the lock.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: hvc: Remove redundant license text</title>
<updated>2017-11-08T12:08:12+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2017-11-06T17:11:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a9f96f014f36cc872d6d235787963ba90e101448'/>
<id>a9f96f014f36cc872d6d235787963ba90e101448</id>
<content type='text'>
Now that the SPDX tag is in all tty files, that identifies the license
in a specific and legally-defined manner.  So the extra GPL text wording
can be removed as it is no longer needed at all.

This is done on a quest to remove the 700+ different ways that files in
the kernel describe the GPL license text.  And there's unneeded stuff
like the address (sometimes incorrect) for the FSF which is never
needed.

No copyright headers or other non-license-description text was removed.

Cc: Jiri Slaby &lt;jslaby@suse.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Cc: Chris Metcalf &lt;cmetcalf@mellanox.com&gt;
Acked-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.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>
Now that the SPDX tag is in all tty files, that identifies the license
in a specific and legally-defined manner.  So the extra GPL text wording
can be removed as it is no longer needed at all.

This is done on a quest to remove the 700+ different ways that files in
the kernel describe the GPL license text.  And there's unneeded stuff
like the address (sometimes incorrect) for the FSF which is never
needed.

No copyright headers or other non-license-description text was removed.

Cc: Jiri Slaby &lt;jslaby@suse.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Cc: Chris Metcalf &lt;cmetcalf@mellanox.com&gt;
Acked-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: add SPDX identifiers to all remaining files in drivers/tty/</title>
<updated>2017-11-08T12:08:12+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2017-11-06T17:11:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e3b3d0f549c1d19b94e6ac55c66643166ea649ef'/>
<id>e3b3d0f549c1d19b94e6ac55c66643166ea649ef</id>
<content type='text'>
It's good to have SPDX identifiers in all files to make it easier to
audit the kernel tree for correct licenses.

Update the drivers/tty files files with the correct SPDX license
identifier based on the license text in the file itself.  The SPDX
identifier is a legally binding shorthand, which can be used instead of
the full boiler plate text.

This work is based on a script and data from Thomas Gleixner, Philippe
Ombredanne, and Kate Stewart.

Cc: Jiri Slaby &lt;jslaby@suse.com&gt;
Cc: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Cc: Chris Metcalf &lt;cmetcalf@mellanox.com&gt;
Cc: Jiri Kosina &lt;jikos@kernel.org&gt;
Cc: David Sterba &lt;dsterba@suse.com&gt;
Cc: James Hogan &lt;jhogan@kernel.org&gt;
Cc: Rob Herring &lt;robh@kernel.org&gt;
Cc: Eric Anholt &lt;eric@anholt.net&gt;
Cc: Stefan Wahren &lt;stefan.wahren@i2se.com&gt;
Cc: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Cc: Ray Jui &lt;rjui@broadcom.com&gt;
Cc: Scott Branden &lt;sbranden@broadcom.com&gt;
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: "James E.J. Bottomley" &lt;jejb@parisc-linux.org&gt;
Cc: Helge Deller &lt;deller@gmx.de&gt;
Cc: Joachim Eastwood &lt;manabian@gmail.com&gt;
Cc: Matthias Brugger &lt;matthias.bgg@gmail.com&gt;
Cc: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Cc: Tobias Klauser &lt;tklauser@distanz.ch&gt;
Cc: Russell King &lt;linux@armlinux.org.uk&gt;
Cc: Vineet Gupta &lt;vgupta@synopsys.com&gt;
Cc: Richard Genoud &lt;richard.genoud@gmail.com&gt;
Cc: Alexander Shiyan &lt;shc_work@mail.ru&gt;
Cc: Baruch Siach &lt;baruch@tkos.co.il&gt;
Cc: "Maciej W. Rozycki" &lt;macro@linux-mips.org&gt;
Cc: "Uwe Kleine-König" &lt;kernel@pengutronix.de&gt;
Cc: Pat Gefre &lt;pfg@sgi.com&gt;
Cc: "Guilherme G. Piccoli" &lt;gpiccoli@linux.vnet.ibm.com&gt;
Cc: Jason Wessel &lt;jason.wessel@windriver.com&gt;
Cc: Vladimir Zapolskiy &lt;vz@mleia.com&gt;
Cc: Sylvain Lemieux &lt;slemieux.tyco@gmail.com&gt;
Cc: Carlo Caione &lt;carlo@caione.org&gt;
Cc: Kevin Hilman &lt;khilman@baylibre.com&gt;
Cc: Liviu Dudau &lt;liviu.dudau@arm.com&gt;
Cc: Sudeep Holla &lt;sudeep.holla@arm.com&gt;
Cc: Lorenzo Pieralisi &lt;lorenzo.pieralisi@arm.com&gt;
Cc: Andy Gross &lt;andy.gross@linaro.org&gt;
Cc: David Brown &lt;david.brown@linaro.org&gt;
Cc: "Andreas Färber" &lt;afaerber@suse.de&gt;
Cc: Kevin Cernekee &lt;cernekee@gmail.com&gt;
Cc: Laxman Dewangan &lt;ldewangan@nvidia.com&gt;
Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Cc: Jonathan Hunter &lt;jonathanh@nvidia.com&gt;
Cc: Barry Song &lt;baohua@kernel.org&gt;
Cc: Patrice Chotard &lt;patrice.chotard@st.com&gt;
Cc: Maxime Coquelin &lt;mcoquelin.stm32@gmail.com&gt;
Cc: Alexandre Torgue &lt;alexandre.torgue@st.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: Peter Korsgaard &lt;jacmet@sunsite.dk&gt;
Cc: Timur Tabi &lt;timur@tabi.org&gt;
Cc: Tony Prisk &lt;linux@prisktech.co.nz&gt;
Cc: Michal Simek &lt;michal.simek@xilinx.com&gt;
Cc: "Sören Brinkmann" &lt;soren.brinkmann@xilinx.com&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Kate Stewart &lt;kstewart@linuxfoundation.org&gt;
Cc: Philippe Ombredanne &lt;pombredanne@nexb.com&gt;
Cc: Jiri Slaby &lt;jslaby@suse.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>
It's good to have SPDX identifiers in all files to make it easier to
audit the kernel tree for correct licenses.

Update the drivers/tty files files with the correct SPDX license
identifier based on the license text in the file itself.  The SPDX
identifier is a legally binding shorthand, which can be used instead of
the full boiler plate text.

This work is based on a script and data from Thomas Gleixner, Philippe
Ombredanne, and Kate Stewart.

Cc: Jiri Slaby &lt;jslaby@suse.com&gt;
Cc: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Cc: Chris Metcalf &lt;cmetcalf@mellanox.com&gt;
Cc: Jiri Kosina &lt;jikos@kernel.org&gt;
Cc: David Sterba &lt;dsterba@suse.com&gt;
Cc: James Hogan &lt;jhogan@kernel.org&gt;
Cc: Rob Herring &lt;robh@kernel.org&gt;
Cc: Eric Anholt &lt;eric@anholt.net&gt;
Cc: Stefan Wahren &lt;stefan.wahren@i2se.com&gt;
Cc: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Cc: Ray Jui &lt;rjui@broadcom.com&gt;
Cc: Scott Branden &lt;sbranden@broadcom.com&gt;
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: "James E.J. Bottomley" &lt;jejb@parisc-linux.org&gt;
Cc: Helge Deller &lt;deller@gmx.de&gt;
Cc: Joachim Eastwood &lt;manabian@gmail.com&gt;
Cc: Matthias Brugger &lt;matthias.bgg@gmail.com&gt;
Cc: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Cc: Tobias Klauser &lt;tklauser@distanz.ch&gt;
Cc: Russell King &lt;linux@armlinux.org.uk&gt;
Cc: Vineet Gupta &lt;vgupta@synopsys.com&gt;
Cc: Richard Genoud &lt;richard.genoud@gmail.com&gt;
Cc: Alexander Shiyan &lt;shc_work@mail.ru&gt;
Cc: Baruch Siach &lt;baruch@tkos.co.il&gt;
Cc: "Maciej W. Rozycki" &lt;macro@linux-mips.org&gt;
Cc: "Uwe Kleine-König" &lt;kernel@pengutronix.de&gt;
Cc: Pat Gefre &lt;pfg@sgi.com&gt;
Cc: "Guilherme G. Piccoli" &lt;gpiccoli@linux.vnet.ibm.com&gt;
Cc: Jason Wessel &lt;jason.wessel@windriver.com&gt;
Cc: Vladimir Zapolskiy &lt;vz@mleia.com&gt;
Cc: Sylvain Lemieux &lt;slemieux.tyco@gmail.com&gt;
Cc: Carlo Caione &lt;carlo@caione.org&gt;
Cc: Kevin Hilman &lt;khilman@baylibre.com&gt;
Cc: Liviu Dudau &lt;liviu.dudau@arm.com&gt;
Cc: Sudeep Holla &lt;sudeep.holla@arm.com&gt;
Cc: Lorenzo Pieralisi &lt;lorenzo.pieralisi@arm.com&gt;
Cc: Andy Gross &lt;andy.gross@linaro.org&gt;
Cc: David Brown &lt;david.brown@linaro.org&gt;
Cc: "Andreas Färber" &lt;afaerber@suse.de&gt;
Cc: Kevin Cernekee &lt;cernekee@gmail.com&gt;
Cc: Laxman Dewangan &lt;ldewangan@nvidia.com&gt;
Cc: Thierry Reding &lt;thierry.reding@gmail.com&gt;
Cc: Jonathan Hunter &lt;jonathanh@nvidia.com&gt;
Cc: Barry Song &lt;baohua@kernel.org&gt;
Cc: Patrice Chotard &lt;patrice.chotard@st.com&gt;
Cc: Maxime Coquelin &lt;mcoquelin.stm32@gmail.com&gt;
Cc: Alexandre Torgue &lt;alexandre.torgue@st.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: Peter Korsgaard &lt;jacmet@sunsite.dk&gt;
Cc: Timur Tabi &lt;timur@tabi.org&gt;
Cc: Tony Prisk &lt;linux@prisktech.co.nz&gt;
Cc: Michal Simek &lt;michal.simek@xilinx.com&gt;
Cc: "Sören Brinkmann" &lt;soren.brinkmann@xilinx.com&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Kate Stewart &lt;kstewart@linuxfoundation.org&gt;
Cc: Philippe Ombredanne &lt;pombredanne@nexb.com&gt;
Cc: Jiri Slaby &lt;jslaby@suse.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
