linux/drivers
James Bottomley dde2020754 libata: eliminate the home grown dma padding in favour of
that provided by the block layer

ATA requires that all DMA transfers begin and end on word boundaries.
Because of this, a large amount of machinery grew up in ide to adjust
scatterlists on this basis.  However, as of 2.5, the block layer has a
dma_alignment variable which ensures both the beginning and length of a
DMA transfer are aligned on the dma_alignment boundary.  Although the
block layer does adjust the beginning of the transfer to ensure this
happens, it doesn't actually adjust the length, it merely makes sure
that space is allocated for transfers beyond the declared length.  The
upshot of this is that scatterlists may be padded to any size between
the actual length and the length adjusted to the dma_alignment safely
knowing that memory is allocated in this region.

Right at the moment, SCSI takes the default dma_aligment which is on a
512 byte boundary.  Note that this aligment only applies to transfers
coming in from user space.  However, since all kernel allocations are
automatically aligned on a minimum of 32 byte boundaries, it is safe to
adjust them in this manner as well.

tj: * Adjusting sg after padding is done in block layer.  Make libata
      set queue alignment correctly for ATAPI devices and drop broken
      sg mangling from ata_sg_setup().
    * Use request->raw_data_len for ATAPI transfer chunk size.
    * Killed qc->raw_nbytes.
    * Separated out killing qc->n_iter.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-02-19 11:36:56 +01:00
..
acorn/char
acpi Merge branches 'release', 'dmi', 'idle' and 'misc' into release 2008-02-14 02:44:28 -05:00
amba
ata libata: eliminate the home grown dma padding in favour of 2008-02-19 11:36:56 +01:00
atm
auxdisplay
base Driver core: Revert "Fix Firmware class name collision" 2008-02-07 11:31:46 -08:00
block Fix compile of swim3 as module 2008-02-14 20:58:04 -08:00
bluetooth hci_ldisc: fix null pointer deref 2008-02-12 17:54:16 -08:00
cdrom Merge branch 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2008-02-07 09:02:26 -08:00
char [POWERPC] hvc_rtas_init() must be __init 2008-02-14 22:11:02 +11:00
clocksource
connector
cpufreq [CPUFREQ] fix configuration help message 2008-02-06 22:57:58 -05:00
cpuidle ACPI, cpuidle: Clarify C-state description in sysfs 2008-02-14 00:09:55 -05:00
crypto [HIFN]: Fix invalid config ifdefs for RNG support 2008-02-15 19:15:05 +08:00
dca DCA: convert struct class_device to struct device. 2008-02-08 15:33:33 -08:00
dio dio: ARRAY_SIZE() cleanup 2008-02-05 09:44:23 -08:00
dma async_tx: replace 'int_en' with operation preparation flags 2008-02-06 10:12:18 -07:00
edac drivers/edac/i3000: document type promotion 2008-02-07 08:42:23 -08:00
eisa
firewire firewire: fw-sbp2: Use sbp2 device-provided mgt orb timeout for logins 2008-01-30 22:22:29 +01:00
firmware SMBIOS/DMI: add type 41 = Onboard Devices Extended Information 2008-02-08 09:22:37 -08:00
gpio gpio: handle pca953{4,5,6,7,8} too 2008-02-06 10:41:15 -08:00
hid HID: add USB IDs for MacBook 3rd generation 2008-02-13 17:08:04 +01:00
hwmon hwmon: (lm80) Add individual alarm files 2008-02-07 20:39:45 -05:00
i2c hwmon: Discard useless I2C driver IDs 2008-02-07 20:39:44 -05:00
ide ide-cd: fix missing residual count setting in DMA mode 2008-02-19 01:41:26 +01:00
ieee1394 ieee1394: sbp2: fix bogus s/g access change 2008-02-02 13:48:16 +01:00
infiniband RDMA/nes: Fix possible array overrun 2008-02-18 10:33:59 -08:00
input mn10300: add the MN10300/AM33 architecture to the kernel 2008-02-08 09:22:30 -08:00
isdn isdn: fix section mismatch warning for ISACVer 2008-02-09 23:29:28 -08:00
leds PWM LED driver 2008-02-08 09:22:38 -08:00
lguest lguest: accept guest _PAGE_PWT page table entries 2008-02-09 23:24:09 +01:00
macintosh Fix compile of swim3 as module 2008-02-14 20:58:04 -08:00
mca
md d_path: Make d_path() use a struct path 2008-02-14 21:17:09 -08:00
media V4L/DVB (7219): zoran: Fix namespace conflicts with Zoran 'GPIO_MAX' enum 2008-02-18 12:18:28 -03:00
memstick drivers/memstick/host/tifm_ms.c breakage 2008-02-13 08:16:35 -08:00
message [SCSI] mpt fusion: Request I/O resources only when required 2008-02-11 10:20:54 -06:00
mfd ASIC3 driver 2008-02-07 08:42:23 -08:00
misc thinkpad_acpi: static 2008-02-14 01:01:28 -05:00
mmc mmc: extend ricoh_mmc to support Ricoh RL5c476 2008-02-08 09:02:47 +01:00
mtd Introduce path_put() 2008-02-14 21:13:33 -08:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-02-15 07:33:07 -08:00
nubus nubus: kill drivers/nubus/nubus_syms.c 2008-02-05 09:44:23 -08:00
of [POWERPC] Create and hook up of_platform_device_shutdown 2008-02-06 16:29:59 +11:00
oprofile d_path: Make get_dcookie() use a struct path argument 2008-02-14 21:17:08 -08:00
parisc iommu sg merging: parisc: make iommu respect the segment size limits 2008-02-05 09:44:10 -08:00
parport parport: section fixup 2008-02-13 16:21:19 -08:00
pci mn10300: add the MN10300/AM33 architecture to the kernel 2008-02-08 09:22:30 -08:00
pcmcia ide: introduce HAVE_IDE 2008-02-09 10:46:40 +01:00
pnp Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2008-02-14 21:29:46 -08:00
power Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2008-02-07 09:45:58 -08:00
ps3 [POWERPC] PS3: Update sys-manager button events 2008-02-14 22:11:01 +11:00
rapidio Merge branch 'linux-2.6' 2008-01-31 11:25:51 +11:00
rtc rtc-r9701.c: silence compiler warning 2008-02-09 23:27:01 -08:00
s390 claw/lcs/netiucv: check s390dbf level before sprints 2008-02-11 11:14:50 -05:00
sbus
scsi libata: eliminate the home grown dma padding in favour of 2008-02-19 11:36:56 +01:00
serial serial: sh-sci: Fix up SH-5 build. 2008-02-14 14:22:12 +09:00
sh maple: improve detection of attached peripherals 2008-02-14 14:22:11 +09:00
sn
spi spi: remove more dev->power.power_state usage 2008-02-06 10:41:11 -08:00
ssb drivers/ssb/: Spelling fixes 2008-02-03 17:30:25 +02:00
tc
telephony
thermal ACPI: thermal: syntax, spelling, kernel-doc 2008-02-07 23:48:04 -05:00
uio uio: nopage 2008-02-06 10:41:07 -08:00
usb d_path: Make d_path() use a struct path 2008-02-14 21:17:09 -08:00
video mn10300: add the MN10300/AM33 architecture to the kernel 2008-02-08 09:22:30 -08:00
virtio virtio: add missing #include <linux/delay.h> 2008-02-06 10:41:21 -08:00
w1 DS1WM: decouple host IRQ and INTR active state settings 2008-02-07 08:42:06 -08:00
watchdog drivers/watchdog/: Spelling fixes 2008-02-03 17:32:52 +02:00
xen
zorro
Kconfig memstick: initial commit for Sony MemoryStick support 2008-02-09 11:08:34 -08:00
Makefile memstick: initial commit for Sony MemoryStick support 2008-02-09 11:08:34 -08:00