<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/drivers, branch v3.18.18</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.18.18</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.18.18'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2015-07-05T14:13:00Z</updated>
<entry>
<title>mmc: sdhci-pxav3: do the mbus window configuration after enabling clocks</title>
<updated>2015-07-05T14:13:00Z</updated>
<author>
<name>Thomas Petazzoni</name>
<email>thomas.petazzoni@free-electrons.com</email>
</author>
<published>2014-12-31T10:54:10Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=a3759241250e4ef7872ac0727a3c2b8d6f379f8f'/>
<id>urn:sha1:a3759241250e4ef7872ac0727a3c2b8d6f379f8f</id>
<content type='text'>
[ upstream commit aa8165f914420f143476305a01894b017d3abe6b ]

In commit 5491ce3f79ee ("mmc: sdhci-pxav3: add support for the Armada
38x SDHCI controller"), the sdhci-pxav3 driver was extended to include
support for the SDHCI controller found in the Armada 38x
processor. This mainly involved adding some MBus window related
configuration.

However, this configuration is currently done too early in -&gt;probe():
it is done before clocks are enabled, while this configuration
involves touching the registers of the controller, which will hang the
SoC if the clock is disabled. It wasn't noticed until now because the
bootloader typically leaves gatable clocks enabled, but in situations
where we have a deferred probe (due to a CD GPIO that cannot be taken,
for example), then the probe will be re-tried later, after a clock
disable has been done in the exit path of the failed probe attempt of
the device. This second probe() will hang the system due to the clock
being disabled.

This can for example be produced on Armada 385 GP, which has a CD GPIO
connected to an I2C PCA9555. If the driver for the PCA9555 is not
compiled into the kernel, then we will have the following sequence of
events:

  1. The SDHCI probes
  2. It does the MBus configuration (which works, because the clock is
     left enabled by the bootloader)
  3. It enables the clock
  4. It tries to get the CD GPIO, which fails due to the driver being
     missing, so -EPROBE_DEFER is returned.
  5. Before returning -EPROBE_DEFER, the driver cleans up what was
     done, which includes disabling the clock.
  6. Later on, the SDHCI probe is tried again.
  7. It does the MBus configuration, which hangs because the clock is
     no longer enabled.

This commit does the obvious fix of doing the MBus configuration after
the clock has been enabled by the driver.

Fixes: 5491ce3f79ee ("mmc: sdhci-pxav3: add support for the Armada 38x SDHCI controller")
Cc: &lt;stable@vger.kernel.org&gt; # v3.15+
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
[jogo: rebased onto 3.18.17]
Signed-off-by: Jonas Gorski &lt;jogo@openwrt.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>bnx2x: fix lockdep splat</title>
<updated>2015-07-05T14:13:00Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2015-06-26T05:32:29Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=d05e615ef57d6ddf836a1d9d8b7b71f126582e0f'/>
<id>urn:sha1:d05e615ef57d6ddf836a1d9d8b7b71f126582e0f</id>
<content type='text'>
[ Upstream commit d53c66a5b80698620f7c9ba2372fff4017e987b8 ]

Michel reported following lockdep splat

[   44.718117] INFO: trying to register non-static key.
[   44.723081] the code is fine but needs lockdep annotation.
[   44.728559] turning off the locking correctness validator.
[   44.734036] CPU: 8 PID: 5483 Comm: ethtool Not tainted 4.1.0
[   44.770289] Call Trace:
[   44.772741]  [&lt;ffffffff816eb1cd&gt;] dump_stack+0x4c/0x65
[   44.777879]  [&lt;ffffffff8111d921&gt;] ? console_unlock+0x1f1/0x510
[   44.783708]  [&lt;ffffffff811121f5&gt;] __lock_acquire+0x1d05/0x1f10
[   44.789538]  [&lt;ffffffff8111370a&gt;] ? mark_held_locks+0x6a/0x90
[   44.795276]  [&lt;ffffffff81113835&gt;] ? trace_hardirqs_on_caller+0x105/0x1d0
[   44.801967]  [&lt;ffffffff8111390d&gt;] ? trace_hardirqs_on+0xd/0x10
[   44.807793]  [&lt;ffffffff811330fa&gt;] ? hrtimer_try_to_cancel+0x4a/0x250
[   44.814142]  [&lt;ffffffff81112ba6&gt;] lock_acquire+0xb6/0x290
[   44.819537]  [&lt;ffffffff810d6675&gt;] ? flush_work+0x5/0x280
[   44.824844]  [&lt;ffffffff810d66ad&gt;] flush_work+0x3d/0x280
[   44.830061]  [&lt;ffffffff810d6675&gt;] ? flush_work+0x5/0x280
[   44.835366]  [&lt;ffffffff816f3c43&gt;] ? schedule_hrtimeout_range+0x13/0x20
[   44.841889]  [&lt;ffffffff8112ec9b&gt;] ? usleep_range+0x4b/0x50
[   44.847365]  [&lt;ffffffff8111370a&gt;] ? mark_held_locks+0x6a/0x90
[   44.853102]  [&lt;ffffffff810d8585&gt;] ? __cancel_work_timer+0x105/0x1c0
[   44.859359]  [&lt;ffffffff81113835&gt;] ? trace_hardirqs_on_caller+0x105/0x1d0
[   44.866045]  [&lt;ffffffff810d851f&gt;] __cancel_work_timer+0x9f/0x1c0
[   44.872048]  [&lt;ffffffffa0010982&gt;] ? bnx2x_func_stop+0x42/0x90 [bnx2x]
[   44.878481]  [&lt;ffffffff810d8670&gt;] cancel_work_sync+0x10/0x20
[   44.884134]  [&lt;ffffffffa00259e5&gt;] bnx2x_chip_cleanup+0x245/0x730 [bnx2x]
[   44.890829]  [&lt;ffffffff8110ce02&gt;] ? up+0x32/0x50
[   44.895439]  [&lt;ffffffff811306b5&gt;] ? del_timer_sync+0x5/0xd0
[   44.901005]  [&lt;ffffffffa005596d&gt;] bnx2x_nic_unload+0x20d/0x8e0 [bnx2x]
[   44.907527]  [&lt;ffffffff811f1aef&gt;] ? might_fault+0x5f/0xb0
[   44.912921]  [&lt;ffffffffa005851c&gt;] bnx2x_reload_if_running+0x2c/0x50 [bnx2x]
[   44.919879]  [&lt;ffffffffa005a3c5&gt;] bnx2x_set_ringparam+0x2b5/0x460 [bnx2x]
[   44.926664]  [&lt;ffffffff815d498b&gt;] dev_ethtool+0x55b/0x1c40
[   44.932148]  [&lt;ffffffff815dfdc7&gt;] ? rtnl_lock+0x17/0x20
[   44.937364]  [&lt;ffffffff815e7f8b&gt;] dev_ioctl+0x17b/0x630
[   44.942582]  [&lt;ffffffff815abf8d&gt;] sock_do_ioctl+0x5d/0x70
[   44.947972]  [&lt;ffffffff815ac013&gt;] sock_ioctl+0x73/0x280
[   44.953192]  [&lt;ffffffff8124c1c8&gt;] do_vfs_ioctl+0x88/0x5b0
[   44.958587]  [&lt;ffffffff8110d0b3&gt;] ? up_read+0x23/0x40
[   44.963631]  [&lt;ffffffff812584cc&gt;] ? __fget_light+0x6c/0xa0
[   44.969105]  [&lt;ffffffff8124c781&gt;] SyS_ioctl+0x91/0xb0
[   44.974149]  [&lt;ffffffff816f4dd7&gt;] system_call_fastpath+0x12/0x6f

As bnx2x_init_ptp() is only called if bp-&gt;flags contains PTP_SUPPORTED,
we also need to guard bnx2x_stop_ptp() with same condition, otherwise
ptp_task workqueue is not initialized and kernel barfs on
cancel_work_sync()

Fixes: eeed018cbfa30 ("bnx2x: Add timestamping and PTP hardware clock support")
Reported-by: Michel Lespinasse &lt;walken@google.com&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Michal Kalderon &lt;Michal.Kalderon@qlogic.com&gt;
Cc: Ariel Elior &lt;Ariel.Elior@qlogic.com&gt;
Cc: Yuval Mintz &lt;Yuval.Mintz@qlogic.com&gt;
Cc: David Decotigny &lt;decot@google.com&gt;
Acked-by: Sony Chacko &lt;sony.chacko@qlogic.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>net: phy: fix phy link up when limiting speed via device tree</title>
<updated>2015-07-05T14:13:00Z</updated>
<author>
<name>Mugunthan V N</name>
<email>mugunthanvnm@ti.com</email>
</author>
<published>2015-06-25T16:51:02Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=f5437d06e0894775086485c97b9069e123fe6961'/>
<id>urn:sha1:f5437d06e0894775086485c97b9069e123fe6961</id>
<content type='text'>
[ Upstream commit eb686231fce3770299760f24fdcf5ad041f44153 ]

When limiting phy link speed using "max-speed" to 100mbps or less on a
giga bit phy, phy never completes auto negotiation and phy state
machine is held in PHY_AN. Fixing this issue by comparing the giga
bit advertise though phydev-&gt;supported doesn't have it but phy has
BMSR_ESTATEN set. So that auto negotiation is restarted as old and
new advertise are different and link comes up fine.

Signed-off-by: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>net/mlx4_en: Wake TX queues only when there's enough room</title>
<updated>2015-07-05T14:12:59Z</updated>
<author>
<name>Ido Shamay</name>
<email>idos@mellanox.com</email>
</author>
<published>2015-06-25T08:29:42Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=83152d40c1cf5db8b70e1d64b599b7b709063131'/>
<id>urn:sha1:83152d40c1cf5db8b70e1d64b599b7b709063131</id>
<content type='text'>
[ Upstream commit 488a9b48e398b157703766e2cd91ea45ac6997c5 ]

Indication of a single completed packet, marked by txbbs_skipped
being bigger then zero, in not enough in order to wake up a
stopped TX queue. The completed packet may contain a single TXBB,
while next packet to be sent (after the wake up) may have multiple
TXBBs (LSO/TSO packets for example), causing overflow in queue followed
by WQE corruption and TX queue timeout.
Instead, wake the stopped queue only when there's enough room for the
worst case (maximum sized WQE) packet that we should need to handle after
the queue is opened again.

Also created an helper routine - mlx4_en_is_tx_ring_full, which checks
if the current TX ring is full or not. It provides better code readability
and removes code duplication.

Signed-off-by: Ido Shamay &lt;idos@mellanox.com&gt;
Signed-off-by: Or Gerlitz &lt;ogerlitz@mellanox.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>hwmon: (mcp3021) Fix broken output scaling</title>
<updated>2015-07-05T14:12:56Z</updated>
<author>
<name>Stevens, Nick</name>
<email>Nick.Stevens@digi.com</email>
</author>
<published>2015-07-01T16:07:41Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=90606a14b76f0c601238afe1274b92b44f95b0bf'/>
<id>urn:sha1:90606a14b76f0c601238afe1274b92b44f95b0bf</id>
<content type='text'>
[ Upstream commit 347d7e45bd09ce09cbc30d5cea9de377eb22f55c ]

The mcp3021 scaling code is dividing the VDD (full-scale) value in
millivolts by the A2D resolution to obtain the scaling factor. When VDD
is 3300mV (the standard value) and the resolution is 12-bit (4096
divisions), the result is a scale factor of 3300/4096, which is always
one.  Effectively, the raw A2D reading is always being returned because
no scaling is applied.

This patch fixes the issue and simplifies the register-to-volts
calculation, removing the unneeded "output_scale" struct member.

Signed-off-by: Nick Stevens &lt;Nick.Stevens@digi.com&gt;
Cc: stable@vger.kernel.org # v3.10+
[Guenter Roeck: Dropped unnecessary value check]
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;

Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>rbd: use GFP_NOIO in rbd_obj_request_create()</title>
<updated>2015-07-05T14:12:55Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2015-06-24T14:24:33Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=3e3deab3acaf752c4de0daf0ec4cd8c47c3bab0e'/>
<id>urn:sha1:3e3deab3acaf752c4de0daf0ec4cd8c47c3bab0e</id>
<content type='text'>
[ Upstream commit 5a60e87603c4c533492c515b7f62578189b03c9c ]

rbd_obj_request_create() is called on the main I/O path, so we need to
use GFP_NOIO to make sure allocation doesn't blow back on us.  Not all
callers need this, but I'm still hardcoding the flag inside rather than
making it a parameter because a) this is going to stable, and b) those
callers shouldn't really use rbd_obj_request_create() and will be fixed
in the future.

More memory allocation fixes will follow.

Cc: stable@vger.kernel.org # 3.10+
Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
Reviewed-by: Alex Elder &lt;elder@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>net: mvneta: disable IP checksum with jumbo frames for Armada 370</title>
<updated>2015-07-05T14:12:55Z</updated>
<author>
<name>Simon Guinot</name>
<email>simon.guinot@sequanux.org</email>
</author>
<published>2015-06-30T14:20:22Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=5ac8dc120f4a11415a6619648ebabd8d7037c26d'/>
<id>urn:sha1:5ac8dc120f4a11415a6619648ebabd8d7037c26d</id>
<content type='text'>
[ Upstream commit b65657fc240ae6c1d2a1e62db9a0e61ac9631d7a ]

The Ethernet controller found in the Armada 370, 380 and 385 SoCs don't
support TCP/IP checksumming with frame sizes larger than 1600 bytes.

This patch fixes the issue by disabling the features NETIF_F_IP_CSUM and
NETIF_F_TSO for the Armada 370 and compatibles SoCs when the MTU is set
to a value greater than 1600 bytes.

Signed-off-by: Simon Guinot &lt;simon.guinot@sequanux.org&gt;
Fixes: c5aff18204da ("net: mvneta: driver for Marvell Armada 370/XP network unit")
Cc: &lt;stable@vger.kernel.org&gt; # v3.8+
Acked-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>net: mvneta: introduce compatible string "marvell, armada-xp-neta"</title>
<updated>2015-07-05T14:12:54Z</updated>
<author>
<name>Simon Guinot</name>
<email>simon.guinot@sequanux.org</email>
</author>
<published>2015-06-30T14:20:20Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=8b0a9f5b662f145031ba7d93d96fb40270f46ce7'/>
<id>urn:sha1:8b0a9f5b662f145031ba7d93d96fb40270f46ce7</id>
<content type='text'>
[ Upstream commit f522a975a8101895a85354b9c143f41b8248e71a ]

The mvneta driver supports the Ethernet IP found in the Armada 370, XP,
380 and 385 SoCs. Since at least one more hardware feature is available
for the Armada XP SoCs then a way to identify them is needed.

This patch introduces a new compatible string "marvell,armada-xp-neta".

Signed-off-by: Simon Guinot &lt;simon.guinot@sequanux.org&gt;
Fixes: c5aff18204da ("net: mvneta: driver for Marvell Armada 370/XP network unit")
Cc: &lt;stable@vger.kernel.org&gt; # v3.8+
Acked-by: Gregory CLEMENT &lt;gregory.clement@free-electrons.com&gt;
Acked-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>drm/radeon: SDMA fix hibernation (CI GPU family).</title>
<updated>2015-07-05T14:12:54Z</updated>
<author>
<name>Jérôme Glisse</name>
<email>jglisse@redhat.com</email>
</author>
<published>2015-06-19T14:32:16Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=4a6adec5806200e6930ab433f588ab776839cdc6'/>
<id>urn:sha1:4a6adec5806200e6930ab433f588ab776839cdc6</id>
<content type='text'>
[ Upstream commit 2ba8d1bb8f6b589037f7db1f01144fc80750e8f7 ]

In order for hibernation to reliably work we need to properly turn
off the SDMA block, sadly after numerous attemps i haven't not found
proper sequence for clean and full shutdown. So simply reset both
SDMA block, this makes hibernation works reliably on sea island GPU
family (CI)

Hibernation and suspend to ram were tested (several times) on :
Bonaire
Hawaii
Mullins
Kaveri
Kabini

Cc: stable@vger.kernel.org
Signed-off-by: Jérôme Glisse &lt;jglisse@redhat.com&gt;
Reviewed-by: Christian König &lt;christian.koenig@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>drm/radeon: compute ring fix hibernation (CI GPU family) v2.</title>
<updated>2015-07-05T14:12:53Z</updated>
<author>
<name>Jérôme Glisse</name>
<email>jglisse@redhat.com</email>
</author>
<published>2015-06-19T14:32:15Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=bce1845b11c968e5755dc0877fb765751f5870e3'/>
<id>urn:sha1:bce1845b11c968e5755dc0877fb765751f5870e3</id>
<content type='text'>
[ Upstream commit 161569deaa03cf3c00ed63352006193f250b0648 ]

In order for hibernation to reliably work we need to cleanup more
thoroughly the compute ring. Hibernation is different from suspend
resume as when we resume from hibernation the hardware is first
fully initialize by regular kernel then freeze callback happens
(which correspond to a suspend inside the radeon kernel driver)
and turn off each of the block. It turns out we were not cleanly
shutting down the compute ring. This patch fix that.

Hibernation and suspend to ram were tested (several times) on :
Bonaire
Hawaii
Mullins
Kaveri
Kabini

Changed since v1:
  - Factor the ring stop logic into a function taking ring as arg.

Cc: stable@vger.kernel.org
Signed-off-by: Jérôme Glisse &lt;jglisse@redhat.com&gt;
Reviewed-by: Christian König &lt;christian.koenig@amd.com&gt;
Signed-off-by: Alex Deucher &lt;alexander.deucher@amd.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
</feed>
