--- zzzz-none-000/linux-2.6.19.2/drivers/infiniband/hw/amso1100/c2_alloc.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/drivers/infiniband/hw/amso1100/c2_alloc.c 2007-01-11 07:38:19.000000000 +0000 @@ -42,14 +42,13 @@ { int i; struct sp_chunk *new_head; - dma_addr_t dma_addr; - new_head = dma_alloc_coherent(&c2dev->pcidev->dev, PAGE_SIZE, - &dma_addr, gfp_mask); + new_head = (struct sp_chunk *) __get_free_page(gfp_mask); if (new_head == NULL) return -ENOMEM; - new_head->dma_addr = dma_addr; + new_head->dma_addr = dma_map_single(c2dev->ibdev.dma_device, new_head, + PAGE_SIZE, DMA_FROM_DEVICE); pci_unmap_addr_set(new_head, mapping, new_head->dma_addr); new_head->next = NULL; @@ -81,8 +80,10 @@ while (root) { next = root->next; - dma_free_coherent(&c2dev->pcidev->dev, PAGE_SIZE, root, - pci_unmap_addr(root, mapping)); + dma_unmap_single(c2dev->ibdev.dma_device, + pci_unmap_addr(root, mapping), PAGE_SIZE, + DMA_FROM_DEVICE); + __free_page((struct page *) root); root = next; } }