<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux, branch v3.7.8</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/?h=v3.7.8</id>
<link rel='self' href='https://git.amat.us/linux/atom/?h=v3.7.8'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-02-14T18:57:59Z</updated>
<entry>
<title>Linux 3.7.8</title>
<updated>2013-02-14T18:57:59Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2013-02-14T18:57:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7773647c3ea250586c2ee44559f6f1bdc2a5c885'/>
<id>urn:sha1:7773647c3ea250586c2ee44559f6f1bdc2a5c885</id>
<content type='text'>
</content>
</entry>
<entry>
<title>drm/nouveau: add lockdep annotations</title>
<updated>2013-02-14T18:48:37Z</updated>
<author>
<name>Marcin Slusarz</name>
<email>marcin.slusarz@gmail.com</email>
</author>
<published>2013-02-04T20:52:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=330b8abd83d4af378953af708cc10ddf3a5877fd'/>
<id>urn:sha1:330b8abd83d4af378953af708cc10ddf3a5877fd</id>
<content type='text'>
commit 5f97ab913cf0fbc378ea8ffc3ee66f4890d11c55 upstream.

1) Lockdep thinks all nouveau subdevs belong to the same class and can be
locked in arbitrary order, which is not true (at least in general case).
Tell it to distinguish subdevs by (o)class type.
2) DRM client can be locked under user client lock - tell lockdep to put
DRM client lock in a separate class.

Reported-by: Arend van Spriel &lt;arend@broadcom.com&gt;
Reported-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Reported-by: Maarten Lankhorst &lt;maarten.lankhorst@canonical.com&gt;
Reported-by: Daniel J Blueman &lt;daniel@quora.org&gt;
Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com&gt;
Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>net: splice: fix __splice_segment()</title>
<updated>2013-02-14T18:48:37Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-01-11T14:46:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c7c40b35837b6ea218a5aec82169c93bdc68235f'/>
<id>urn:sha1:c7c40b35837b6ea218a5aec82169c93bdc68235f</id>
<content type='text'>
[ Upstream commit bc9540c637c3d8712ccbf9dcf28621f380ed5e64 ]

commit 9ca1b22d6d2 (net: splice: avoid high order page splitting)
forgot that skb-&gt;head could need a copy into several page frags.

This could be the case for loopback traffic mostly.

Also remove now useless skb argument from linear_to_page()
and __splice_segment() prototypes.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Willy Tarreau &lt;w@1wt.eu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>net: splice: avoid high order page splitting</title>
<updated>2013-02-14T18:48:37Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-01-05T21:31:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4dd53a6c90a9045524888de2930b56b7833175b2'/>
<id>urn:sha1:4dd53a6c90a9045524888de2930b56b7833175b2</id>
<content type='text'>
[ Upstream commit 82bda6195615891181115f579a480aa5001ce7e9 ]

splice() can handle pages of any order, but network code tries hard to
split them in PAGE_SIZE units. Not quite successfully anyway, as
__splice_segment() assumed poff &lt; PAGE_SIZE. This is true for
the skb-&gt;data part, not necessarily for the fragments.

This patch removes this logic to give the pages as they are in the skb.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Willy Tarreau &lt;w@1wt.eu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: fix splice() and tcp collapsing interaction</title>
<updated>2013-02-14T18:48:36Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-01-09T20:59:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0f0ac9b6a73fe6025723fa4a51c8da2ccead6bff'/>
<id>urn:sha1:0f0ac9b6a73fe6025723fa4a51c8da2ccead6bff</id>
<content type='text'>
[ Upstream commit f26845b43c75d3f32f98d194c1327b5b1e6b3fb0 ]

Under unusual circumstances, TCP collapse can split a big GRO TCP packet
while its being used in a splice(socket-&gt;pipe) operation.

skb_splice_bits() releases the socket lock before calling
splice_to_pipe().

[ 1081.353685] WARNING: at net/ipv4/tcp.c:1330 tcp_cleanup_rbuf+0x4d/0xfc()
[ 1081.371956] Hardware name: System x3690 X5 -[7148Z68]-
[ 1081.391820] cleanup rbuf bug: copied AD3BCF1 seq AD370AF rcvnxt AD3CF13

To fix this problem, we must eat skbs in tcp_recv_skb().

Remove the inline keyword from tcp_recv_skb() definition since
it has three call sites.

Reported-by: Christian Becker &lt;c.becker@traviangames.com&gt;
Cc: Willy Tarreau &lt;w@1wt.eu&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Tested-by: Willy Tarreau &lt;w@1wt.eu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: splice: fix an infinite loop in tcp_read_sock()</title>
<updated>2013-02-14T18:48:36Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-01-10T07:06:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=09ea1383126d942a993b0895cec16e0961db5af9'/>
<id>urn:sha1:09ea1383126d942a993b0895cec16e0961db5af9</id>
<content type='text'>
[ Upstream commit ff905b1e4aad8ccbbb0d42f7137f19482742ff07 ]

commit 02275a2ee7c0 (tcp: don't abort splice() after small transfers)
added a regression.

[   83.843570] INFO: rcu_sched self-detected stall on CPU
[   83.844575] INFO: rcu_sched detected stalls on CPUs/tasks: { 6} (detected by 0, t=21002 jiffies, g=4457, c=4456, q=13132)
[   83.844582] Task dump for CPU 6:
[   83.844584] netperf         R  running task        0  8966   8952 0x0000000c
[   83.844587]  0000000000000000 0000000000000006 0000000000006c6c 0000000000000000
[   83.844589]  000000000000006c 0000000000000096 ffffffff819ce2bc ffffffffffffff10
[   83.844592]  ffffffff81088679 0000000000000010 0000000000000246 ffff880c4b9ddcd8
[   83.844594] Call Trace:
[   83.844596]  [&lt;ffffffff81088679&gt;] ? vprintk_emit+0x1c9/0x4c0
[   83.844601]  [&lt;ffffffff815ad449&gt;] ? schedule+0x29/0x70
[   83.844606]  [&lt;ffffffff81537bd2&gt;] ? tcp_splice_data_recv+0x42/0x50
[   83.844610]  [&lt;ffffffff8153beaa&gt;] ? tcp_read_sock+0xda/0x260
[   83.844613]  [&lt;ffffffff81537b90&gt;] ? tcp_prequeue_process+0xb0/0xb0
[   83.844615]  [&lt;ffffffff8153c0f0&gt;] ? tcp_splice_read+0xc0/0x250
[   83.844618]  [&lt;ffffffff814dc0c2&gt;] ? sock_splice_read+0x22/0x30
[   83.844622]  [&lt;ffffffff811b820b&gt;] ? do_splice_to+0x7b/0xa0
[   83.844627]  [&lt;ffffffff811ba4bc&gt;] ? sys_splice+0x59c/0x5d0
[   83.844630]  [&lt;ffffffff8119745b&gt;] ? putname+0x2b/0x40
[   83.844633]  [&lt;ffffffff8118bcb4&gt;] ? do_sys_open+0x174/0x1e0
[   83.844636]  [&lt;ffffffff815b6202&gt;] ? system_call_fastpath+0x16/0x1b

if recv_actor() returns 0, we should stop immediately,
because looping wont give a chance to drain the pipe.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Willy Tarreau &lt;w@1wt.eu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: don't abort splice() after small transfers</title>
<updated>2013-02-14T18:48:36Z</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2012-12-02T11:49:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=301008f5b5a734d5d1ddd5c4a95d69812ae4c7e7'/>
<id>urn:sha1:301008f5b5a734d5d1ddd5c4a95d69812ae4c7e7</id>
<content type='text'>
[ Upstream commit 02275a2ee7c0ea475b6f4a6428f5df592bc9d30b ]

TCP coalescing added a regression in splice(socket-&gt;pipe) performance,
for some workloads because of the way tcp_read_sock() is implemented.

The reason for this is the break when (offset + 1 != skb-&gt;len).

As we released the socket lock, this condition is possible if TCP stack
added a fragment to the skb, which can happen with TCP coalescing.

So let's go back to the beginning of the loop when this happens,
to give a chance to splice more frags per system call.

Doing so fixes the issue and makes GRO 10% faster than LRO
on CPU-bound splice() workloads instead of the opposite.

Signed-off-by: Willy Tarreau &lt;w@1wt.eu&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: fix for zero packets_in_flight was too broad</title>
<updated>2013-02-14T18:48:35Z</updated>
<author>
<name>Ilpo Järvinen</name>
<email>ilpo.jarvinen@helsinki.fi</email>
</author>
<published>2013-02-04T02:14:25Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fa237a5c85320c6597caaea5dfeff5e2d995e666'/>
<id>urn:sha1:fa237a5c85320c6597caaea5dfeff5e2d995e666</id>
<content type='text'>
[ Upstream commit 6731d2095bd4aef18027c72ef845ab1087c3ba63 ]

There are transients during normal FRTO procedure during which
the packets_in_flight can go to zero between write_queue state
updates and firing the resulting segments out. As FRTO processing
occurs during that window the check must be more precise to
not match "spuriously" :-). More specificly, e.g., when
packets_in_flight is zero but FLAG_DATA_ACKED is true the problematic
branch that set cwnd into zero would not be taken and new segments
might be sent out later.

Signed-off-by: Ilpo Järvinen &lt;ilpo.jarvinen@helsinki.fi&gt;
Tested-by: Eric Dumazet &lt;edumazet@google.com&gt;
Acked-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: frto should not set snd_cwnd to 0</title>
<updated>2013-02-14T18:48:35Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-02-03T09:13:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b80440945d3644f4dcc1d0817e2f07d9c8d1ef8a'/>
<id>urn:sha1:b80440945d3644f4dcc1d0817e2f07d9c8d1ef8a</id>
<content type='text'>
[ Upstream commit 2e5f421211ff76c17130b4597bc06df4eeead24f ]

Commit 9dc274151a548 (tcp: fix ABC in tcp_slow_start())
uncovered a bug in FRTO code :
tcp_process_frto() is setting snd_cwnd to 0 if the number
of in flight packets is 0.

As Neal pointed out, if no packet is in flight we lost our
chance to disambiguate whether a loss timeout was spurious.

We should assume it was a proper loss.

Reported-by: Pasi Kärkkäinen &lt;pasik@iki.fi&gt;
Signed-off-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Ilpo Järvinen &lt;ilpo.jarvinen@helsinki.fi&gt;
Cc: Yuchung Cheng &lt;ycheng@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tcp: fix an infinite loop in tcp_slow_start()</title>
<updated>2013-02-14T18:48:34Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-02-02T05:23:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e90bb8480d31f54d1ccc12602e5800f7ff31dcc1'/>
<id>urn:sha1:e90bb8480d31f54d1ccc12602e5800f7ff31dcc1</id>
<content type='text'>
[ Upstream commit 973ec449bb4f2b8c514bacbcb4d9506fc31c8ce3 ]

Since commit 9dc274151a548 (tcp: fix ABC in tcp_slow_start()),
a nul snd_cwnd triggers an infinite loop in tcp_slow_start()

Avoid this infinite loop and log a one time error for further
analysis. FRTO code is suspected to cause this bug.

Reported-by: Pasi Kärkkäinen &lt;pasik@iki.fi&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Neal Cardwell &lt;ncardwell@google.com&gt;
Cc: Yuchung Cheng &lt;ycheng@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
