From: Russell King <rmk+kernel@arm.linux.org.uk>
To: linux-arm-kernel@lists.infradead.org, linux-mmc@vger.kernel.org
Cc: Chris Ball <chris@printf.net>
Subject: [PATCH RFC 14/31] mmc: sdhci: avoid sync'ing the SG if there's no misalignment
Date: Tue, 18 Feb 2014 15:10:14 +0000 [thread overview]
Message-ID: <E1WFmJK-0006mi-Aw@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20140218150801.GD21483@n2100.arm.linux.org.uk>
On read, we don't need to sync the whole scatterlist and then check
whether any segments need copying - if we check first, we avoid
potentially expensive cache handling.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
=-DO NOT APPLY-=
drivers/mmc/host/sdhci.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index bcf4f9ec0ea4..e918e17c39e4 100644
=-DO NOT APPLY-= a/drivers/mmc/host/sdhci.c
=+DO NOT APPLY+= b/drivers/mmc/host/sdhci.c
@@ -602,6 +602,7 @@ static void sdhci_adma_table_post(struct sdhci_host *host,
u8 *align;
char *buffer;
unsigned long flags;
=+DO NOT APPLY+= bool has_unaligned;
if (data->flags & MMC_DATA_READ)
direction = DMA_FROM_DEVICE;
@@ -614,7 +615,15 @@ static void sdhci_adma_table_post(struct sdhci_host *host,
dma_unmap_single(mmc_dev(host->mmc), host->align_addr,
128 * 4, direction);
- if (data->flags & MMC_DATA_READ) {
=+DO NOT APPLY+= /* Do a quick scan of the SG list for any unaligned mappings */
=+DO NOT APPLY+= has_unaligned = false;
=+DO NOT APPLY+= for_each_sg(data->sg, sg, host->sg_count, i)
=+DO NOT APPLY+= if (sg_dma_address(sg) & 3) {
=+DO NOT APPLY+= has_unaligned = true;
=+DO NOT APPLY+= break;
=+DO NOT APPLY+= }
=+DO NOT APPLY+=
=+DO NOT APPLY+= if (has_unaligned && data->flags & MMC_DATA_READ) {
dma_sync_sg_for_cpu(mmc_dev(host->mmc), data->sg,
data->sg_len, direction);
--
1.8.3.1
WARNING: multiple messages have this Message-ID (diff)
From: rmk+kernel@arm.linux.org.uk (Russell King)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC 14/31] mmc: sdhci: avoid sync'ing the SG if there's no misalignment
Date: Tue, 18 Feb 2014 15:10:14 +0000 [thread overview]
Message-ID: <E1WFmJK-0006mi-Aw@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20140218150801.GD21483@n2100.arm.linux.org.uk>
On read, we don't need to sync the whole scatterlist and then check
whether any segments need copying - if we check first, we avoid
potentially expensive cache handling.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
=-DO NOT APPLY-=
drivers/mmc/host/sdhci.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index bcf4f9ec0ea4..e918e17c39e4 100644
=-DO NOT APPLY-= a/drivers/mmc/host/sdhci.c
=+DO NOT APPLY+= b/drivers/mmc/host/sdhci.c
@@ -602,6 +602,7 @@ static void sdhci_adma_table_post(struct sdhci_host *host,
u8 *align;
char *buffer;
unsigned long flags;
=+DO NOT APPLY+= bool has_unaligned;
if (data->flags & MMC_DATA_READ)
direction = DMA_FROM_DEVICE;
@@ -614,7 +615,15 @@ static void sdhci_adma_table_post(struct sdhci_host *host,
dma_unmap_single(mmc_dev(host->mmc), host->align_addr,
128 * 4, direction);
- if (data->flags & MMC_DATA_READ) {
=+DO NOT APPLY+= /* Do a quick scan of the SG list for any unaligned mappings */
=+DO NOT APPLY+= has_unaligned = false;
=+DO NOT APPLY+= for_each_sg(data->sg, sg, host->sg_count, i)
=+DO NOT APPLY+= if (sg_dma_address(sg) & 3) {
=+DO NOT APPLY+= has_unaligned = true;
=+DO NOT APPLY+= break;
=+DO NOT APPLY+= }
=+DO NOT APPLY+=
=+DO NOT APPLY+= if (has_unaligned && data->flags & MMC_DATA_READ) {
dma_sync_sg_for_cpu(mmc_dev(host->mmc), data->sg,
data->sg_len, direction);
--
1.8.3.1
next prev parent reply other threads:[~2014-02-18 15:10 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-18 15:08 [PATCH RFC 00/31] SDHCI and SDIO IRQ improvements Russell King - ARM Linux
2014-02-18 15:08 ` Russell King - ARM Linux
2014-02-18 15:08 ` Russell King - ARM Linux
2014-02-18 15:09 ` [PATCH RFC 01/31] genirq: Provide synchronize_hardirq() Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` [PATCH RFC 02/31] genirq: Provide irq_wake_thread() Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` [PATCH RFC 03/31] mmc: sdio_irq: rework sdio irq handling Russell King
2014-02-18 15:09 ` Russell King
2014-02-19 3:40 ` Nicolas Pitre
2014-02-19 3:40 ` Nicolas Pitre
2014-02-19 9:44 ` Russell King - ARM Linux
2014-02-19 9:44 ` Russell King - ARM Linux
2014-02-18 15:09 ` [PATCH RFC 04/31] mmc: sdhci: clean up interrupt handling Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` [PATCH RFC 05/31] mmc: sdhci: clean up sdio interrupt enable handling Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` [PATCH RFC 06/31] mmc: sdhci: convert to new SDIO IRQ handling Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` [PATCH RFC 07/31] mmc: sdhci: push card_tasklet into threaded irq handler Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 17:57 ` Russell King - ARM Linux
2014-02-18 17:57 ` Russell King - ARM Linux
2014-02-19 6:13 ` Viresh Kumar
2014-02-19 6:13 ` Viresh Kumar
2014-02-19 9:43 ` Russell King - ARM Linux
2014-02-19 9:43 ` Russell King - ARM Linux
2014-02-19 9:48 ` Viresh Kumar
2014-02-19 9:48 ` Viresh Kumar
2014-02-19 9:52 ` Russell King - ARM Linux
2014-02-19 9:52 ` Russell King - ARM Linux
2014-02-19 10:09 ` Viresh Kumar
2014-02-19 10:09 ` Viresh Kumar
2014-02-19 10:50 ` Russell King - ARM Linux
2014-02-19 10:50 ` Russell King - ARM Linux
2014-02-19 10:55 ` Viresh Kumar
2014-02-19 10:55 ` Viresh Kumar
2014-02-20 10:59 ` Russell King - ARM Linux
2014-02-20 10:59 ` Russell King - ARM Linux
2014-02-20 11:18 ` Viresh Kumar
2014-02-20 11:18 ` Viresh Kumar
2014-02-21 10:37 ` Russell King - ARM Linux
2014-02-21 10:37 ` Russell King - ARM Linux
2014-02-21 10:41 ` [PATCH 1/5] mmc: sdhci-spear: fix error handling paths for DT Russell King
2014-02-21 10:41 ` Russell King
2014-02-24 5:59 ` Viresh Kumar
2014-02-24 5:59 ` Viresh Kumar
2014-02-21 10:41 ` [PATCH 2/5] mmc: sdhci-spear: fix platform_data usage Russell King
2014-02-21 10:41 ` Russell King
2014-02-21 10:41 ` [PATCH 3/5] mmc: sdhci-spear: simplify resource handling Russell King
2014-02-21 10:41 ` Russell King
2014-02-21 10:41 ` [PATCH 4/5] mmc: sdhci-spear: remove support for power gpio Russell King
2014-02-21 10:41 ` Russell King
2014-02-21 10:41 ` [PATCH 5/5] mmc: sdhci-spear: use generic card detection gpio support Russell King
2014-02-21 10:41 ` Russell King
2014-02-24 6:11 ` Pratyush Anand
2014-02-24 6:11 ` Pratyush Anand
2014-02-22 18:27 ` [PATCH RFC 07/31] mmc: sdhci: push card_tasklet into threaded irq handler Chris Ball
2014-02-22 18:27 ` Chris Ball
2014-02-22 19:05 ` Russell King - ARM Linux
2014-02-22 19:05 ` Russell King - ARM Linux
2014-02-22 19:11 ` Chris Ball
2014-02-22 19:11 ` Chris Ball
2014-02-18 15:09 ` [PATCH RFC 08/31] mmc: sdhci: allow sdio interrupts while sdhci runtime suspended Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` [PATCH RFC 09/31] mmc: sdhci: more efficient interrupt enable register handling Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` [PATCH RFC 10/31] mmc: sdhci: plug hole in disabling card detection interrupts Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` [PATCH RFC 11/31] mmc: sdhci: convert generic bus width setup to library function Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:09 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 12/31] mmc: sdhci: convert reset into a " Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 13/31] mmc: sdhci: move FSL ESDHC reset handling quirk into esdhc code Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` Russell King [this message]
2014-02-18 15:10 ` [PATCH RFC 14/31] mmc: sdhci: avoid sync'ing the SG if there's no misalignment Russell King
2014-02-18 15:10 ` [PATCH RFC 15/31] mmc: sdhci: convert ADMA descriptors to a coherent allocation Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 16/31] mmc: sdhci: clean up sdhci_update_clock()/sdhci_set_clock() Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 17/31] mmc: sdhci: move setting host->clock into sdhci_do_set_ios() Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 18/31] mmc: sdhci: move setting mmc->actual_clock into set_clock handlers Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 19/31] mmc: sdhci: convert sdhci_set_clock() into a library function Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 20/31] mmc: sdhci-esdhc-imx: avoid DMA to kernel stack Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 21/31] mmc: sdhci-esdhc-imx: avoid runtime_pm_get_sync() in esdhc_prepare_tuning() Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:10 ` [PATCH RFC 22/31] mmc: sdhci-esdhc-imx: fix lockdep splat upon tuning Russell King
2014-02-18 15:10 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 23/31] mmc: sdhci: hack up driver to make it more compliant with UHS-1 Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 24/31] mmc: sdhci: set_uhs_signaling() need not return a value Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 25/31] mmc: sdhci: convert sdhci_set_uhs_signaling() into a library function Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 26/31] mmc: sdhci: cache timing information locally Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 27/31] mmc: sdhci: clean up sdhci_execute_tuning() decision Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 28/31] mmc: sdhci-esdhc-imx: remove emulation of uhs_mode Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 29/31] mmc: sdhci-of-esdhc: remove platform_suspend/platform_resume callbacks Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 30/31] mmc: sdhci: " Russell King
2014-02-18 15:11 ` Russell King
2014-02-18 15:11 ` [PATCH RFC 31/31] mmc: sdhci-tegra: get rid of special PRESENT_STATE register handling Russell King
2014-02-18 15:11 ` Russell King
2014-02-19 20:04 ` Stephen Warren
2014-02-19 20:04 ` Stephen Warren
2014-02-19 23:22 ` Russell King - ARM Linux
2014-02-19 23:22 ` Russell King - ARM Linux
[not found] ` <20140219232253.GW21483-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-02-19 23:28 ` Russell King - ARM Linux
2014-02-19 23:28 ` Russell King - ARM Linux
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1WFmJK-0006mi-Aw@rmk-PC.arm.linux.org.uk \
--to=rmk+kernel@arm.linux.org.uk \
--cc=chris@printf.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mmc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.