Commit 0fa0955a authored by Ben Skeggs's avatar Ben Skeggs Committed by Danilo Krummrich
Browse files

drm/nouveau: pass drm to nouveau_mem_new(), instead of cli



The nouveau_cli pointer is only ever used to eventually access
nouveau_drm, so just store it directly.

Signed-off-by: default avatarBen Skeggs <bskeggs@nvidia.com>
Signed-off-by: default avatarDanilo Krummrich <dakr@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-30-bskeggs@nvidia.com
parent c6bf82d4
Loading
Loading
Loading
Loading
+8 −10
Original line number Diff line number Diff line
@@ -78,19 +78,18 @@ nouveau_mem_map(struct nouveau_mem *mem,
void
nouveau_mem_fini(struct nouveau_mem *mem)
{
	nvif_vmm_put(&mem->cli->drm->client.vmm.vmm, &mem->vma[1]);
	nvif_vmm_put(&mem->cli->drm->client.vmm.vmm, &mem->vma[0]);
	mutex_lock(&mem->cli->drm->master.lock);
	nvif_vmm_put(&mem->drm->client.vmm.vmm, &mem->vma[1]);
	nvif_vmm_put(&mem->drm->client.vmm.vmm, &mem->vma[0]);
	mutex_lock(&mem->drm->master.lock);
	nvif_mem_dtor(&mem->mem);
	mutex_unlock(&mem->cli->drm->master.lock);
	mutex_unlock(&mem->drm->master.lock);
}

int
nouveau_mem_host(struct ttm_resource *reg, struct ttm_tt *tt)
{
	struct nouveau_mem *mem = nouveau_mem(reg);
	struct nouveau_cli *cli = mem->cli;
	struct nouveau_drm *drm = cli->drm;
	struct nouveau_drm *drm = mem->drm;
	struct nvif_mmu *mmu = &drm->mmu;
	struct nvif_mem_ram_v0 args = {};
	u8 type;
@@ -126,8 +125,7 @@ int
nouveau_mem_vram(struct ttm_resource *reg, bool contig, u8 page)
{
	struct nouveau_mem *mem = nouveau_mem(reg);
	struct nouveau_cli *cli = mem->cli;
	struct nouveau_drm *drm = cli->drm;
	struct nouveau_drm *drm = mem->drm;
	struct nvif_mmu *mmu = &drm->mmu;
	u64 size = ALIGN(reg->size, 1 << page);
	int ret;
@@ -173,7 +171,7 @@ nouveau_mem_del(struct ttm_resource_manager *man, struct ttm_resource *reg)
}

int
nouveau_mem_new(struct nouveau_cli *cli, u8 kind, u8 comp,
nouveau_mem_new(struct nouveau_drm *drm, u8 kind, u8 comp,
		struct ttm_resource **res)
{
	struct nouveau_mem *mem;
@@ -181,7 +179,7 @@ nouveau_mem_new(struct nouveau_cli *cli, u8 kind, u8 comp,
	if (!(mem = kzalloc(sizeof(*mem), GFP_KERNEL)))
		return -ENOMEM;

	mem->cli = cli;
	mem->drm = drm;
	mem->kind = kind;
	mem->comp = comp;

+2 −2
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ struct ttm_tt;

struct nouveau_mem {
	struct ttm_resource base;
	struct nouveau_cli *cli;
	struct nouveau_drm *drm;
	u8 kind;
	u8 comp;
	struct nvif_mem mem;
@@ -21,7 +21,7 @@ nouveau_mem(struct ttm_resource *reg)
	return container_of(reg, struct nouveau_mem, base);
}

int nouveau_mem_new(struct nouveau_cli *, u8 kind, u8 comp,
int nouveau_mem_new(struct nouveau_drm *, u8 kind, u8 comp,
		    struct ttm_resource **);
void nouveau_mem_del(struct ttm_resource_manager *man,
		     struct ttm_resource *);
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ nouveau_sgdma_bind(struct ttm_device *bdev, struct ttm_tt *ttm, struct ttm_resou
		return ret;

	if (drm->client.device.info.family < NV_DEVICE_INFO_V0_TESLA) {
		ret = nouveau_mem_map(mem, &mem->cli->vmm.vmm, &mem->vma[0]);
		ret = nouveau_mem_map(mem, &drm->client.vmm.vmm, &mem->vma[0]);
		if (ret) {
			nouveau_mem_fini(mem);
			return ret;
+4 −4
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ nouveau_vram_manager_new(struct ttm_resource_manager *man,
	if (drm->client.device.info.ram_size == 0)
		return -ENOMEM;

	ret = nouveau_mem_new(&drm->master, nvbo->kind, nvbo->comp, res);
	ret = nouveau_mem_new(drm, nvbo->kind, nvbo->comp, res);
	if (ret)
		return ret;

@@ -105,7 +105,7 @@ nouveau_gart_manager_new(struct ttm_resource_manager *man,
	struct nouveau_drm *drm = nouveau_bdev(bo->bdev);
	int ret;

	ret = nouveau_mem_new(&drm->master, nvbo->kind, nvbo->comp, res);
	ret = nouveau_mem_new(drm, nvbo->kind, nvbo->comp, res);
	if (ret)
		return ret;

@@ -132,13 +132,13 @@ nv04_gart_manager_new(struct ttm_resource_manager *man,
	struct nouveau_mem *mem;
	int ret;

	ret = nouveau_mem_new(&drm->master, nvbo->kind, nvbo->comp, res);
	ret = nouveau_mem_new(drm, nvbo->kind, nvbo->comp, res);
	if (ret)
		return ret;

	mem = nouveau_mem(*res);
	ttm_resource_init(bo, place, *res);
	ret = nvif_vmm_get(&mem->cli->vmm.vmm, PTES, false, 12, 0,
	ret = nvif_vmm_get(&drm->client.vmm.vmm, PTES, false, 12, 0,
			   (long)(*res)->size, &mem->vma[0]);
	if (ret) {
		nouveau_mem_del(man, *res);