search for: ttm_mem_io_reserve

Displaying 20 results from an estimated 28 matches for "ttm_mem_io_reserve".

2020 Jul 15
3
[PATCH 1/4] drm: remove optional dummy function from drivers using TTM
Implementing those is completely unecessary. Signed-off-by: Christian K?nig <christian.koenig at amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 5 ----- drivers/gpu/drm/drm_gem_vram_helper.c | 5 ----- drivers/gpu/drm/qxl/qxl_ttm.c | 6 ------ drivers/gpu/drm/radeon/radeon_ttm.c | 5 ----- drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 11 -----------
2020 Sep 01
0
[PATCH 3/3] drm/ttm: remove io_reserve_lru handling v2
...n) -{ - struct ttm_buffer_object *bo; - - bo = list_first_entry_or_null(&man->io_reserve_lru, - struct ttm_buffer_object, - io_reserve_lru); - if (!bo) - return -ENOSPC; - - list_del_init(&bo->io_reserve_lru); - ttm_bo_unmap_virtual_locked(bo); - return 0; -} - int ttm_mem_io_reserve(struct ttm_bo_device *bdev, struct ttm_resource *mem) { - struct ttm_resource_manager *man = ttm_manager_type(bdev, mem->mem_type); - int ret; - - if (mem->bus.io_reserved_count++) + if (mem->bus.base || mem->bus.offset || mem->bus.addr) return 0; + mem->bus.is_iom...
2019 Sep 27
5
[PATCH 1/2] drm/qxl: stop abusing TTM to call driver internal functions
...fset) { - struct ttm_mem_type_manager *man = &bo->tbo.bdev->man[bo->tbo.mem.mem_type]; void *rptr; int ret; struct io_mapping *map; @@ -160,9 +159,7 @@ void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, else goto fallback; - (void) ttm_mem_io_lock(man, false); - ret = ttm_mem_io_reserve(bo->tbo.bdev, &bo->tbo.mem); - ttm_mem_io_unlock(man); + ret = qxl_ttm_io_mem_reserve(bo->tbo.bdev, &bo->tbo.mem); return io_mapping_map_atomic_wc(map, bo->tbo.mem.bus.offset + page_offset); fallback: @@ -193,17 +190,11 @@ void qxl_bo_kunmap(struct qxl_bo *bo) void qxl_...
2019 Nov 20
2
Move io_reserve_lru handling into the driver
Just a gentle ping on this. Already got the Acked-by from Daniel, but I need some of the nouveau guys to test this since I can only compile test it. Regards, Christian.
2019 Sep 27
0
[PATCH 2/2] drm/ttm: stop exporting ttm_mem_io_* functions
...unlock(struct ttm_mem_type_manager *man) { @@ -111,7 +110,6 @@ void ttm_mem_io_unlock(struct ttm_mem_type_manager *man) mutex_unlock(&man->io_reserve_mutex); } -EXPORT_SYMBOL(ttm_mem_io_unlock); static int ttm_mem_io_evict(struct ttm_mem_type_manager *man) { @@ -153,7 +151,6 @@ int ttm_mem_io_reserve(struct ttm_bo_device *bdev, } return ret; } -EXPORT_SYMBOL(ttm_mem_io_reserve); void ttm_mem_io_free(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem) @@ -169,7 +166,6 @@ void ttm_mem_io_free(struct ttm_bo_device *bdev, bdev->driver->io_mem_free(bdev, mem); } -EXPORT_...
2020 Sep 01
4
[PATCH 1/3] drm/ttm: make sure that we always zero init mem.bus v2
We are trying to remove the io_lru handling and depend on zero init base, offset and addr here. v2: init addr as well Signed-off-by: Christian K?nig <christian.koenig at amd.com> --- drivers/gpu/drm/ttm/ttm_bo.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index e3931e515906..772c640a6046 100644 ---
2019 Sep 30
3
[PATCH 1/2] drm/nouveau: move io_reserve_lru handling into the driver
While working on TTM cleanups I've found that the io_reserve_lru used by Nouveau is actually not working at all. In general we should remove driver specific handling from the memory management, so this patch moves the io_reserve_lru handling into Nouveau instead. The patch should be functional correct, but is only compile tested! Signed-off-by: Christian König <christian.koenig at
2020 Aug 21
5
Moving LRU handling into Nouveau v3
Hi guys, so I got some hardware and tested this and after hammering out tons of typos it now seems to work fine. Could you give it more testing? Thanks in advance, Christian
2019 Sep 30
2
[Spice-devel] [PATCH 1/2] drm/qxl: stop abusing TTM to call driver internal functions
...em.mem_type]; >> void *rptr; >> int ret; >> struct io_mapping *map; >> @@ -160,9 +159,7 @@ void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, >> else >> goto fallback; >> >> - (void) ttm_mem_io_lock(man, false); >> - ret = ttm_mem_io_reserve(bo->tbo.bdev, &bo->tbo.mem); >> - ttm_mem_io_unlock(man); >> + ret = qxl_ttm_io_mem_reserve(bo->tbo.bdev, &bo->tbo.mem); >> >> return io_mapping_map_atomic_wc(map, bo->tbo.mem.bus.offset + page_offset); >> fallback: >> @@ -193,17 +1...
2019 Sep 30
2
[Spice-devel] [PATCH 1/2] drm/qxl: stop abusing TTM to call driver internal functions
...em.mem_type]; >> void *rptr; >> int ret; >> struct io_mapping *map; >> @@ -160,9 +159,7 @@ void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, >> else >> goto fallback; >> >> - (void) ttm_mem_io_lock(man, false); >> - ret = ttm_mem_io_reserve(bo->tbo.bdev, &bo->tbo.mem); >> - ttm_mem_io_unlock(man); >> + ret = qxl_ttm_io_mem_reserve(bo->tbo.bdev, &bo->tbo.mem); >> >> return io_mapping_map_atomic_wc(map, bo->tbo.mem.bus.offset + page_offset); >> fallback: >> @@ -193,17 +1...
2020 Jan 24
4
TTM/Nouveau cleanups
Hi guys, I've already send this out in September last year, but only got a response from Daniel. Could you guys please test this and tell me what you think about it? Basically I'm trying to remove all driver specific features from TTM which don't need to be inside the framework. Thanks, Christian.
2019 Sep 30
1
[Spice-devel] [PATCH 1/2] drm/qxl: stop abusing TTM to call driver internal functions
...gt;>>> struct io_mapping *map; >>>> @@ -160,9 +159,7 @@ void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, >>>> else >>>> goto fallback; >>>> >>>> - (void) ttm_mem_io_lock(man, false); >>>> - ret = ttm_mem_io_reserve(bo->tbo.bdev, &bo->tbo.mem); >>>> - ttm_mem_io_unlock(man); >>>> + ret = qxl_ttm_io_mem_reserve(bo->tbo.bdev, &bo->tbo.mem); >>>> >>>> return io_mapping_map_atomic_wc(map, bo->tbo.mem.bus.offset + >>>> pa...
2020 Oct 15
5
[PATCH v4 05/10] drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
...> @@ -526,6 +527,77 @@ void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map) > } > EXPORT_SYMBOL(ttm_bo_kunmap); > > +int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) > +{ > + struct ttm_resource *mem = &bo->mem; > + int ret; > + > + ret = ttm_mem_io_reserve(bo->bdev, mem); > + if (ret) > + return ret; > + > + if (mem->bus.is_iomem) { > + void __iomem *vaddr_iomem; > + unsigned long size = bo->num_pages << PAGE_SHIFT; Please use uint64_t here and make sure to cast bo->num_pages before shifting. We have an unit...
2019 Sep 27
0
[Spice-devel] [PATCH 1/2] drm/qxl: stop abusing TTM to call driver internal functions
...&bo->tbo.bdev->man[bo->tbo.mem.mem_type]; > void *rptr; > int ret; > struct io_mapping *map; > @@ -160,9 +159,7 @@ void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, > else > goto fallback; > > - (void) ttm_mem_io_lock(man, false); > - ret = ttm_mem_io_reserve(bo->tbo.bdev, &bo->tbo.mem); > - ttm_mem_io_unlock(man); > + ret = qxl_ttm_io_mem_reserve(bo->tbo.bdev, &bo->tbo.mem); > > return io_mapping_map_atomic_wc(map, bo->tbo.mem.bus.offset + page_offset); > fallback: > @@ -193,17 +190,11 @@ void qxl_bo_kunmap...
2020 Oct 19
1
[PATCH v4 05/10] drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
...bo_kunmap(struct ttm_bo_kmap_obj *map) >> ? } >> ? EXPORT_SYMBOL(ttm_bo_kunmap); >> ? +int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) >> +{ >> +??? struct ttm_resource *mem = &bo->mem; >> +??? int ret; >> + >> +??? ret = ttm_mem_io_reserve(bo->bdev, mem); >> +??? if (ret) >> +??????? return ret; >> + >> +??? if (mem->bus.is_iomem) { >> +??????? void __iomem *vaddr_iomem; >> +??????? unsigned long size = bo->num_pages << PAGE_SHIFT; > > Please use uint64_t here and make sure to...
2019 Sep 30
0
[Spice-devel] [PATCH 1/2] drm/qxl: stop abusing TTM to call driver internal functions
...t; >> int ret; > >> struct io_mapping *map; > >> @@ -160,9 +159,7 @@ void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, > >> else > >> goto fallback; > >> > >> - (void) ttm_mem_io_lock(man, false); > >> - ret = ttm_mem_io_reserve(bo->tbo.bdev, &bo->tbo.mem); > >> - ttm_mem_io_unlock(man); > >> + ret = qxl_ttm_io_mem_reserve(bo->tbo.bdev, &bo->tbo.mem); > >> > >> return io_mapping_map_atomic_wc(map, bo->tbo.mem.bus.offset + > >> page_offset); > &...
2020 Oct 15
1
[PATCH v4 05/10] drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
...) > > > } > > > EXPORT_SYMBOL(ttm_bo_kunmap); > > > +int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) > > > +{ > > > + struct ttm_resource *mem = &bo->mem; > > > + int ret; > > > + > > > + ret = ttm_mem_io_reserve(bo->bdev, mem); > > > + if (ret) > > > + return ret; > > > + > > > + if (mem->bus.is_iomem) { > > > + void __iomem *vaddr_iomem; > > > + unsigned long size = bo->num_pages << PAGE_SHIFT; > > > > Please use uint64_t...
2020 Oct 19
0
[PATCH v4 05/10] drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
Hi Thomas, [SNIP] >>> ? +int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) >>> +{ >>> +??? struct ttm_resource *mem = &bo->mem; >>> +??? int ret; >>> + >>> +??? ret = ttm_mem_io_reserve(bo->bdev, mem); >>> +??? if (ret) >>> +??????? return ret; >>> + >>> +??? if (mem->bus.is_iomem) { >>> +??????? void __iomem *vaddr_iomem; >>> +??????? unsigned long size = bo->num_pages << PAGE_SHIFT; >> Please use uint64_t...
2020 Oct 15
0
[PATCH v4 05/10] drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
...t;linux/highmem.h> #include <linux/wait.h> @@ -526,6 +527,77 @@ void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map) } EXPORT_SYMBOL(ttm_bo_kunmap); +int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) +{ + struct ttm_resource *mem = &bo->mem; + int ret; + + ret = ttm_mem_io_reserve(bo->bdev, mem); + if (ret) + return ret; + + if (mem->bus.is_iomem) { + void __iomem *vaddr_iomem; + unsigned long size = bo->num_pages << PAGE_SHIFT; + + if (mem->bus.addr) + vaddr_iomem = (void *)(((u8 *)mem->bus.addr)); + else if (mem->placement & TTM_PL_FLAG_W...
2020 Oct 20
0
[PATCH v5 05/10] drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
...t;linux/highmem.h> #include <linux/wait.h> @@ -527,6 +528,77 @@ void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map) } EXPORT_SYMBOL(ttm_bo_kunmap); +int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) +{ + struct ttm_resource *mem = &bo->mem; + int ret; + + ret = ttm_mem_io_reserve(bo->bdev, mem); + if (ret) + return ret; + + if (mem->bus.is_iomem) { + void __iomem *vaddr_iomem; + size_t size = bo->num_pages << PAGE_SHIFT; + + if (mem->bus.addr) + vaddr_iomem = (void __iomem *)mem->bus.addr; + else if (mem->bus.caching == ttm_write_combined) +...