Просмотр исходного кода

IB/mthca: Fix allocation of ICM chunks in coherent memory

The change to allow allocating ICM chunks from coherent memory did not
increment the count of sg entries properly, so a chunk that required
more than allocation would not be mapped properly by the HCA.

Fix this by adding the missing increment of chunk->nsg.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
Roland Dreier 18 лет назад
Родитель
Сommit
11282b32a4
1 измененных файлов с 3 добавлено и 1 удалено
  1. 3 1
      drivers/infiniband/hw/mthca/mthca_memfree.c

+ 3 - 1
drivers/infiniband/hw/mthca/mthca_memfree.c

@@ -175,7 +175,9 @@ struct mthca_icm *mthca_alloc_icm(struct mthca_dev *dev, int npages,
 		if (!ret) {
 			++chunk->npages;
 
-			if (!coherent && chunk->npages == MTHCA_ICM_CHUNK_LEN) {
+			if (coherent)
+				++chunk->nsg;
+			else if (chunk->npages == MTHCA_ICM_CHUNK_LEN) {
 				chunk->nsg = pci_map_sg(dev->pdev, chunk->mem,
 							chunk->npages,
 							PCI_DMA_BIDIRECTIONAL);