diff options
| author | Jens Axboe <jens.axboe@oracle.com> | 2007-10-16 06:29:34 -0400 |
|---|---|---|
| committer | Jens Axboe <jens.axboe@oracle.com> | 2007-10-16 06:29:34 -0400 |
| commit | 3eed13fd933dbb81db12f7cdec6de9268c4443b5 (patch) | |
| tree | c16913706acffd4a0b29ec12cd68906b708c9a8a /arch/sparc/mm | |
| parent | a39d113936370ba524fa9e34d6954c3625c8aa64 (diff) | |
| parent | 2c941a204070ab32d92d40318a3196a7fb994c00 (diff) | |
Merge branch 'sglist-arch' into for-linus
Diffstat (limited to 'arch/sparc/mm')
| -rw-r--r-- | arch/sparc/mm/io-unit.c | 12 | ||||
| -rw-r--r-- | arch/sparc/mm/iommu.c | 10 | ||||
| -rw-r--r-- | arch/sparc/mm/sun4c.c | 10 |
3 files changed, 18 insertions, 14 deletions
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c index 7c89893b1f..375b4db637 100644 --- a/arch/sparc/mm/io-unit.c +++ b/arch/sparc/mm/io-unit.c | |||
| @@ -11,8 +11,8 @@ | |||
| 11 | #include <linux/mm.h> | 11 | #include <linux/mm.h> |
| 12 | #include <linux/highmem.h> /* pte_offset_map => kmap_atomic */ | 12 | #include <linux/highmem.h> /* pte_offset_map => kmap_atomic */ |
| 13 | #include <linux/bitops.h> | 13 | #include <linux/bitops.h> |
| 14 | #include <linux/scatterlist.h> | ||
| 14 | 15 | ||
| 15 | #include <asm/scatterlist.h> | ||
| 16 | #include <asm/pgalloc.h> | 16 | #include <asm/pgalloc.h> |
| 17 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
| 18 | #include <asm/sbus.h> | 18 | #include <asm/sbus.h> |
| @@ -144,8 +144,9 @@ static void iounit_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus | |||
| 144 | spin_lock_irqsave(&iounit->lock, flags); | 144 | spin_lock_irqsave(&iounit->lock, flags); |
| 145 | while (sz != 0) { | 145 | while (sz != 0) { |
| 146 | --sz; | 146 | --sz; |
| 147 | sg[sz].dvma_address = iounit_get_area(iounit, (unsigned long)page_address(sg[sz].page) + sg[sz].offset, sg[sz].length); | 147 | sg->dvma_address = iounit_get_area(iounit, (unsigned long)page_address(sg->page) + sg->offset, sg->length); |
| 148 | sg[sz].dvma_length = sg[sz].length; | 148 | sg->dvma_length = sg->length; |
| 149 | sg = sg_next(sg); | ||
| 149 | } | 150 | } |
| 150 | spin_unlock_irqrestore(&iounit->lock, flags); | 151 | spin_unlock_irqrestore(&iounit->lock, flags); |
| 151 | } | 152 | } |
| @@ -173,11 +174,12 @@ static void iounit_release_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_ | |||
| 173 | spin_lock_irqsave(&iounit->lock, flags); | 174 | spin_lock_irqsave(&iounit->lock, flags); |
| 174 | while (sz != 0) { | 175 | while (sz != 0) { |
| 175 | --sz; | 176 | --sz; |
| 176 | len = ((sg[sz].dvma_address & ~PAGE_MASK) + sg[sz].length + (PAGE_SIZE-1)) >> PAGE_SHIFT; | 177 | len = ((sg->dvma_address & ~PAGE_MASK) + sg->length + (PAGE_SIZE-1)) >> PAGE_SHIFT; |
| 177 | vaddr = (sg[sz].dvma_address - IOUNIT_DMA_BASE) >> PAGE_SHIFT; | 178 | vaddr = (sg->dvma_address - IOUNIT_DMA_BASE) >> PAGE_SHIFT; |
| 178 | IOD(("iounit_release %08lx-%08lx\n", (long)vaddr, (long)len+vaddr)); | 179 | IOD(("iounit_release %08lx-%08lx\n", (long)vaddr, (long)len+vaddr)); |
| 179 | for (len += vaddr; vaddr < len; vaddr++) | 180 | for (len += vaddr; vaddr < len; vaddr++) |
| 180 | clear_bit(vaddr, iounit->bmap); | 181 | clear_bit(vaddr, iounit->bmap); |
| 182 | sg = sg_next(sg); | ||
| 181 | } | 183 | } |
| 182 | spin_unlock_irqrestore(&iounit->lock, flags); | 184 | spin_unlock_irqrestore(&iounit->lock, flags); |
| 183 | } | 185 | } |
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c index 52e907af9d..283656d9f6 100644 --- a/arch/sparc/mm/iommu.c +++ b/arch/sparc/mm/iommu.c | |||
| @@ -12,8 +12,8 @@ | |||
| 12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
| 13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
| 14 | #include <linux/highmem.h> /* pte_offset_map => kmap_atomic */ | 14 | #include <linux/highmem.h> /* pte_offset_map => kmap_atomic */ |
| 15 | #include <linux/scatterlist.h> | ||
| 15 | 16 | ||
| 16 | #include <asm/scatterlist.h> | ||
| 17 | #include <asm/pgalloc.h> | 17 | #include <asm/pgalloc.h> |
| 18 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
| 19 | #include <asm/sbus.h> | 19 | #include <asm/sbus.h> |
| @@ -240,7 +240,7 @@ static void iommu_get_scsi_sgl_noflush(struct scatterlist *sg, int sz, struct sb | |||
| 240 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; | 240 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; |
| 241 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; | 241 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; |
| 242 | sg->dvma_length = (__u32) sg->length; | 242 | sg->dvma_length = (__u32) sg->length; |
| 243 | sg++; | 243 | sg = sg_next(sg); |
| 244 | } | 244 | } |
| 245 | } | 245 | } |
| 246 | 246 | ||
| @@ -254,7 +254,7 @@ static void iommu_get_scsi_sgl_gflush(struct scatterlist *sg, int sz, struct sbu | |||
| 254 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; | 254 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; |
| 255 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; | 255 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; |
| 256 | sg->dvma_length = (__u32) sg->length; | 256 | sg->dvma_length = (__u32) sg->length; |
| 257 | sg++; | 257 | sg = sg_next(sg); |
| 258 | } | 258 | } |
| 259 | } | 259 | } |
| 260 | 260 | ||
| @@ -285,7 +285,7 @@ static void iommu_get_scsi_sgl_pflush(struct scatterlist *sg, int sz, struct sbu | |||
| 285 | 285 | ||
| 286 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; | 286 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; |
| 287 | sg->dvma_length = (__u32) sg->length; | 287 | sg->dvma_length = (__u32) sg->length; |
| 288 | sg++; | 288 | sg = sg_next(sg); |
| 289 | } | 289 | } |
| 290 | } | 290 | } |
| 291 | 291 | ||
| @@ -325,7 +325,7 @@ static void iommu_release_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_b | |||
| 325 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; | 325 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; |
| 326 | iommu_release_one(sg->dvma_address & PAGE_MASK, n, sbus); | 326 | iommu_release_one(sg->dvma_address & PAGE_MASK, n, sbus); |
| 327 | sg->dvma_address = 0x21212121; | 327 | sg->dvma_address = 0x21212121; |
| 328 | sg++; | 328 | sg = sg_next(sg); |
| 329 | } | 329 | } |
| 330 | } | 330 | } |
| 331 | 331 | ||
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c index 005a3e72d4..ee6708fc44 100644 --- a/arch/sparc/mm/sun4c.c +++ b/arch/sparc/mm/sun4c.c | |||
| @@ -17,8 +17,8 @@ | |||
| 17 | #include <linux/highmem.h> | 17 | #include <linux/highmem.h> |
| 18 | #include <linux/fs.h> | 18 | #include <linux/fs.h> |
| 19 | #include <linux/seq_file.h> | 19 | #include <linux/seq_file.h> |
| 20 | #include <linux/scatterlist.h> | ||
| 20 | 21 | ||
| 21 | #include <asm/scatterlist.h> | ||
| 22 | #include <asm/page.h> | 22 | #include <asm/page.h> |
| 23 | #include <asm/pgalloc.h> | 23 | #include <asm/pgalloc.h> |
| 24 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
| @@ -1228,8 +1228,9 @@ static void sun4c_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus * | |||
| 1228 | { | 1228 | { |
| 1229 | while (sz != 0) { | 1229 | while (sz != 0) { |
| 1230 | --sz; | 1230 | --sz; |
| 1231 | sg[sz].dvma_address = (__u32)sun4c_lockarea(page_address(sg[sz].page) + sg[sz].offset, sg[sz].length); | 1231 | sg->dvma_address = (__u32)sun4c_lockarea(page_address(sg->page) + sg->offset, sg->length); |
| 1232 | sg[sz].dvma_length = sg[sz].length; | 1232 | sg->dvma_length = sg->length; |
| 1233 | sg = sg_next(sg); | ||
| 1233 | } | 1234 | } |
| 1234 | } | 1235 | } |
| 1235 | 1236 | ||
| @@ -1244,7 +1245,8 @@ static void sun4c_release_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_b | |||
| 1244 | { | 1245 | { |
| 1245 | while (sz != 0) { | 1246 | while (sz != 0) { |
| 1246 | --sz; | 1247 | --sz; |
| 1247 | sun4c_unlockarea((char *)sg[sz].dvma_address, sg[sz].length); | 1248 | sun4c_unlockarea((char *)sg->dvma_address, sg->length); |
| 1249 | sg = sg_next(sg); | ||
| 1248 | } | 1250 | } |
| 1249 | } | 1251 | } |
| 1250 | 1252 | ||
