From: Dan Williams <hidden> Date: 2006-02-03 01:51:13
This patch set was originally posted to linux-raid, Neil suggested that
I send to linux-kernel as well:
Per the discussion in this thread (http://marc.theaimsgroup.com/?
t=112603120100004&r=1&w=2) these patches implement the first phase of MD
acceleration, pre-emptible xor. To date these patches only cover raid5
calls to compute_parity for read/modify and reconstruct writes. The
plan is to expand this to cover raid5 check parity, raid5 compute block,
as well as the raid6 equivalents.
The ADMA (Asynchronous / Application Specific DMA) interface is proposed
as a cross platform mechanism for supporting system CPU offload engines.
The goal is to provide a unified asynchronous interface to support
memory copies, block xor, block pattern setting, block compare, CRC
calculation, cryptography etc. The ADMA interface should support a PIO
fallback mode allowing a given ADMA engine implementation to use the
system CPU for operations without a hardware accelerated backend. In
other words a client coded to the ADMA interface transparently receives
hardware acceleration for its operations depending on the features of
the underlying platform.
Ideally, with some coordination, the I/OAT DMA, ACRYPTO, and ADMA
efforts can unify to present a consistent asynchronous off-load engine
interface.
[RFC][PATCH 001 of 3] MD Acceleration: Base ADMA interface
[RFC][PATCH 002 of 3] MD Acceleration: md_adma driver for raid5 offload
[RFC][PATCH 003 of 3] MD Acceleration: raid5 changes to support asynchronous operation
NOTE: These patches are against Linus' git tree as of commit_id
0271fc2db6260dd46f196191e24281af2fddb879 (they should apply to 2.6.16-
rc1). They have only passed basic run time sanity checks on ARM, and
compile testing on i386.
The next phase of this development will target the remainder of raid5,
raid6, and the outcome of the asynchronous off-load engine unification
effort. The known asynchronous interface stakeholders have been CC'd.
Dan Williams
Linux Development Team
Storage Group - Intel Corporation
From: Jeff Garzik <hidden> Date: 2006-02-03 02:01:44
Dan Williams wrote:
This patch set was originally posted to linux-raid, Neil suggested that
I send to linux-kernel as well:
Per the discussion in this thread (http://marc.theaimsgroup.com/?
t=112603120100004&r=1&w=2) these patches implement the first phase of MD
acceleration, pre-emptible xor. To date these patches only cover raid5
calls to compute_parity for read/modify and reconstruct writes. The
plan is to expand this to cover raid5 check parity, raid5 compute block,
as well as the raid6 equivalents.
The ADMA (Asynchronous / Application Specific DMA) interface is proposed
as a cross platform mechanism for supporting system CPU offload engines.
The goal is to provide a unified asynchronous interface to support
memory copies, block xor, block pattern setting, block compare, CRC
calculation, cryptography etc. The ADMA interface should support a PIO
fallback mode allowing a given ADMA engine implementation to use the
system CPU for operations without a hardware accelerated backend. In
other words a client coded to the ADMA interface transparently receives
hardware acceleration for its operations depending on the features of
the underlying platform.
Here are some other things out there worth considering:
* SCSI XOR commands
* Figuring out how to support Promise SX4 (e.g. device offload), which
is a chip with integrated XOR engine and attached DIMM. RAID1 and RAID5
are best implemented on-card, but the Linux driver is responsible for
implementing all on-card actions, not a firmware.
Jeff
From: Pierre Ossman <hidden> Date: 2006-02-03 18:21:45
Dan Williams wrote:
The ADMA (Asynchronous / Application Specific DMA) interface is proposed
as a cross platform mechanism for supporting system CPU offload engines.
The goal is to provide a unified asynchronous interface to support
memory copies, block xor, block pattern setting, block compare, CRC
calculation, cryptography etc. The ADMA interface should support a PIO
fallback mode allowing a given ADMA engine implementation to use the
system CPU for operations without a hardware accelerated backend. In
other words a client coded to the ADMA interface transparently receives
hardware acceleration for its operations depending on the features of
the underlying platform.
I'm wondering, how common is this ADMA acronym? I've been writing a MMC
driver for some hardware where specifications aren't available. I have
found one document which list an "ADMA system address" register, with a
width of 64 bits. What are the odds of this being something that
conforms to said interface?
Rgds
Pierre
The ADMA (Asynchronous / Application Specific DMA) interface is proposed
as a cross platform mechanism for supporting system CPU offload engines.
The goal is to provide a unified asynchronous interface to support
memory copies, block xor, block pattern setting, block compare, CRC
calculation, cryptography etc. The ADMA interface should support a PIO
fallback mode allowing a given ADMA engine implementation to use the
system CPU for operations without a hardware accelerated backend. In
other words a client coded to the ADMA interface transparently receives
hardware acceleration for its operations depending on the features of
the underlying platform.
I'm wondering, how common is this ADMA acronym? I've been writing a MMC
driver for some hardware where specifications aren't available. I have
found one document which list an "ADMA system address" register, with a
width of 64 bits. What are the odds of this being something that
conforms to said interface?
oh dear, i thought it was either Advanced or Accelerated DMA, fwiw.
--
~Randy
From: Jeff Garzik <hidden> Date: 2006-02-03 18:58:12
Pierre Ossman wrote:
Dan Williams wrote:
quoted
The ADMA (Asynchronous / Application Specific DMA) interface is proposed
as a cross platform mechanism for supporting system CPU offload engines.
The goal is to provide a unified asynchronous interface to support
memory copies, block xor, block pattern setting, block compare, CRC
calculation, cryptography etc. The ADMA interface should support a PIO
fallback mode allowing a given ADMA engine implementation to use the
system CPU for operations without a hardware accelerated backend. In
other words a client coded to the ADMA interface transparently receives
hardware acceleration for its operations depending on the features of
the underlying platform.
I'm wondering, how common is this ADMA acronym? I've been writing a MMC
In ATA land, ADMA is a hardware ATA controller interface, similar to
AHCI. We even have a pdc_adma (Pacific Digital ADMA) driver in the
tree, and NVIDIA uses a variant of the ADMA interface in their SATA
controllers.
Jeff