linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/8] sdhci: Move real work out of an atomic context
@ 2010-07-14 13:07 Anton Vorontsov
  2010-07-14 13:07 ` [PATCH 1/8] sdhci: Turn timeout timer into delayed work Anton Vorontsov
                   ` (10 more replies)
  0 siblings, 11 replies; 25+ messages in thread
From: Anton Vorontsov @ 2010-07-14 13:07 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Wolfram Sang, Albert Herranz, Matt Fleming, Ben Dooks,
	Pierre Ossman, linux-mmc, linux-kernel, linuxppc-dev

Hi all,

Currently the sdhci driver does everything in the atomic context.
And what is worse, PIO transfers are made from the IRQ handler.

This causes huge latencies (up to 120 ms). On some P2020 SOCs,
DMA and card detection is broken, which means that kernel polls
for the card via PIO transfers every second. Needless to say
that this is quite bad.

So, this patch set reworks sdhci code to avoid atomic context,
almost completely. We only do two device memory operations
in the atomic context, and all the rest is threaded.

I noticed no throughput drop neither with PIO transfers nor
with DMA (tested on MPC8569E CPU), while latencies should be
greatly improved.

Thanks,

-- 
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2

^ permalink raw reply	[flat|nested] 25+ messages in thread
* [PATCH 0/8] sdhci: Move real work out of an atomic context
@ 2013-05-24 16:00 Jeremie Samuel
  2013-06-13 14:23 ` Jeremie Samuel
  0 siblings, 1 reply; 25+ messages in thread
From: Jeremie Samuel @ 2013-05-24 16:00 UTC (permalink / raw)
  To: linux-mmc, Chris Ball; +Cc: matthieu.castet, gregor.boirie, Jeremie Samuel

Hi all,

Currently the sdhci driver does everything in the atomic context.
And what is worse, PIO transfers are made from the IRQ handler.

Some patches were already submitted to solve this issue. But there were 
rejected because they involved new issues.

This set of patches is an evolution of an old patch from Anton Vorontsov.
I tried to fix all the problems involved by the patches. I tested it for 
several time now with SD cards and SDIO.

So, this patch set reworks sdhci code to avoid atomic context,
almost completely.

Thanks,

Jeremie Samuel

Jeremie Samuel (8):
  sdhci: Turn timeout timer into delayed work
  sdhci: Turn tuning timeout timer into delayed work
  sdhci: Use work structs instead of tasklets
  sdhci: Use threaded IRQ handler
  sdhci: Delay led blinking
  sdhci: Turn host->lock into a mutex
  sdhci: Get rid of mdelay()s where it is safe and makes sense
  sdhci: Use jiffies instead of a timeout counter

 drivers/mmc/host/sdhci.c  |  327 ++++++++++++++++++++++-----------------------
 include/linux/mmc/sdhci.h |   13 +-
 2 files changed, 168 insertions(+), 172 deletions(-)

-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 25+ messages in thread
* [PATCH 0/8] sdhci: Move real work out of an atomic context
@ 2013-07-09 15:44 Jeremie Samuel
  2013-07-09 15:52 ` Philip Rakity
  0 siblings, 1 reply; 25+ messages in thread
From: Jeremie Samuel @ 2013-07-09 15:44 UTC (permalink / raw)
  To: Chris Ball; +Cc: linux-mmc, matthieu.castet, gregor.boirie, Jeremie Samuel

Hi all,

Currently the sdhci driver does everything in the atomic context.
And what is worse, PIO transfers are made from the IRQ handler.

Some patches were already submitted to solve this issue. But there were
rejected because they involved new issues.

This set of patches is an evolution of an old patch from Anton Vorontsov.
I tried to fix all the problems involved by the patches. I tested it for
several time now with SD cards and SDIO.

So, this patch set reworks sdhci code to avoid atomic context,
almost completely.

Thanks,

Jeremie Samuel

Jeremie Samuel (8):
  sdhci: Turn timeout timer into delayed work
  sdhci: Turn tuning timeout timer into delayed work
  sdhci: Use work structs instead of tasklets
  sdhci: Use threaded IRQ handler
  sdhci: Delay led blinking
  sdhci: Turn host->lock into a mutex
  sdhci: Get rid of mdelay()s where it is safe and makes sense
  sdhci: Use jiffies instead of a timeout counter

 drivers/mmc/host/sdhci.c  |  327 ++++++++++++++++++++++-----------------------
 include/linux/mmc/sdhci.h |   13 +-
 2 files changed, 168 insertions(+), 172 deletions(-)

-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 25+ messages in thread
* [PATCH 0/8] sdhci: Move real work out of an atomic context
@ 2013-10-16 16:20 Jeremie Samuel
  0 siblings, 0 replies; 25+ messages in thread
From: Jeremie Samuel @ 2013-10-16 16:20 UTC (permalink / raw)
  To: Chris Ball; +Cc: linux-mmc, Grégor Boirie, Matthieu Castet, Jeremie Samuel

Hi all,

Currently the sdhci driver does everything in the atomic context.
And what is worse, PIO transfers are made from the IRQ handler.

Some patches were already submitted to solve this issue. But there were
rejected because they involved new issues.

This set of patches is an evolution of an old patch from Anton Vorontsov.
I tried to fix all the problems involved by the patches. I tested it for
several time now with SD cards and SDIO.

So, this patch set reworks sdhci code to avoid atomic context,
almost completely.

Thanks,

Jeremie Samuel

Jeremie Samuel (8):
  sdhci: Turn timeout timer into delayed work
  sdhci: Turn tuning timeout timer into delayed work
  sdhci: Use work structs instead of tasklets
  sdhci: Use threaded IRQ handler
  sdhci: Delay led blinking
  sdhci: Turn host->lock into a mutex
  sdhci: Get rid of mdelay()s where it is safe and makes sense
  sdhci: Use jiffies instead of a timeout counter

 drivers/mmc/host/sdhci-esdhc-imx.c |    4 +-
 drivers/mmc/host/sdhci-pxav3.c     |   10 +-
 drivers/mmc/host/sdhci-s3c.c       |    5 +-
 drivers/mmc/host/sdhci.c           |  329 ++++++++++++++++++------------------
 include/linux/mmc/sdhci.h          |   13 +-
 5 files changed, 177 insertions(+), 184 deletions(-)

-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2013-10-16 16:22 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-14 13:07 [PATCH 0/8] sdhci: Move real work out of an atomic context Anton Vorontsov
2010-07-14 13:07 ` [PATCH 1/8] sdhci: Turn timeout timer into delayed work Anton Vorontsov
2010-07-14 13:07 ` [PATCH 2/8] sdhci: Use work structs instead of tasklets Anton Vorontsov
2010-07-14 13:08 ` [PATCH 3/8] sdhci: Clear interrupt status register just once Anton Vorontsov
2010-07-14 13:08 ` [PATCH 4/8] sdhci: Use threaded IRQ handler Anton Vorontsov
2010-07-14 13:08 ` [PATCH 5/8] sdhci: Turn host->lock into a mutex Anton Vorontsov
2010-07-14 13:08 ` [PATCH 6/8] sdhci: Get rid of card detect work Anton Vorontsov
2010-07-14 13:08 ` [PATCH 7/8] sdhci: Get rid of mdelay()s where it is safe and makes sense Anton Vorontsov
2010-07-14 13:08 ` [PATCH 8/8] sdhci: Use jiffies instead of a timeout counter Anton Vorontsov
2010-07-15  6:02 ` [PATCH 0/8] sdhci: Move real work out of an atomic context Matt Fleming
2010-07-21 21:13 ` Andrew Morton
2010-09-07 22:38 ` Andrew Morton
2010-09-08 21:37   ` Chris Ball
2010-09-08 21:57     ` Anton Vorontsov
2010-09-08 22:05       ` Chris Ball
2010-09-08 22:27         ` Anton Vorontsov
2010-09-09  2:28     ` Chris Ball
2010-09-09  7:15       ` Anton Vorontsov
  -- strict thread matches above, loose matches on Subject: below --
2013-05-24 16:00 Jeremie Samuel
2013-06-13 14:23 ` Jeremie Samuel
2013-06-27 14:46   ` Chris Ball
2013-07-09 15:44 Jeremie Samuel
2013-07-09 15:52 ` Philip Rakity
2013-07-11  8:28   ` Jeremie Samuel
2013-10-16 16:20 Jeremie Samuel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).