Re: [PATCH 4/6] drm/nouveau: fix’s on ttm_resource rework to use size_t type
Christian König
ckoenig.leichtzumerken at gmail.com
Wed Oct 19 16:48:01 UTC 2022
Am 19.10.22 um 17:27 schrieb Somalapuram Amaranath:
> Fix the ttm_resource from num_pages to size_t size.
>
> Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram at amd.com>
I'm not an expert for nouveau so it might be possible that we better use
bo->base.size instead of bo->resource->size at some places. But that can
be cleaned up later if anybody really cares.
Acked-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/nouveau/nouveau_bo.c | 4 ++--
> drivers/gpu/drm/nouveau/nouveau_bo0039.c | 4 ++--
> drivers/gpu/drm/nouveau/nouveau_bo5039.c | 2 +-
> drivers/gpu/drm/nouveau/nouveau_bo74c1.c | 2 +-
> drivers/gpu/drm/nouveau/nouveau_bo85b5.c | 4 ++--
> drivers/gpu/drm/nouveau/nouveau_bo9039.c | 4 ++--
> drivers/gpu/drm/nouveau/nouveau_bo90b5.c | 4 ++--
> drivers/gpu/drm/nouveau/nouveau_boa0b5.c | 2 +-
> drivers/gpu/drm/nouveau/nouveau_gem.c | 5 ++---
> drivers/gpu/drm/nouveau/nouveau_mem.c | 4 ++--
> drivers/gpu/drm/nouveau/nouveau_ttm.c | 2 +-
> 11 files changed, 18 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index 126b3c6e12f9..16ca4a141866 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -532,7 +532,7 @@ nouveau_bo_map(struct nouveau_bo *nvbo)
> if (ret)
> return ret;
>
> - ret = ttm_bo_kmap(&nvbo->bo, 0, nvbo->bo.resource->num_pages, &nvbo->kmap);
> + ret = ttm_bo_kmap(&nvbo->bo, 0, PFN_UP(nvbo->bo.resource->size), &nvbo->kmap);
>
> ttm_bo_unreserve(&nvbo->bo);
> return ret;
> @@ -1236,7 +1236,7 @@ vm_fault_t nouveau_ttm_fault_reserve_notify(struct ttm_buffer_object *bo)
> } else {
> /* make sure bo is in mappable vram */
> if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_TESLA ||
> - bo->resource->start + bo->resource->num_pages < mappable)
> + bo->resource->start + PFN_UP(bo->resource->size) < mappable)
> return 0;
>
> for (i = 0; i < nvbo->placement.num_placement; ++i) {
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo0039.c b/drivers/gpu/drm/nouveau/nouveau_bo0039.c
> index 7390132129fe..e2ce44adaa5c 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo0039.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo0039.c
> @@ -52,7 +52,7 @@ nv04_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
> u32 src_offset = old_reg->start << PAGE_SHIFT;
> u32 dst_ctxdma = nouveau_bo_mem_ctxdma(bo, chan, new_reg);
> u32 dst_offset = new_reg->start << PAGE_SHIFT;
> - u32 page_count = new_reg->num_pages;
> + u32 page_count = PFN_UP(new_reg->size);
> int ret;
>
> ret = PUSH_WAIT(push, 3);
> @@ -62,7 +62,7 @@ nv04_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
> PUSH_MTHD(push, NV039, SET_CONTEXT_DMA_BUFFER_IN, src_ctxdma,
> SET_CONTEXT_DMA_BUFFER_OUT, dst_ctxdma);
>
> - page_count = new_reg->num_pages;
> + page_count = PFN_UP(new_reg->size);
> while (page_count) {
> int line_count = (page_count > 2047) ? 2047 : page_count;
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo5039.c b/drivers/gpu/drm/nouveau/nouveau_bo5039.c
> index 4c75c7b3804c..c6cf3629a9f9 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo5039.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo5039.c
> @@ -41,7 +41,7 @@ nv50_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
> {
> struct nouveau_mem *mem = nouveau_mem(old_reg);
> struct nvif_push *push = chan->chan.push;
> - u64 length = (new_reg->num_pages << PAGE_SHIFT);
> + u64 length = new_reg->size;
> u64 src_offset = mem->vma[0].addr;
> u64 dst_offset = mem->vma[1].addr;
> int src_tiled = !!mem->kind;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo74c1.c b/drivers/gpu/drm/nouveau/nouveau_bo74c1.c
> index ed6c09d67840..9b7ba31fae13 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo74c1.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo74c1.c
> @@ -44,7 +44,7 @@ nv84_bo_move_exec(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
> if (ret)
> return ret;
>
> - PUSH_NVSQ(push, NV74C1, 0x0304, new_reg->num_pages << PAGE_SHIFT,
> + PUSH_NVSQ(push, NV74C1, 0x0304, new_reg->size,
> 0x0308, upper_32_bits(mem->vma[0].addr),
> 0x030c, lower_32_bits(mem->vma[0].addr),
> 0x0310, upper_32_bits(mem->vma[1].addr),
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo85b5.c b/drivers/gpu/drm/nouveau/nouveau_bo85b5.c
> index dec29b2d8bb2..a15a38a87a95 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo85b5.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo85b5.c
> @@ -44,10 +44,10 @@ nva3_bo_move_copy(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
> struct nvif_push *push = chan->chan.push;
> u64 src_offset = mem->vma[0].addr;
> u64 dst_offset = mem->vma[1].addr;
> - u32 page_count = new_reg->num_pages;
> + u32 page_count = PFN_UP(new_reg->size);
> int ret;
>
> - page_count = new_reg->num_pages;
> + page_count = PFN_UP(new_reg->size);
> while (page_count) {
> int line_count = (page_count > 8191) ? 8191 : page_count;
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo9039.c b/drivers/gpu/drm/nouveau/nouveau_bo9039.c
> index 776b04976cdf..d2bb2687d401 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo9039.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo9039.c
> @@ -42,10 +42,10 @@ nvc0_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
> struct nouveau_mem *mem = nouveau_mem(old_reg);
> u64 src_offset = mem->vma[0].addr;
> u64 dst_offset = mem->vma[1].addr;
> - u32 page_count = new_reg->num_pages;
> + u32 page_count = PFN_UP(new_reg->size);
> int ret;
>
> - page_count = new_reg->num_pages;
> + page_count = PFN_UP(new_reg->size);
> while (page_count) {
> int line_count = (page_count > 2047) ? 2047 : page_count;
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo90b5.c b/drivers/gpu/drm/nouveau/nouveau_bo90b5.c
> index 8499f58213e3..4618f4f5ab56 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo90b5.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo90b5.c
> @@ -37,10 +37,10 @@ nvc0_bo_move_copy(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
> struct nvif_push *push = chan->chan.push;
> u64 src_offset = mem->vma[0].addr;
> u64 dst_offset = mem->vma[1].addr;
> - u32 page_count = new_reg->num_pages;
> + u32 page_count = PFN_UP(new_reg->size);
> int ret;
>
> - page_count = new_reg->num_pages;
> + page_count = PFN_UP(new_reg->size);
> while (page_count) {
> int line_count = (page_count > 8191) ? 8191 : page_count;
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_boa0b5.c b/drivers/gpu/drm/nouveau/nouveau_boa0b5.c
> index 575212472e7a..07a5c6302c98 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_boa0b5.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_boa0b5.c
> @@ -58,7 +58,7 @@ nve0_bo_move_copy(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
> PITCH_IN, PAGE_SIZE,
> PITCH_OUT, PAGE_SIZE,
> LINE_LENGTH_IN, PAGE_SIZE,
> - LINE_COUNT, new_reg->num_pages);
> + LINE_COUNT, PFN_UP(new_reg->size));
>
> PUSH_IMMD(push, NVA0B5, LAUNCH_DMA,
> NVDEF(NVA0B5, LAUNCH_DMA, DATA_TRANSFER_TYPE, NON_PIPELINED) |
> diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
> index fab542a758ff..2f479c96e415 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_gem.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
> @@ -679,7 +679,7 @@ nouveau_gem_pushbuf_reloc_apply(struct nouveau_cli *cli,
> }
>
> if (!nvbo->kmap.virtual) {
> - ret = ttm_bo_kmap(&nvbo->bo, 0, nvbo->bo.resource->num_pages,
> + ret = ttm_bo_kmap(&nvbo->bo, 0, PFN_UP(nvbo->bo.resource->size),
> &nvbo->kmap);
> if (ret) {
> NV_PRINTK(err, cli, "failed kmap for reloc\n");
> @@ -868,8 +868,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data,
> if (unlikely(cmd != req->suffix0)) {
> if (!nvbo->kmap.virtual) {
> ret = ttm_bo_kmap(&nvbo->bo, 0,
> - nvbo->bo.resource->
> - num_pages,
> + PFN_UP(nvbo->bo.resource->size),
> &nvbo->kmap);
> if (ret) {
> WIND_RING(chan);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_mem.c b/drivers/gpu/drm/nouveau/nouveau_mem.c
> index 76f8edefa637..1fde3a5d7c32 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_mem.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_mem.c
> @@ -115,7 +115,7 @@ nouveau_mem_host(struct ttm_resource *reg, struct ttm_tt *tt)
>
> mutex_lock(&drm->master.lock);
> ret = nvif_mem_ctor_type(mmu, "ttmHostMem", cli->mem->oclass, type, PAGE_SHIFT,
> - reg->num_pages << PAGE_SHIFT,
> + reg->size,
> &args, sizeof(args), &mem->mem);
> mutex_unlock(&drm->master.lock);
> return ret;
> @@ -128,7 +128,7 @@ nouveau_mem_vram(struct ttm_resource *reg, bool contig, u8 page)
> struct nouveau_cli *cli = mem->cli;
> struct nouveau_drm *drm = cli->drm;
> struct nvif_mmu *mmu = &cli->mmu;
> - u64 size = ALIGN(reg->num_pages << PAGE_SHIFT, 1 << page);
> + u64 size = ALIGN(reg->size, 1 << page);
> int ret;
>
> mutex_lock(&drm->master.lock);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
> index 9602c30928f2..1469a88910e4 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
> @@ -139,7 +139,7 @@ nv04_gart_manager_new(struct ttm_resource_manager *man,
> mem = nouveau_mem(*res);
> ttm_resource_init(bo, place, *res);
> ret = nvif_vmm_get(&mem->cli->vmm.vmm, PTES, false, 12, 0,
> - (long)(*res)->num_pages << PAGE_SHIFT, &mem->vma[0]);
> + (long)(*res)->size, &mem->vma[0]);
> if (ret) {
> nouveau_mem_del(man, *res);
> return ret;
More information about the amd-gfx
mailing list