diff options
-rw-r--r-- | drivers/block/DAC960.c | 1 | ||||
-rw-r--r-- | drivers/block/cpqarray.c | 1 | ||||
-rw-r--r-- | drivers/block/sx8.c | 1 | ||||
-rw-r--r-- | drivers/ieee1394/dma.c | 2 | ||||
-rw-r--r-- | drivers/media/video/ivtv/ivtv-driver.h | 1 | ||||
-rw-r--r-- | drivers/media/video/videobuf-dma-sg.c | 1 | ||||
-rw-r--r-- | drivers/mmc/host/mmci.h | 2 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci.c | 1 | ||||
-rw-r--r-- | drivers/usb/core/message.c | 2 | ||||
-rw-r--r-- | include/asm-xtensa/dma-mapping.h | 13 | ||||
-rw-r--r-- | include/linux/scatterlist.h | 5 | ||||
-rw-r--r-- | include/media/saa7146.h | 1 | ||||
-rw-r--r-- | net/ieee80211/ieee80211_crypt_tkip.c | 1 | ||||
-rw-r--r-- | net/ieee80211/ieee80211_crypt_wep.c | 1 | ||||
-rw-r--r-- | net/mac80211/wep.c | 2 |
15 files changed, 23 insertions, 12 deletions
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c index 53505422867c..9030c373ce67 100644 --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c @@ -44,6 +44,7 @@ #include <linux/init.h> #include <linux/jiffies.h> #include <linux/random.h> +#include <linux/scatterlist.h> #include <asm/io.h> #include <asm/uaccess.h> #include "DAC960.h" diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c index efab27fa1083..c8132d958795 100644 --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c @@ -37,6 +37,7 @@ #include <linux/spinlock.h> #include <linux/blkdev.h> #include <linux/genhd.h> +#include <linux/scatterlist.h> #include <asm/uaccess.h> #include <asm/io.h> diff --git a/drivers/block/sx8.c b/drivers/block/sx8.c index 282a69558e8a..52dc5e131718 100644 --- a/drivers/block/sx8.c +++ b/drivers/block/sx8.c @@ -27,6 +27,7 @@ #include <linux/hdreg.h> #include <linux/dma-mapping.h> #include <linux/completion.h> +#include <linux/scatterlist.h> #include <asm/io.h> #include <asm/uaccess.h> diff --git a/drivers/ieee1394/dma.c b/drivers/ieee1394/dma.c index 25e113b50d86..3051e312fdc8 100644 --- a/drivers/ieee1394/dma.c +++ b/drivers/ieee1394/dma.c @@ -12,7 +12,7 @@ #include <linux/pci.h> #include <linux/slab.h> #include <linux/vmalloc.h> -#include <asm/scatterlist.h> +#include <linux/scatterlist.h> #include "dma.h" diff --git a/drivers/media/video/ivtv/ivtv-driver.h b/drivers/media/video/ivtv/ivtv-driver.h index 3bda1df63cb6..49ce14d14a54 100644 --- a/drivers/media/video/ivtv/ivtv-driver.h +++ b/drivers/media/video/ivtv/ivtv-driver.h @@ -51,6 +51,7 @@ #include <linux/unistd.h> #include <linux/byteorder/swab.h> #include <linux/pagemap.h> +#include <linux/scatterlist.h> #include <linux/workqueue.h> #include <linux/mutex.h> #include <asm/uaccess.h> diff --git a/drivers/media/video/videobuf-dma-sg.c b/drivers/media/video/videobuf-dma-sg.c index 0a18286279d3..9ab94a749d81 100644 --- a/drivers/media/video/videobuf-dma-sg.c +++ b/drivers/media/video/videobuf-dma-sg.c @@ -27,6 +27,7 @@ #include <linux/pci.h> #include <linux/vmalloc.h> #include <linux/pagemap.h> +#include <linux/scatterlist.h> #include <asm/page.h> #include <asm/pgtable.h> diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h index 000e6a919782..0f39c490f022 100644 --- a/drivers/mmc/host/mmci.h +++ b/drivers/mmc/host/mmci.h @@ -169,7 +169,7 @@ static inline char *mmci_kmap_atomic(struct mmci_host *host, unsigned long *flag struct scatterlist *sg = host->sg_ptr; local_irq_save(*flags); - return kmap_atomic(sg->page, KM_BIO_SRC_IRQ) + sg->offset; + return kmap_atomic(sg_page(sg), KM_BIO_SRC_IRQ) + sg->offset; } static inline void mmci_kunmap_atomic(struct mmci_host *host, void *buffer, unsigned long *flags) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 0db837e44b77..d7c5b94d8c58 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -13,6 +13,7 @@ #include <linux/highmem.h> #include <linux/pci.h> #include <linux/dma-mapping.h> +#include <linux/scatterlist.h> #include <linux/mmc/host.h> diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 90d64a808464..8bdaa157ffe7 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c @@ -11,9 +11,9 @@ #include <linux/timer.h> #include <linux/ctype.h> #include <linux/device.h> +#include <linux/scatterlist.h> #include <linux/usb/quirks.h> #include <asm/byteorder.h> -#include <asm/scatterlist.h> #include "hcd.h" /* for usbcore internals */ #include "usb.h" diff --git a/include/asm-xtensa/dma-mapping.h b/include/asm-xtensa/dma-mapping.h index 82b03b3a2ee6..8bd9d2c02a24 100644 --- a/include/asm-xtensa/dma-mapping.h +++ b/include/asm-xtensa/dma-mapping.h @@ -58,11 +58,10 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, BUG_ON(direction == DMA_NONE); for (i = 0; i < nents; i++, sg++ ) { - BUG_ON(!sg->page); + BUG_ON(!sg_page(sg)); - sg->dma_address = page_to_phys(sg->page) + sg->offset; - consistent_sync(page_address(sg->page) + sg->offset, - sg->length, direction); + sg->dma_address = sg_phys(sg); + consistent_sync(sg_virt(sg), sg->length, direction); } return nents; @@ -128,8 +127,7 @@ dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, { int i; for (i = 0; i < nelems; i++, sg++) - consistent_sync(page_address(sg->page) + sg->offset, - sg->length, dir); + consistent_sync(sg_virt(sg), sg->length, dir); } static inline void @@ -138,8 +136,7 @@ dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, { int i; for (i = 0; i < nelems; i++, sg++) - consistent_sync(page_address(sg->page) + sg->offset, - sg->length, dir); + consistent_sync(sg_virt(sg), sg->length, dir); } static inline int dma_mapping_error(dma_addr_t dma_addr) diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index 42daf5e15265..df7ddcee7c4b 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -41,6 +41,11 @@ static inline void sg_set_page(struct scatterlist *sg, struct page *page) { unsigned long page_link = sg->page_link & 0x3; + /* + * In order for the low bit stealing approach to work, pages + * must be aligned at a 32-bit boundary as a minimum. + */ + BUG_ON((unsigned long) page & 0x03); #ifdef CONFIG_DEBUG_SG BUG_ON(sg->sg_magic != SG_MAGIC); #endif diff --git a/include/media/saa7146.h b/include/media/saa7146.h index cd3ff2c29d5e..88b2b5a619aa 100644 --- a/include/media/saa7146.h +++ b/include/media/saa7146.h @@ -12,6 +12,7 @@ #include <asm/io.h> /* for accessing devices */ #include <linux/stringify.h> #include <linux/mutex.h> +#include <linux/scatterlist.h> #include <linux/vmalloc.h> /* for vmalloc() */ #include <linux/mm.h> /* for vmalloc_to_page() */ diff --git a/net/ieee80211/ieee80211_crypt_tkip.c b/net/ieee80211/ieee80211_crypt_tkip.c index c796661a021b..811777682e2b 100644 --- a/net/ieee80211/ieee80211_crypt_tkip.c +++ b/net/ieee80211/ieee80211_crypt_tkip.c @@ -14,6 +14,7 @@ #include <linux/init.h> #include <linux/slab.h> #include <linux/random.h> +#include <linux/scatterlist.h> #include <linux/skbuff.h> #include <linux/netdevice.h> #include <linux/mm.h> diff --git a/net/ieee80211/ieee80211_crypt_wep.c b/net/ieee80211/ieee80211_crypt_wep.c index 0af6103d715c..9693429489ed 100644 --- a/net/ieee80211/ieee80211_crypt_wep.c +++ b/net/ieee80211/ieee80211_crypt_wep.c @@ -14,6 +14,7 @@ #include <linux/init.h> #include <linux/slab.h> #include <linux/random.h> +#include <linux/scatterlist.h> #include <linux/skbuff.h> #include <linux/mm.h> #include <asm/string.h> diff --git a/net/mac80211/wep.c b/net/mac80211/wep.c index cc806d640f7a..a84a23310ff4 100644 --- a/net/mac80211/wep.c +++ b/net/mac80211/wep.c @@ -16,7 +16,7 @@ #include <linux/crypto.h> #include <linux/err.h> #include <linux/mm.h> -#include <asm/scatterlist.h> +#include <linux/scatterlist.h> #include <net/mac80211.h> #include "ieee80211_i.h" |