From cefabe7eb1f1f1dba9692e21ab4f1b88b9163489 Mon Sep 17 00:00:00 2001 From: Sami Kiminki Date: Thu, 2 Nov 2017 22:03:15 +0200 Subject: gpu: nvgpu: Remove PTE kind logic Since NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL was made mandatory, kernel does not need to know the details about the PTE kinds anymore. Thus, we can remove the kind_gk20a.h header and the code related to kind table setup, as well as simplify buffer mapping code a bit. Bug 1902982 Change-Id: Iaf798023c219a64fb0a84da09431c5ce4bc046eb Signed-off-by: Sami Kiminki Reviewed-on: https://git-master.nvidia.com/r/1560933 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/ioctl_as.c | 15 +++++-------- drivers/gpu/nvgpu/common/linux/vm.c | 37 ++++++++++++++++--------------- 2 files changed, 25 insertions(+), 27 deletions(-) (limited to 'drivers/gpu/nvgpu/common/linux') diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_as.c b/drivers/gpu/nvgpu/common/linux/ioctl_as.c index 8a5318e4..f23dc53c 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_as.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_as.c @@ -79,22 +79,19 @@ static int gk20a_as_ioctl_map_buffer_ex( struct gk20a_as_share *as_share, struct nvgpu_as_map_buffer_ex_args *args) { - s16 compressible_kind; - s16 incompressible_kind; - gk20a_dbg_fn(""); - if (args->flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) { - compressible_kind = args->compr_kind; - incompressible_kind = args->incompr_kind; - } else { - /* unsupported, direct kind control must be used */ + /* unsupported, direct kind control must be used */ + if (!(args->flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL)) { + struct gk20a *g = as_share->vm->mm->g; + nvgpu_log_info(g, "Direct kind control must be requested"); return -EINVAL; } return nvgpu_vm_map_buffer(as_share->vm, args->dmabuf_fd, &args->offset, args->flags, - compressible_kind, incompressible_kind, + args->compr_kind, + args->incompr_kind, args->buffer_offset, args->mapping_size, NULL); diff --git a/drivers/gpu/nvgpu/common/linux/vm.c b/drivers/gpu/nvgpu/common/linux/vm.c index 0cfd010b..895a5771 100644 --- a/drivers/gpu/nvgpu/common/linux/vm.c +++ b/drivers/gpu/nvgpu/common/linux/vm.c @@ -32,7 +32,6 @@ #include "gk20a/gk20a.h" #include "gk20a/mm_gk20a.h" -#include "gk20a/kind_gk20a.h" #include "platform_gk20a.h" #include "os_linux.h" @@ -239,14 +238,17 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, binfo.flags = flags; binfo.size = dmabuf->size; + binfo.compr_kind = compr_kind; + binfo.incompr_kind = incompr_kind; - if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) { - if (compr_kind != NV_KIND_INVALID) - map_key_kind = compr_kind; - else - map_key_kind = incompr_kind; - } else { + if (compr_kind != NV_KIND_INVALID) map_key_kind = compr_kind; + else + map_key_kind = incompr_kind; + + if (map_key_kind == NV_KIND_INVALID) { + nvgpu_err(g, "Valid kind must be supplied"); + return -EINVAL; } if (vm->userspace_managed && @@ -277,10 +279,6 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, goto clean_up; } - err = nvgpu_vm_init_kind_info(&binfo, compr_kind, incompr_kind); - if (err) - goto clean_up; - aperture = gk20a_dmabuf_aperture(g, dmabuf); if (aperture == APERTURE_INVALID) { err = -EINVAL; @@ -321,9 +319,9 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, va_allocated = true; } - err = nvgpu_vm_compute_kind_and_compression(vm, &binfo); + err = nvgpu_vm_compute_compression(vm, &binfo); if (err) { - nvgpu_err(g, "failure setting up kind and compression"); + nvgpu_err(g, "failure setting up compression"); goto clean_up; } @@ -340,10 +338,12 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, binfo.ctag_lines); if (err) { /* TBD: we can partially alloc ctags as well... */ - if (binfo.use_uc_kind_v) { - /* no comptags, but fallback kind available */ - binfo.kind_v = binfo.uc_kind_v; - } else { + + /* prevent compression ... */ + binfo.compr_kind = NV_KIND_INVALID; + + /* ... and make sure we have the fallback */ + if (binfo.incompr_kind == NV_KIND_INVALID) { nvgpu_err(g, "comptag alloc failed and no fallback kind specified"); goto clean_up; } @@ -379,7 +379,8 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, buffer_offset, /* sg offset */ mapping_size, binfo.pgsz_idx, - binfo.kind_v, + (binfo.compr_kind != NV_KIND_INVALID ? + binfo.compr_kind : binfo.incompr_kind), ctag_offset, flags, rw_flag, clear_ctags, -- cgit v1.2.2