Commit c1c440d4 authored by Christian König's avatar Christian König
Browse files

drm/ttm: cleanup coding style and implementation.



Only functional change is to always keep io_reserved_count up to date
for debugging even when it is not used otherwise.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/378242/
parent ce747733
Loading
Loading
Loading
Loading
+48 −49
Original line number Diff line number Diff line
@@ -115,32 +115,29 @@ static int ttm_mem_io_evict(struct ttm_mem_type_manager *man)
{
	struct ttm_buffer_object *bo;

	if (!man->use_io_reserve_lru || list_empty(&man->io_reserve_lru))
		return -ENOSPC;

	bo = list_first_entry(&man->io_reserve_lru,
	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_mem_reg *mem)
{
	struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
	int ret = 0;
	int ret;

	if (mem->bus.io_reserved_count++)
		return 0;

	if (!bdev->driver->io_mem_reserve)
		return 0;
	if (likely(!man->use_io_reserve_lru))
		return bdev->driver->io_mem_reserve(bdev, mem);

	if (bdev->driver->io_mem_reserve &&
	    mem->bus.io_reserved_count++ == 0) {
retry:
	ret = bdev->driver->io_mem_reserve(bdev, mem);
	if (ret == -ENOSPC) {
@@ -148,33 +145,29 @@ retry:
		if (ret == 0)
			goto retry;
	}
	}
	return ret;
}

void ttm_mem_io_free(struct ttm_bo_device *bdev,
		     struct ttm_mem_reg *mem)
{
	struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
	if (--mem->bus.io_reserved_count)
		return;

	if (likely(!man->use_io_reserve_lru))
	if (!bdev->driver->io_mem_free)
		return;

	if (bdev->driver->io_mem_reserve &&
	    --mem->bus.io_reserved_count == 0 &&
	    bdev->driver->io_mem_free)
	bdev->driver->io_mem_free(bdev, mem);

}

int ttm_mem_io_reserve_vm(struct ttm_buffer_object *bo)
{
	struct ttm_mem_type_manager *man = &bo->bdev->man[bo->mem.mem_type];
	struct ttm_mem_reg *mem = &bo->mem;
	int ret;

	if (!mem->bus.io_reserved_vm) {
		struct ttm_mem_type_manager *man =
			&bo->bdev->man[mem->mem_type];
	if (mem->bus.io_reserved_vm)
		return 0;

	ret = ttm_mem_io_reserve(bo->bdev, mem);
	if (unlikely(ret != 0))
@@ -183,7 +176,6 @@ int ttm_mem_io_reserve_vm(struct ttm_buffer_object *bo)
	if (man->use_io_reserve_lru)
		list_add_tail(&bo->io_reserve_lru,
			      &man->io_reserve_lru);
	}
	return 0;
}

@@ -191,14 +183,16 @@ void ttm_mem_io_free_vm(struct ttm_buffer_object *bo)
{
	struct ttm_mem_reg *mem = &bo->mem;

	if (mem->bus.io_reserved_vm) {
	if (!mem->bus.io_reserved_vm)
		return;

	mem->bus.io_reserved_vm = false;
	list_del_init(&bo->io_reserve_lru);
	ttm_mem_io_free(bo->bdev, mem);
}
}

static int ttm_mem_reg_ioremap(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem,
static int ttm_mem_reg_ioremap(struct ttm_bo_device *bdev,
			       struct ttm_mem_reg *mem,
			       void **virtual)
{
	struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
@@ -216,9 +210,11 @@ static int ttm_mem_reg_ioremap(struct ttm_bo_device *bdev, struct ttm_mem_reg *m
		addr = mem->bus.addr;
	} else {
		if (mem->placement & TTM_PL_FLAG_WC)
			addr = ioremap_wc(mem->bus.base + mem->bus.offset, mem->bus.size);
			addr = ioremap_wc(mem->bus.base + mem->bus.offset,
					  mem->bus.size);
		else
			addr = ioremap(mem->bus.base + mem->bus.offset, mem->bus.size);
			addr = ioremap(mem->bus.base + mem->bus.offset,
				       mem->bus.size);
		if (!addr) {
			(void) ttm_mem_io_lock(man, false);
			ttm_mem_io_free(bdev, mem);
@@ -230,7 +226,8 @@ static int ttm_mem_reg_ioremap(struct ttm_bo_device *bdev, struct ttm_mem_reg *m
	return 0;
}

static void ttm_mem_reg_iounmap(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem,
static void ttm_mem_reg_iounmap(struct ttm_bo_device *bdev,
				struct ttm_mem_reg *mem,
				void *virtual)
{
	struct ttm_mem_type_manager *man;
@@ -513,10 +510,12 @@ static int ttm_bo_ioremap(struct ttm_buffer_object *bo,
	} else {
		map->bo_kmap_type = ttm_bo_map_iomap;
		if (mem->placement & TTM_PL_FLAG_WC)
			map->virtual = ioremap_wc(bo->mem.bus.base + bo->mem.bus.offset + offset,
			map->virtual = ioremap_wc(bo->mem.bus.base +
						  bo->mem.bus.offset + offset,
						  size);
		else
			map->virtual = ioremap(bo->mem.bus.base + bo->mem.bus.offset + offset,
			map->virtual = ioremap(bo->mem.bus.base +
					       bo->mem.bus.offset + offset,
					       size);
	}
	return (!map->virtual) ? -ENOMEM : 0;