<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/dma/ioat, branch linux-4.4.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.4.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.4.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2019-11-25T14:54:44Z</updated>
<entry>
<title>dmaengine: ioat: fix prototype of ioat_enumerate_channels</title>
<updated>2019-11-25T14:54:44Z</updated>
<author>
<name>Rami Rosen</name>
</author>
<published>2018-10-04T21:03:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9a8fb6b85ba142d0b02046eb30ee2c56e0607ec7'/>
<id>urn:sha1:9a8fb6b85ba142d0b02046eb30ee2c56e0607ec7</id>
<content type='text'>
[ Upstream commit f4d34aa8c887a8a2d23ef546da0efa10e3f77241 ]

Signed-off-by: Rami Rosen &lt;ramirose@gmail.com&gt;
Signed-off-by: Vinod Koul &lt;vkoul@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>driver/dma/ioat: Call del_timer_sync() without holding prep_lock</title>
<updated>2018-11-21T08:27:33Z</updated>
<author>
<name>Waiman Long</name>
</author>
<published>2018-09-14T18:53:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d7a7df4c972c5de069ecd0c23486147248db40a8'/>
<id>urn:sha1:d7a7df4c972c5de069ecd0c23486147248db40a8</id>
<content type='text'>
[ Upstream commit cfb03be6c7e8a1591285849c361d67b09f5149f7 ]

The following lockdep splat was observed:

[ 1222.241750] ======================================================
[ 1222.271301] WARNING: possible circular locking dependency detected
[ 1222.301060] 4.16.0-10.el8+5.x86_64+debug #1 Not tainted
[ 1222.326659] ------------------------------------------------------
[ 1222.356565] systemd-shutdow/1 is trying to acquire lock:
[ 1222.382660]  ((&amp;ioat_chan-&gt;timer)){+.-.}, at: [&lt;00000000f71e1a28&gt;] del_timer_sync+0x5/0xf0
[ 1222.422928]
[ 1222.422928] but task is already holding lock:
[ 1222.451743]  (&amp;(&amp;ioat_chan-&gt;prep_lock)-&gt;rlock){+.-.}, at: [&lt;000000008ea98b12&gt;] ioat_shutdown+0x86/0x100 [ioatdma]
   :
[ 1223.524987] Chain exists of:
[ 1223.524987]   (&amp;ioat_chan-&gt;timer) --&gt; &amp;(&amp;ioat_chan-&gt;cleanup_lock)-&gt;rlock --&gt; &amp;(&amp;ioat_chan-&gt;prep_lock)-&gt;rlock
[ 1223.524987]
[ 1223.594082]  Possible unsafe locking scenario:
[ 1223.594082]
[ 1223.622630]        CPU0                    CPU1
[ 1223.645080]        ----                    ----
[ 1223.667404]   lock(&amp;(&amp;ioat_chan-&gt;prep_lock)-&gt;rlock);
[ 1223.691535]                                lock(&amp;(&amp;ioat_chan-&gt;cleanup_lock)-&gt;rlock);
[ 1223.728657]                                lock(&amp;(&amp;ioat_chan-&gt;prep_lock)-&gt;rlock);
[ 1223.765122]   lock((&amp;ioat_chan-&gt;timer));
[ 1223.784095]
[ 1223.784095]  *** DEADLOCK ***
[ 1223.784095]
[ 1223.813492] 4 locks held by systemd-shutdow/1:
[ 1223.834677]  #0:  (reboot_mutex){+.+.}, at: [&lt;0000000056d33456&gt;] SYSC_reboot+0x10f/0x300
[ 1223.873310]  #1:  (&amp;dev-&gt;mutex){....}, at: [&lt;00000000258dfdd7&gt;] device_shutdown+0x1c8/0x660
[ 1223.913604]  #2:  (&amp;dev-&gt;mutex){....}, at: [&lt;0000000068331147&gt;] device_shutdown+0x1d6/0x660
[ 1223.954000]  #3:  (&amp;(&amp;ioat_chan-&gt;prep_lock)-&gt;rlock){+.-.}, at: [&lt;000000008ea98b12&gt;] ioat_shutdown+0x86/0x100 [ioatdma]

In the ioat_shutdown() function:

	spin_lock_bh(&amp;ioat_chan-&gt;prep_lock);
	set_bit(IOAT_CHAN_DOWN, &amp;ioat_chan-&gt;state);
	del_timer_sync(&amp;ioat_chan-&gt;timer);
	spin_unlock_bh(&amp;ioat_chan-&gt;prep_lock);

According to the synchronization rule for the del_timer_sync() function,
the caller must not hold locks which would prevent completion of the
timer's handler.

The timer structure has its own lock that manages its synchronization.
Setting the IOAT_CHAN_DOWN bit should prevent other CPUs from
trying to use that device anyway, there is probably no need to call
del_timer_sync() while holding the prep_lock. So the del_timer_sync()
call is now moved outside of the prep_lock critical section to prevent
the circular lock dependency.

Signed-off-by: Waiman Long &lt;longman@redhat.com&gt;
Reviewed-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vkoul@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dmaengine: ioat: Fix error handling path</title>
<updated>2018-02-25T10:03:40Z</updated>
<author>
<name>Christophe JAILLET</name>
</author>
<published>2017-11-17T21:37:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=da4bb3d1c4d2590923b5cf41fc7cd812568f614a'/>
<id>urn:sha1:da4bb3d1c4d2590923b5cf41fc7cd812568f614a</id>
<content type='text'>
[ Upstream commit 5c9afbda911ce20b3f2181d1e440a0222e1027dd ]

If the last test in 'ioat_dma_self_test()' fails, we must release all
the allocated resources and not just part of them.

Signed-off-by: Christophe JAILLET &lt;christophe.jaillet@wanadoo.fr&gt;
Acked-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dmaengine: ioatdma: workaround SKX ioatdma version</title>
<updated>2017-08-07T02:19:45Z</updated>
<author>
<name>Dave Jiang</name>
</author>
<published>2016-12-13T18:15:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=328a9cdcbab906014b154ef5adb81dfce8d57923'/>
<id>urn:sha1:328a9cdcbab906014b154ef5adb81dfce8d57923</id>
<content type='text'>
[ Upstream commit 34a31f0af84158955a9747fb5c6712da5bbb5331 ]

The Skylake ioatdma is technically CBDMA 3.2+ and contains the same hardware
bits with some additional 3.3 features, but it's not really 3.3 where the
driver is concerned.

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dmaengine: ioatdma: Add Skylake PCI Dev ID</title>
<updated>2017-08-07T02:19:45Z</updated>
<author>
<name>Dave Jiang</name>
</author>
<published>2016-12-13T18:15:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6c0d9f0212f8eb407930ce327d2de608a4a2792a'/>
<id>urn:sha1:6c0d9f0212f8eb407930ce327d2de608a4a2792a</id>
<content type='text'>
[ Upstream commit 1594c18fd297a8edcc72bc4b161f3f52603ebb92 ]

Adding Skylake Xeon PCI device ids for ioatdma and related bits.

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dmaengine: ioatdma: add PCIe AER handlers</title>
<updated>2015-09-21T15:40:05Z</updated>
<author>
<name>Dave Jiang</name>
</author>
<published>2015-08-26T20:17:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4222a9074339fccc59526cbf30d8d2ec41468574'/>
<id>urn:sha1:4222a9074339fccc59526cbf30d8d2ec41468574</id>
<content type='text'>
Adding AER handlers in order to handle any PCIe errors.

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: ioatdma: adding shutdown support</title>
<updated>2015-09-21T15:40:05Z</updated>
<author>
<name>Dave Jiang</name>
</author>
<published>2015-08-26T20:17:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ad4a7b5065c1b4f5176e7d031c3cc2b36f776884'/>
<id>urn:sha1:ad4a7b5065c1b4f5176e7d031c3cc2b36f776884</id>
<content type='text'>
The ioatdma needs to be queisced and block all additional op submission
during reboots. When NET_DMA was used, this caused issue as ops were still
being sent to ioatdma during reboots even though PCI BME has been turned
off. Even though NET_DMA has been deprecated, we need to prevent similar
situations. The shutdown handler should address that.

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: ioatdma: add Broadwell EP ioatdma PCI dev IDs</title>
<updated>2015-08-28T04:36:06Z</updated>
<author>
<name>Dave Jiang</name>
</author>
<published>2015-08-26T21:16:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ab98193dace971f4742eebb5103212e23bb392f5'/>
<id>urn:sha1:ab98193dace971f4742eebb5103212e23bb392f5</id>
<content type='text'>
Adding the Broadwell Xeon ioatdma PCI device IDs and
related bits. This is still IOATDMA 3.2 based hw.

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: ioatdma: Fix variable array length</title>
<updated>2015-08-26T02:23:58Z</updated>
<author>
<name>Dave Jiang</name>
</author>
<published>2015-08-25T19:58:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7b7d0ca7778d359584859cb5e75965ad34f42533'/>
<id>urn:sha1:7b7d0ca7778d359584859cb5e75965ad34f42533</id>
<content type='text'>
Sparse reported:
drivers/dma/ioat/prep.c:637:27: sparse: Variable length array is used.

Assigning a static value for the array.

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: ioatdma: fix sparse "error" with prep lock</title>
<updated>2015-08-26T02:23:58Z</updated>
<author>
<name>Dave Jiang</name>
</author>
<published>2015-08-25T19:58:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5c65cb93a3d066f52a109552572304675d5a52fc'/>
<id>urn:sha1:5c65cb93a3d066f52a109552572304675d5a52fc</id>
<content type='text'>
The prep lock gets acquired in ioat_check_space_lock and released in
ioat_tx_submit_unlock. Setting the annotations so sparse does not freak out.

drivers/dma/ioat/dma.c:273:30: sparse: context imbalance in 'ioat_tx_submit_unlock' - unexpected unlock
drivers/dma/ioat/dma.c:476:5: sparse: context imbalance in 'ioat_check_space_lock' - wrong count at exit

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
</feed>
