Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

nouveau: use ttm populate mapping functions. (v2)

Instead of rolling driver copies of them.

v2: cleanup return handling (Ben)

Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200804025632.3868079-4-airlied@gmail.com

+2 -36
+2 -36
drivers/gpu/drm/nouveau/nouveau_bo.c
··· 1526 1526 struct ttm_dma_tt *ttm_dma = (void *)ttm; 1527 1527 struct nouveau_drm *drm; 1528 1528 struct device *dev; 1529 - unsigned i; 1530 - int r; 1531 1529 bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG); 1532 1530 1533 1531 if (ttm->state != tt_unpopulated) ··· 1553 1555 return ttm_dma_populate((void *)ttm, dev, ctx); 1554 1556 } 1555 1557 #endif 1556 - 1557 - r = ttm_pool_populate(ttm, ctx); 1558 - if (r) { 1559 - return r; 1560 - } 1561 - 1562 - for (i = 0; i < ttm->num_pages; i++) { 1563 - dma_addr_t addr; 1564 - 1565 - addr = dma_map_page(dev, ttm->pages[i], 0, PAGE_SIZE, 1566 - DMA_BIDIRECTIONAL); 1567 - 1568 - if (dma_mapping_error(dev, addr)) { 1569 - while (i--) { 1570 - dma_unmap_page(dev, ttm_dma->dma_address[i], 1571 - PAGE_SIZE, DMA_BIDIRECTIONAL); 1572 - ttm_dma->dma_address[i] = 0; 1573 - } 1574 - ttm_pool_unpopulate(ttm); 1575 - return -EFAULT; 1576 - } 1577 - 1578 - ttm_dma->dma_address[i] = addr; 1579 - } 1580 - return 0; 1558 + return ttm_populate_and_map_pages(dev, ttm_dma, ctx); 1581 1559 } 1582 1560 1583 1561 static void ··· 1562 1588 struct ttm_dma_tt *ttm_dma = (void *)ttm; 1563 1589 struct nouveau_drm *drm; 1564 1590 struct device *dev; 1565 - unsigned i; 1566 1591 bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG); 1567 1592 1568 1593 if (slave) ··· 1584 1611 } 1585 1612 #endif 1586 1613 1587 - for (i = 0; i < ttm->num_pages; i++) { 1588 - if (ttm_dma->dma_address[i]) { 1589 - dma_unmap_page(dev, ttm_dma->dma_address[i], PAGE_SIZE, 1590 - DMA_BIDIRECTIONAL); 1591 - } 1592 - } 1593 - 1594 - ttm_pool_unpopulate(ttm); 1614 + ttm_unmap_and_unpopulate_pages(dev, ttm_dma); 1595 1615 } 1596 1616 1597 1617 void