Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 83015
b: refs/heads/master
c: d1b5163
h: refs/heads/master
i:
  83013: 77d549d
  83011: bfc6a15
  83007: 5550372
v: v3
  • Loading branch information
FUJITA Tomonori authored and Linus Torvalds committed Feb 5, 2008
1 parent c6670bf commit 28f6b51
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fde6a3c82d67f592eb587be4d12222b0ae6d4321
refs/heads/master: d1b5163206769aa93271bc1029e877ea9f920a5d
2 changes: 1 addition & 1 deletion trunk/drivers/parisc/ccio-dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -941,7 +941,7 @@ ccio_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
** w/o this association, we wouldn't have coherent DMA!
** Access to the virtual address is what forces a two pass algorithm.
*/
coalesced = iommu_coalesce_chunks(ioc, sglist, nents, ccio_alloc_range);
coalesced = iommu_coalesce_chunks(ioc, dev, sglist, nents, ccio_alloc_range);

/*
** Program the I/O Pdir
Expand Down
7 changes: 6 additions & 1 deletion trunk/drivers/parisc/iommu-helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,12 +95,14 @@ iommu_fill_pdir(struct ioc *ioc, struct scatterlist *startsg, int nents,
*/

static inline unsigned int
iommu_coalesce_chunks(struct ioc *ioc, struct scatterlist *startsg, int nents,
iommu_coalesce_chunks(struct ioc *ioc, struct device *dev,
struct scatterlist *startsg, int nents,
int (*iommu_alloc_range)(struct ioc *, size_t))
{
struct scatterlist *contig_sg; /* contig chunk head */
unsigned long dma_offset, dma_len; /* start/len of DMA stream */
unsigned int n_mappings = 0;
unsigned int max_seg_size = dma_get_max_seg_size(dev);

while (nents > 0) {

Expand Down Expand Up @@ -142,6 +144,9 @@ iommu_coalesce_chunks(struct ioc *ioc, struct scatterlist *startsg, int nents,
IOVP_SIZE) > DMA_CHUNK_SIZE))
break;

if (startsg->length + dma_len > max_seg_size)
break;

/*
** Next see if we can append the next chunk (i.e.
** it must end on one page and begin on another
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/parisc/sba_iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -946,7 +946,7 @@ sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
** w/o this association, we wouldn't have coherent DMA!
** Access to the virtual address is what forces a two pass algorithm.
*/
coalesced = iommu_coalesce_chunks(ioc, sglist, nents, sba_alloc_range);
coalesced = iommu_coalesce_chunks(ioc, dev, sglist, nents, sba_alloc_range);

/*
** Program the I/O Pdir
Expand Down

0 comments on commit 28f6b51

Please sign in to comment.