All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Williams <dan.j.williams@intel.com>
To: linux-kernel@vger.kernel.org
Cc: linux-raid@vger.kernel.org, maciej.sosnowski@intel.com
Subject: [PATCH 00/18] ioatdma: raid5/raid6 offload support
Date: Thu, 03 Sep 2009 23:44:35 -0700	[thread overview]
Message-ID: <20090904064308.7141.30576.stgit@dwillia2-linux.ch.intel.com> (raw)

The Intel(R) QuickData Technology specification version 3.2 adds support
for offloading raid parity calculations.  This patchset builds upon the
md raid6 acceleration patchset [1] and the ioatdma refactoring patchset
[2].  Beyond the new operation types and descriptor formats these raid
engines require a few changes to the current dmaengine/async_tx offload
infrastructure:
1/ v3.2 channels may prefetch descriptors which leads to later
   descriptors in the chain possibly starting their reads before earlier
   descriptors in the chain have completed their writes.  A 'fence' bit is
   specified in the descriptor to disable this optimization in case there
   are data dependencies in the chain.  Fenced operation must be explicitly
   requested at the async_tx api level. 
2/ The descriptor ring scheme of the ioatdma driver for v2+ devices
   precludes async_tx channel switching.  The scheme requires that ->prep()
   and ->submit() calls not be reordered.  To support this constraint the
   dmaengine channel allocator is modified to only return "raid" engines
   when CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y which ensures that the
   async_tx api only ever sees channels that have all the requisite
   capabilities.
3/ Raid operations must be 4-byte aligned, so per operation alignment
   checks are added to the async_tx api.

A couple user visible changes are included in this update:
1/ A 'quickdata' attribute directory is added to the sysfs path of ioatdma
   channel objects.  This allows channels with raid capabilities to be
   identified and the activity of the channel to be monitored.
2/ The ioatdma module will now be auto-loaded by the hotplug
   infrastructure.  Add "blacklist ioatdma" to /etc/modprobe.d/blacklist to
   maintain the prior policy.

Provided the md raid6 acceleration patches [1] are accepted this
patchset will follow them into 2.6.32.

   git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx.git ioat-raid

Regards,
Dan

[1]: http://marc.info/?l=linux-raid&m=125173687620741&w=2
[2]: http://marc.info/?l=linux-raid&m=125203215231330&w=2

---

Dan Williams (15):
      dmaengine: add fence support
      dmaengine, async_tx: add a "no channel switch" allocator
      dmaengine: cleanup unused transaction types
      dmaengine, async_tx: support alignment checks
      ioat2+: add fence support
      ioat3: hardware version 3.2 register / descriptor definitions
      ioat3: split ioat3 support to its own file, add memset
      ioat: add 'ioat' sysfs attributes
      ioat3: enable dca for completion writes
      ioat3: xor support
      ioat3: xor self test
      ioat3: pq support
      ioat3: support xor via pq descriptors
      ioat3: interrupt descriptor support
      ioat3: segregate raid engines

Roland Dreier (2):
      Add MODULE_DEVICE_TABLE() so ioatdma module is autoloaded
      I/OAT: Convert to PCI_VDEVICE()

Tom Picard (1):
      ioat3: ioat3.2 pci ids for Jasper Forest

 arch/arm/mach-iop13xx/setup.c       |    7 -
 arch/arm/plat-iop/adma.c            |    2 -
 crypto/async_tx/async_memcpy.c      |    9 +-
 crypto/async_tx/async_memset.c      |    9 +-
 crypto/async_tx/async_pq.c          |   11 +-
 crypto/async_tx/async_raid6_recov.c |   47 +-
 crypto/async_tx/async_tx.c          |    4 +
 crypto/async_tx/async_xor.c         |   16 +-
 drivers/dma/Kconfig                 |    4 +
 drivers/dma/dmaengine.c             |   40 ++
 drivers/dma/dmatest.c               |   14 +
 drivers/dma/ioat/Makefile           |    2 +-
 drivers/dma/ioat/dma.c              |  136 ++++-
 drivers/dma/ioat/dma.h              |   34 +-
 drivers/dma/ioat/dma_v2.c           |  129 ++--
 drivers/dma/ioat/dma_v2.h           |   46 ++-
 drivers/dma/ioat/dma_v3.c           | 1220 +++++++++++++++++++++++++++++++++++
 drivers/dma/ioat/hw.h               |  142 ++++
 drivers/dma/ioat/pci.c              |   45 +-
 drivers/dma/ioat/registers.h        |   20 +
 drivers/dma/iop-adma.c              |    5 +-
 drivers/md/raid5.c                  |   37 +-
 include/linux/async_tx.h            |    3 +
 include/linux/dmaengine.h           |   60 ++-
 include/linux/pci_ids.h             |   10 +
 25 files changed, 1880 insertions(+), 172 deletions(-)
 create mode 100644 drivers/dma/ioat/dma_v3.c

             reply	other threads:[~2009-09-04  6:44 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-04  6:44 Dan Williams [this message]
2009-09-04  6:44 ` [PATCH 01/18] dmaengine: add fence support Dan Williams
2009-09-15 16:04   ` Sosnowski, Maciej
2009-09-04  6:44 ` [PATCH 02/18] dmaengine, async_tx: add a "no channel switch" allocator Dan Williams
2009-09-15 16:05   ` Sosnowski, Maciej
2009-09-15 17:28     ` Dan Williams
2009-09-04  6:44 ` [PATCH 03/18] dmaengine: cleanup unused transaction types Dan Williams
2009-09-15 16:06   ` Sosnowski, Maciej
2009-09-04  6:44 ` [PATCH 04/18] dmaengine, async_tx: support alignment checks Dan Williams
2009-09-15 16:06   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 05/18] ioat2+: add fence support Dan Williams
2009-09-15 16:06   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 06/18] ioat3: hardware version 3.2 register / descriptor definitions Dan Williams
2009-09-15 16:07   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 07/18] ioat3: split ioat3 support to its own file, add memset Dan Williams
2009-09-15 16:07   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 08/18] ioat: add 'ioat' sysfs attributes Dan Williams
2009-09-15 16:08   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 09/18] ioat3: enable dca for completion writes Dan Williams
2009-09-15 16:08   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 10/18] ioat3: xor support Dan Williams
2009-09-06  5:33   ` Pavel Machek
2009-09-15 16:08   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 11/18] ioat3: xor self test Dan Williams
2009-09-15 16:09   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 12/18] ioat3: pq support Dan Williams
2009-09-15 16:09   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 13/18] ioat3: support xor via pq descriptors Dan Williams
2009-09-15 16:09   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 14/18] ioat3: interrupt descriptor support Dan Williams
2009-09-15 16:10   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 15/18] ioat3: ioat3.2 pci ids for Jasper Forest Dan Williams
2009-09-15 16:10   ` Sosnowski, Maciej
2009-09-04  6:45 ` [PATCH 16/18] ioat3: segregate raid engines Dan Williams
2009-09-15 16:10   ` Sosnowski, Maciej
2009-09-04  6:46 ` [PATCH 17/18] Add MODULE_DEVICE_TABLE() so ioatdma module is autoloaded Dan Williams
2009-09-15 16:11   ` Sosnowski, Maciej
2009-09-04  6:46 ` [PATCH 18/18] I/OAT: Convert to PCI_VDEVICE() Dan Williams
2009-09-15 16:11   ` Sosnowski, Maciej

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=20090904064308.7141.30576.stgit@dwillia2-linux.ch.intel.com \
    --to=dan.j.williams@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=maciej.sosnowski@intel.com \
    /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.