<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/mmc/card/queue.c, branch v3.15.1</title>
<subtitle>Clone of https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git</subtitle>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/'/>
<entry>
<title>Fix uses of dma_max_pfn() when converting to a limiting address</title>
<updated>2014-02-17T23:08:41+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2014-02-11T17:11:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=e83b366487b5582274374f8226e489cb214ae5a6'/>
<id>e83b366487b5582274374f8226e489cb214ae5a6</id>
<content type='text'>
We must use a 64-bit for this, otherwise overflowed bits get lost, and
that can result in a lower than intended value set.

Fixes: 8e0cb8a1f6ac ("ARM: 7797/1: mmc: Use dma_max_pfn(dev) helper for bounce_limit calculations")
Fixes: 7d35496dd982 ("ARM: 7796/1: scsi: Use dma_max_pfn(dev) helper for bounce_limit calculations")
Tested-Acked-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
Reviewed-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We must use a 64-bit for this, otherwise overflowed bits get lost, and
that can result in a lower than intended value set.

Fixes: 8e0cb8a1f6ac ("ARM: 7797/1: mmc: Use dma_max_pfn(dev) helper for bounce_limit calculations")
Fixes: 7d35496dd982 ("ARM: 7796/1: scsi: Use dma_max_pfn(dev) helper for bounce_limit calculations")
Tested-Acked-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
Reviewed-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ARM: 7797/1: mmc: Use dma_max_pfn(dev) helper for bounce_limit calculations</title>
<updated>2013-10-31T14:49:27+00:00</updated>
<author>
<name>Santosh Shilimkar</name>
<email>santosh.shilimkar@ti.com</email>
</author>
<published>2013-07-29T13:20:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=8e0cb8a1f6acf673ef9ab573087020ebafa8da51'/>
<id>8e0cb8a1f6acf673ef9ab573087020ebafa8da51</id>
<content type='text'>
DMA bounce limit is the maximum direct DMA'able memory beyond which
bounce buffers has to be used to perform dma operations. MMC queue layr
relies on dma_mask but its calculation is based on max_*pfn which
don't have uniform meaning across architectures. So make use of
dma_max_pfn() which is expected to return the DMAable maximum pfn
value across architectures.

Cc: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
DMA bounce limit is the maximum direct DMA'able memory beyond which
bounce buffers has to be used to perform dma operations. MMC queue layr
relies on dma_mask but its calculation is based on max_*pfn which
don't have uniform meaning across architectures. So make use of
dma_max_pfn() which is expected to return the DMAable maximum pfn
value across architectures.

Cc: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: card: Adding support for sanitize in eMMC 4.5</title>
<updated>2013-05-26T18:23:13+00:00</updated>
<author>
<name>Maya Erez</name>
<email>merez@codeaurora.org</email>
</author>
<published>2013-04-18T12:41:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=775a9362b5d7e006ff6bbec5cb9c9c9d5a751696'/>
<id>775a9362b5d7e006ff6bbec5cb9c9c9d5a751696</id>
<content type='text'>
The sanitize support is added as a user-app ioctl call, and
was removed from the block-device request, since its purpose is
to be invoked not via File-System but by a user.

This feature deletes the unmap memory region of the eMMC card,
by writing to a specific register in the EXT_CSD.

unmap region is the memory region that was previously deleted
(by erase, trim or discard operation).

In order to avoid timeout when sanitizing large-scale cards,
the timeout for sanitize operation is 240 seconds.

Signed-off-by: Yaniv Gardi &lt;ygardi@codeaurora.org&gt;
Signed-off-by: Maya Erez &lt;merez@codeaurora.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The sanitize support is added as a user-app ioctl call, and
was removed from the block-device request, since its purpose is
to be invoked not via File-System but by a user.

This feature deletes the unmap memory region of the eMMC card,
by writing to a specific register in the EXT_CSD.

unmap region is the memory region that was previously deleted
(by erase, trim or discard operation).

In order to avoid timeout when sanitizing large-scale cards,
the timeout for sanitize operation is 240 seconds.

Signed-off-by: Yaniv Gardi &lt;ygardi@codeaurora.org&gt;
Signed-off-by: Maya Erez &lt;merez@codeaurora.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: block: fix the host's claim-release in special request</title>
<updated>2013-03-22T17:29:36+00:00</updated>
<author>
<name>Seungwon Jeon</name>
<email>tgih.jun@samsung.com</email>
</author>
<published>2013-03-14T06:17:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=ef3a69c7a40d5350adeaed7f0f4b4dcf6362dbbd'/>
<id>ef3a69c7a40d5350adeaed7f0f4b4dcf6362dbbd</id>
<content type='text'>
For normal request mmc_blk_issue_rq is called twice with asynchronous
transfer(cur and prev). Host's claim and release can be done in each
mmc_blk_issue_rq. However, Special request is currently excluded in
asynchronous transfer. After special request is finished, if there is
no new request, mmc_release_host won't be called in mmc_blk_issue_rq.
The problem is founded during mmc_suspend.

[&lt;c0541124&gt;] (__schedule+0x0/0x78c) from [&lt;c05419e8&gt;] (schedule+0x38/0x78)
[&lt;c05419b0&gt;] (schedule+0x0/0x78) from [&lt;c03a843c&gt;] (__mmc_claim_host+0xac/0x1b4)
[&lt;c03a8390&gt;] (__mmc_claim_host+0x0/0x1b4) from [&lt;c03ac98c&gt;] (mmc_suspend+0x28/0x9c)
[&lt;c03ac964&gt;] (mmc_suspend+0x0/0x9c) from [&lt;c03aad24&gt;] (mmc_suspend_host+0xb4/0x194)
...

Reported-by: Johan Rudholm &lt;jrudholm@gmail.com&gt;
Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Tested-by: Johan Rudholm &lt;johan.rudholm@stericsson.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For normal request mmc_blk_issue_rq is called twice with asynchronous
transfer(cur and prev). Host's claim and release can be done in each
mmc_blk_issue_rq. However, Special request is currently excluded in
asynchronous transfer. After special request is finished, if there is
no new request, mmc_release_host won't be called in mmc_blk_issue_rq.
The problem is founded during mmc_suspend.

[&lt;c0541124&gt;] (__schedule+0x0/0x78c) from [&lt;c05419e8&gt;] (schedule+0x38/0x78)
[&lt;c05419b0&gt;] (schedule+0x0/0x78) from [&lt;c03a843c&gt;] (__mmc_claim_host+0xac/0x1b4)
[&lt;c03a8390&gt;] (__mmc_claim_host+0x0/0x1b4) from [&lt;c03ac98c&gt;] (mmc_suspend+0x28/0x9c)
[&lt;c03ac964&gt;] (mmc_suspend+0x0/0x9c) from [&lt;c03aad24&gt;] (mmc_suspend_host+0xb4/0x194)
...

Reported-by: Johan Rudholm &lt;jrudholm@gmail.com&gt;
Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Tested-by: Johan Rudholm &lt;johan.rudholm@stericsson.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: support packed write command for eMMC4.5 devices</title>
<updated>2013-02-24T19:37:16+00:00</updated>
<author>
<name>Seungwon Jeon</name>
<email>tgih.jun@samsung.com</email>
</author>
<published>2013-02-06T08:02:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=ce39f9d17c14e56ea6772aa84393e6e0cc8499c4'/>
<id>ce39f9d17c14e56ea6772aa84393e6e0cc8499c4</id>
<content type='text'>
This patch supports packed write command of eMMC4.5 devices.  Several
writes can be grouped in packed command and all data of the individual
commands can be sent in a single transfer on the bus. Large amounts of
data in one transfer rather than several data of small size are
effective for eMMC write internally.  As a result, packed command help
write throughput be improved.  The following tables show the results
of packed write.

Type A:
test     none |  packed
iozone   25.8 |  31
tiotest  27.6 |  31.2
lmdd     31.2 |  35.4

Type B:
test     none |  packed
iozone   44.1 |  51.1
tiotest  47.9 |  52.5
lmdd     51.6 |  59.2

Type C:
test     none |  packed
iozone   19.5 |  32
tiotest  19.9 |  34.5
lmdd     22.8 |  40.7

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Reviewed-by: Maya Erez &lt;merez@codeaurora.org&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch supports packed write command of eMMC4.5 devices.  Several
writes can be grouped in packed command and all data of the individual
commands can be sent in a single transfer on the bus. Large amounts of
data in one transfer rather than several data of small size are
effective for eMMC write internally.  As a result, packed command help
write throughput be improved.  The following tables show the results
of packed write.

Type A:
test     none |  packed
iozone   25.8 |  31
tiotest  27.6 |  31.2
lmdd     31.2 |  35.4

Type B:
test     none |  packed
iozone   44.1 |  51.1
tiotest  47.9 |  52.5
lmdd     51.6 |  59.2

Type C:
test     none |  packed
iozone   19.5 |  32
tiotest  19.9 |  34.5
lmdd     22.8 |  40.7

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Reviewed-by: Maya Erez &lt;merez@codeaurora.org&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: fix async request mechanism for sequential read scenarios</title>
<updated>2013-02-11T18:28:49+00:00</updated>
<author>
<name>Konstantin Dorfman</name>
<email>kdorfman@codeaurora.org</email>
</author>
<published>2013-01-14T19:28:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=2220eedfd7aea69008173a224975e10284fbe854'/>
<id>2220eedfd7aea69008173a224975e10284fbe854</id>
<content type='text'>
When current request is running on the bus and if next request fetched
by mmcqd is NULL, mmc context (mmcqd thread) gets blocked until the
current request completes. This means that if new request comes in while
the mmcqd thread is blocked, this new request can not be prepared in
parallel to current ongoing request. This may result in delaying the new
request execution and increase it's latency.

This change allows to wake up the MMC thread on new request arrival.
Now once the MMC thread is woken up, a new request can be fetched and
prepared in parallel to the current running request which means this new
request can be started immediately after the current running request
completes.

With this change read throughput is improved by 16%.

Signed-off-by: Konstantin Dorfman &lt;kdorfman@codeaurora.org&gt;
Reviewed-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When current request is running on the bus and if next request fetched
by mmcqd is NULL, mmc context (mmcqd thread) gets blocked until the
current request completes. This means that if new request comes in while
the mmcqd thread is blocked, this new request can not be prepared in
parallel to current ongoing request. This may result in delaying the new
request execution and increase it's latency.

This change allows to wake up the MMC thread on new request arrival.
Now once the MMC thread is woken up, a new request can be fetched and
prepared in parallel to the current running request which means this new
request can be started immediately after the current running request
completes.

With this change read throughput is improved by 16%.

Signed-off-by: Konstantin Dorfman &lt;kdorfman@codeaurora.org&gt;
Reviewed-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: queue: exclude asynchronous transfer for special request</title>
<updated>2013-02-11T18:28:48+00:00</updated>
<author>
<name>Seungwon Jeon</name>
<email>tgih.jun@samsung.com</email>
</author>
<published>2012-12-26T01:40:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=369d321ed1baa7748e770aaaae4d8effad699633'/>
<id>369d321ed1baa7748e770aaaae4d8effad699633</id>
<content type='text'>
Unlike normal r/w request, special requests(discard, flush)
is finished with a one-time issue_fn. Request change to
mqrq_prev makes unnecessary call.

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Reviewed-by: Konstantin Dorfman &lt;kdorfman@codeaurora.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Unlike normal r/w request, special requests(discard, flush)
is finished with a one-time issue_fn. Request change to
mqrq_prev makes unnecessary call.

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Reviewed-by: Konstantin Dorfman &lt;kdorfman@codeaurora.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: queue: amend buffer swap for non-blocking transfer</title>
<updated>2012-12-06T18:54:37+00:00</updated>
<author>
<name>Seungwon Jeon</name>
<email>tgih.jun@samsung.com</email>
</author>
<published>2012-09-28T10:12:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=45c5a914e68fdbbc2635c3cc197566aa24e8de5b'/>
<id>45c5a914e68fdbbc2635c3cc197566aa24e8de5b</id>
<content type='text'>
In case both 'req' and 'mq-&gt;mqrq_prev-&gt;req' are null, there is no request
to be processed. That means there is no need to switch buffer.
Switching buffer is required only after finishing 'issue_fn'.

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Reviewed-by: Per Forlin &lt;per.forlin@stericsson.com&gt;
Tested-by: Johan Rudholm &lt;johan.rudholm@stericsson.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case both 'req' and 'mq-&gt;mqrq_prev-&gt;req' are null, there is no request
to be processed. That means there is no need to switch buffer.
Switching buffer is required only after finishing 'issue_fn'.

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Reviewed-by: Per Forlin &lt;per.forlin@stericsson.com&gt;
Tested-by: Johan Rudholm &lt;johan.rudholm@stericsson.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: queue: remove redundant memsets</title>
<updated>2012-05-09T14:10:46+00:00</updated>
<author>
<name>Venkatraman S</name>
<email>svenkatr@ti.com</email>
</author>
<published>2012-04-13T12:24:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=b41b6f1d1cb6a16c737c4699d2815112ec21faa6'/>
<id>b41b6f1d1cb6a16c737c4699d2815112ec21faa6</id>
<content type='text'>
Not needed to memset, as they are pointers and are assigned
to proper values in the next line anyway.

Signed-off-by: Venkatraman S &lt;svenkatr@ti.com&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Not needed to memset, as they are pointers and are assigned
to proper values in the next line anyway.

Signed-off-by: Venkatraman S &lt;svenkatr@ti.com&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: queue: rename mmc_request function</title>
<updated>2012-05-09T14:08:54+00:00</updated>
<author>
<name>Venkatraman S</name>
<email>svenkatr@ti.com</email>
</author>
<published>2012-04-13T12:24:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=1b50f5f392e31ab41a272ed3b438f603c09be3f0'/>
<id>1b50f5f392e31ab41a272ed3b438f603c09be3f0</id>
<content type='text'>
The name mmc_request is used for both the issue function
and a data structure, which creates conflicts in symbol lookups
in editors. Rename the function to mmc_request_fn.

Signed-off-by: Venkatraman S &lt;svenkatr@ti.com&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The name mmc_request is used for both the issue function
and a data structure, which creates conflicts in symbol lookups
in editors. Rename the function to mmc_request_fn.

Signed-off-by: Venkatraman S &lt;svenkatr@ti.com&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
