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 <skiminki@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1560933
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Sami Kiminki
2017-11-02 22:03:15 +02:00
committed by mobile promotions
parent b584bf8aa8
commit cefabe7eb1
20 changed files with 49 additions and 1529 deletions

View File

@@ -93,7 +93,6 @@ nvgpu-y := \
gk20a/dbg_gpu_gk20a.o \
gk20a/regops_gk20a.o \
gk20a/gr_gk20a.o \
gk20a/kind_gk20a.o \
gk20a/mm_gk20a.o \
gk20a/pmu_gk20a.o \
gk20a/flcn_gk20a.o \

View File

@@ -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 */
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);

View File

@@ -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 {
map_key_kind = compr_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,

View File

@@ -35,7 +35,6 @@
#include "gk20a/gk20a.h"
#include "gk20a/mm_gk20a.h"
#include "gk20a/kind_gk20a.h"
static void __nvgpu_vm_unmap(struct nvgpu_mapped_buf *mapped_buffer,
struct vm_gk20a_mapping_batch *batch);
@@ -829,123 +828,36 @@ done:
return;
}
int nvgpu_vm_init_kind_info(struct nvgpu_ctag_buffer_info *binfo,
s16 compr_kind, s16 incompr_kind)
{
if (binfo->flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) {
/* were we supplied with a kind in either parameter? */
if ((compr_kind < 0 || compr_kind >= NV_KIND_ATTR_SIZE) &&
(incompr_kind < 0 || incompr_kind >= NV_KIND_ATTR_SIZE))
return -EINVAL;
if (compr_kind != NV_KIND_INVALID) {
binfo->use_kind_v = true;
binfo->kind_v = (u8)compr_kind;
}
if (incompr_kind != NV_KIND_INVALID) {
binfo->use_uc_kind_v = true;
binfo->uc_kind_v = (u8)incompr_kind;
}
} else {
if (compr_kind < 0 || compr_kind >= NV_KIND_ATTR_SIZE)
return -EINVAL;
binfo->use_kind_v = true;
binfo->kind_v = (u8)compr_kind;
/*
* Note: nvgpu_vm_kind_and_compression() will figure out
* uc_kind_v or return an error.
*/
}
return 0;
}
static int nvgpu_vm_setup_kind_legacy(struct vm_gk20a *vm,
struct nvgpu_ctag_buffer_info *binfo,
bool *pkind_compressible)
{
struct gk20a *g = gk20a_from_vm(vm);
bool kind_compressible;
if (unlikely(binfo->kind_v == g->ops.mm.get_kind_invalid()))
binfo->kind_v = g->ops.mm.get_kind_pitch();
if (unlikely(!gk20a_kind_is_supported(binfo->kind_v))) {
nvgpu_err(g, "kind 0x%x not supported", binfo->kind_v);
return -EINVAL;
}
binfo->uc_kind_v = g->ops.mm.get_kind_invalid();
/*
* Find a suitable incompressible kind if it becomes necessary later.
*/
kind_compressible = gk20a_kind_is_compressible(binfo->kind_v);
if (kind_compressible) {
binfo->uc_kind_v = gk20a_get_uncompressed_kind(binfo->kind_v);
if (binfo->uc_kind_v == g->ops.mm.get_kind_invalid()) {
/*
* Shouldn't happen, but it is worth cross-checking.
*/
nvgpu_err(g, "comptag kind 0x%x can't be"
" downgraded to uncompressed kind",
binfo->kind_v);
return -EINVAL;
}
}
*pkind_compressible = kind_compressible;
return 0;
}
int nvgpu_vm_compute_kind_and_compression(struct vm_gk20a *vm,
int nvgpu_vm_compute_compression(struct vm_gk20a *vm,
struct nvgpu_ctag_buffer_info *binfo)
{
bool kind_compressible;
bool kind_compressible = (binfo->compr_kind != NV_KIND_INVALID);
struct gk20a *g = gk20a_from_vm(vm);
int ctag_granularity = g->ops.fb.compression_page_size(g);
if (!binfo->use_kind_v)
binfo->kind_v = g->ops.mm.get_kind_invalid();
if (!binfo->use_uc_kind_v)
binfo->uc_kind_v = g->ops.mm.get_kind_invalid();
if (binfo->flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) {
kind_compressible = (binfo->kind_v !=
g->ops.mm.get_kind_invalid());
if (!kind_compressible)
binfo->kind_v = binfo->uc_kind_v;
} else {
int err = nvgpu_vm_setup_kind_legacy(vm, binfo,
&kind_compressible);
if (err)
return err;
}
/* comptags only supported for suitable kinds, 128KB pagesize */
if (kind_compressible &&
vm->gmmu_page_sizes[binfo->pgsz_idx] <
g->ops.fb.compressible_page_size(g)) {
/* it is safe to fall back to uncompressed as
functionality is not harmed */
binfo->kind_v = binfo->uc_kind_v;
/*
* Let's double check that there is a fallback kind
*/
if (binfo->incompr_kind == NV_KIND_INVALID) {
nvgpu_err(g,
"Unsupported page size for compressible "
"kind, but no fallback kind");
return -EINVAL;
} else {
nvgpu_log(g, gpu_dbg_map,
"Unsupported page size for compressible "
"kind, demoting to incompressible");
binfo->compr_kind = NV_KIND_INVALID;
kind_compressible = false;
}
}
if (kind_compressible)
binfo->ctag_lines = DIV_ROUND_UP_ULL(binfo->size,
ctag_granularity);
else
binfo->ctag_lines = 0;
binfo->use_kind_v = (binfo->kind_v != g->ops.mm.get_kind_invalid());
binfo->use_uc_kind_v = (binfo->uc_kind_v !=
g->ops.mm.get_kind_invalid());
return 0;
}

View File

@@ -25,7 +25,6 @@
#include <trace/events/gk20a.h>
#include "gk20a.h"
#include "kind_gk20a.h"
#include "fb_gk20a.h"
#include <nvgpu/timers.h>

View File

@@ -41,7 +41,6 @@
#include <nvgpu/ctxsw_trace.h>
#include "gk20a.h"
#include "kind_gk20a.h"
#include "gr_ctx_gk20a.h"
#include "gr_pri_gk20a.h"
#include "regops_gk20a.h"

View File

@@ -1,414 +0,0 @@
/*
* GK20A memory kind management
*
* Copyright (c) 2011-2017, NVIDIA CORPORATION. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#include "kind_gk20a.h"
#include <nvgpu/hw/gk20a/hw_gmmu_gk20a.h>
/* TBD: generate these from kind_macros.h */
/*
* Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will
* blow up when building a coverage-enabled kernel. (error: the frame size of
* 1232 bytes is larger than 1024 bytes [-Werror=frame-larger-than=])
*/
/* note: taken from the !2cs_compression case */
static noinline_for_stack bool gk20a_kind_supported(u8 k)
{
return gk20a_kind_work_creation(k)
|| (k == gmmu_pte_kind_invalid_v())
|| (k == gmmu_pte_kind_pitch_v())
|| (k >= gmmu_pte_kind_z16_v() &&
k <= gmmu_pte_kind_z16_ms8_2c_v())
|| (k >= gmmu_pte_kind_z16_2z_v() &&
k <= gmmu_pte_kind_z16_ms8_2z_v())
|| (k == gmmu_pte_kind_s8z24_v())
|| (k >= gmmu_pte_kind_s8z24_2cz_v() &&
k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
|| (k == gmmu_pte_kind_z24s8_v())
|| (k >= gmmu_pte_kind_z24s8_2cz_v() &&
k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
|| (k == gmmu_pte_kind_zf32_v())
|| (k >= gmmu_pte_kind_zf32_2cz_v() &&
k <= gmmu_pte_kind_zf32_ms8_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
|| (k == gmmu_pte_kind_generic_16bx2_v())
|| (k == gmmu_pte_kind_c32_2c_v())
|| (k == gmmu_pte_kind_c32_2cra_v())
|| (k == gmmu_pte_kind_c32_ms2_2c_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c32_ms4_2cbr_v())
|| (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
k <= gmmu_pte_kind_c64_2c_v())
|| (k == gmmu_pte_kind_c64_2cra_v())
|| (k == gmmu_pte_kind_c64_ms2_2c_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms4_2cbr_v())
|| (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
|| (k == gmmu_pte_kind_pitch_no_swizzle_v());
}
static noinline_for_stack bool gk20a_kind_z(u8 k)
{
return (k >= gmmu_pte_kind_z16_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
}
static noinline_for_stack bool gk20a_kind_c(u8 k)
{
return gk20a_kind_work_creation(k)
|| (k == gmmu_pte_kind_pitch_v())
|| (k == gmmu_pte_kind_generic_16bx2_v())
|| (k >= gmmu_pte_kind_c32_2c_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_pitch_no_swizzle_v());
}
static noinline_for_stack bool gk20a_kind_compressible(u8 k)
{
return (k >= gmmu_pte_kind_z16_2c_v() &&
k <= gmmu_pte_kind_z16_ms16_4cz_v())
|| (k >= gmmu_pte_kind_s8z24_1z_v() &&
k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_z24s8_1z_v() &&
k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_zf32_1z_v() &&
k <= gmmu_pte_kind_zf32_ms16_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
}
static noinline_for_stack bool gk20a_kind_zbc(u8 k)
{
return (k >= gmmu_pte_kind_z16_2c_v() &&
k <= gmmu_pte_kind_z16_ms16_2c_v())
|| (k >= gmmu_pte_kind_z16_4cz_v() &&
k <= gmmu_pte_kind_z16_ms16_4cz_v())
|| (k >= gmmu_pte_kind_s8z24_2cz_v() &&
k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_z24s8_2cs_v() &&
k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_zf32_2cs_v() &&
k <= gmmu_pte_kind_zf32_ms16_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_c32_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c32_ms4_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
k <= gmmu_pte_kind_c64_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms4_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
}
u8 gk20a_uc_kind_map[256];
void gk20a_init_uncompressed_kind_map(void)
{
int i;
for (i = 0; i < 256; i++)
gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
gmmu_pte_kind_z16_v();
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
gmmu_pte_kind_s8z24_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
gmmu_pte_kind_v8z24_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
gmmu_pte_kind_v8z24_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
gmmu_pte_kind_v8z24_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
gmmu_pte_kind_v8z24_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
gmmu_pte_kind_z24s8_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
gmmu_pte_kind_zf32_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
gmmu_pte_kind_zf32_x24s8_v();
gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
gmmu_pte_kind_generic_16bx2_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
gmmu_pte_kind_z24v8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
gmmu_pte_kind_z24v8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
gmmu_pte_kind_z24v8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
gmmu_pte_kind_z24v8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
gmmu_pte_kind_x8c24_v();
}
u16 gk20a_kind_attr[NV_KIND_ATTR_SIZE];
void gk20a_init_kind_attr(void)
{
u16 k;
for (k = 0; k < NV_KIND_ATTR_SIZE; k++) {
gk20a_kind_attr[k] = 0;
if (gk20a_kind_supported((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
if (gk20a_kind_compressible((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
if (gk20a_kind_z((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
if (gk20a_kind_c((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
if (gk20a_kind_zbc((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
}
}

View File

@@ -1,90 +0,0 @@
/*
* drivers/video/tegra/host/gk20a/kind_gk20a.h
*
* GK20A memory kind management
*
* Copyright (c) 2011-2017, NVIDIA CORPORATION. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#ifndef __KIND_GK20A_H__
#define __KIND_GK20A_H__
#include <nvgpu/bitops.h>
void gk20a_init_uncompressed_kind_map(void);
void gk20a_init_kind_attr(void);
extern u16 gk20a_kind_attr[];
#define NV_KIND_ATTR_SIZE 256
#define NV_KIND_DEFAULT -1
#define GK20A_KIND_ATTR_SUPPORTED BIT(0)
#define GK20A_KIND_ATTR_COMPRESSIBLE BIT(1)
#define GK20A_KIND_ATTR_Z BIT(2)
#define GK20A_KIND_ATTR_C BIT(3)
#define GK20A_KIND_ATTR_ZBC BIT(4)
/* TBD: not sure on the work creation for gk20a, doubtful */
static inline bool gk20a_kind_work_creation_sked(u8 k)
{
return false;
}
static inline bool gk20a_kind_work_creation_host(u8 k)
{
return false;
}
static inline bool gk20a_kind_work_creation(u8 k)
{
return gk20a_kind_work_creation_sked(k) ||
gk20a_kind_work_creation_host(k);
}
static inline bool gk20a_kind_is_supported(u8 k)
{
return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_SUPPORTED);
}
static inline bool gk20a_kind_is_compressible(u8 k)
{
return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_COMPRESSIBLE);
}
static inline bool gk20a_kind_is_z(u8 k)
{
return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_Z);
}
static inline bool gk20a_kind_is_c(u8 k)
{
return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_C);
}
static inline bool gk20a_kind_is_zbc(u8 k)
{
return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_ZBC);
}
/* maps kind to its uncompressed version */
extern u8 gk20a_uc_kind_map[];
static inline u8 gk20a_get_uncompressed_kind(u8 k)
{
return gk20a_uc_kind_map[k];
}
#endif /* __KIND_GK20A_H__ */

View File

@@ -43,7 +43,6 @@
#include "gk20a.h"
#include "mm_gk20a.h"
#include "fence_gk20a.h"
#include "kind_gk20a.h"
#include "bus_gk20a.h"
#include <nvgpu/hw/gk20a/hw_gmmu_gk20a.h>

View File

@@ -23,7 +23,6 @@
*/
#include "gk20a/gk20a.h"
#include "gk20a/kind_gk20a.h"
#include "gk20a/fb_gk20a.h"
#include "gm20b/fb_gm20b.h"
@@ -43,407 +42,6 @@ void fb_gm20b_init_fs_state(struct gk20a *g)
g->ltc_count);
}
noinline_for_stack void gm20b_init_uncompressed_kind_map(void)
{
int i;
for (i = 0; i < 256; i++)
gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
/* From gm20b */
gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] =
gmmu_pte_kind_s8_v();
/* From gk20a */
gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
gmmu_pte_kind_z16_v();
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
gmmu_pte_kind_s8z24_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
gmmu_pte_kind_v8z24_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
gmmu_pte_kind_v8z24_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
gmmu_pte_kind_v8z24_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
gmmu_pte_kind_v8z24_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
gmmu_pte_kind_z24s8_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
gmmu_pte_kind_zf32_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
gmmu_pte_kind_zf32_x24s8_v();
gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
gmmu_pte_kind_generic_16bx2_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
gmmu_pte_kind_z24v8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
gmmu_pte_kind_z24v8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
gmmu_pte_kind_z24v8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
gmmu_pte_kind_z24v8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
gmmu_pte_kind_x8c24_v();
}
static noinline_for_stack bool gm20b_kind_supported(u8 k)
{
return /* From gm20b */
(k == gmmu_pte_kind_smsked_message_v())
|| (k >= gmmu_pte_kind_s8_v() &&
k <= gmmu_pte_kind_s8_2s_v())
/* From gk20a */
|| gk20a_kind_work_creation(k)
|| (k == gmmu_pte_kind_invalid_v())
|| (k == gmmu_pte_kind_pitch_v())
|| (k >= gmmu_pte_kind_z16_v() &&
k <= gmmu_pte_kind_z16_ms8_2c_v())
|| (k >= gmmu_pte_kind_z16_2z_v() &&
k <= gmmu_pte_kind_z16_ms8_2z_v())
|| (k == gmmu_pte_kind_s8z24_v())
|| (k >= gmmu_pte_kind_s8z24_2cz_v() &&
k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
|| (k == gmmu_pte_kind_z24s8_v())
|| (k >= gmmu_pte_kind_z24s8_2cz_v() &&
k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
|| (k == gmmu_pte_kind_zf32_v())
|| (k >= gmmu_pte_kind_zf32_2cz_v() &&
k <= gmmu_pte_kind_zf32_ms8_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
|| (k == gmmu_pte_kind_generic_16bx2_v())
|| (k == gmmu_pte_kind_c32_2c_v())
|| (k == gmmu_pte_kind_c32_2cra_v())
|| (k == gmmu_pte_kind_c32_ms2_2c_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c32_ms4_2cbr_v())
|| (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
k <= gmmu_pte_kind_c64_2c_v())
|| (k == gmmu_pte_kind_c64_2cra_v())
|| (k == gmmu_pte_kind_c64_ms2_2c_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms4_2cbr_v())
|| (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
|| (k == gmmu_pte_kind_pitch_no_swizzle_v());
}
static noinline_for_stack bool gm20b_kind_z(u8 k)
{
return /* From gm20b */
(k >= gmmu_pte_kind_s8_v() &&
k <= gmmu_pte_kind_s8_2s_v())
/* From gk20a */
|| (k >= gmmu_pte_kind_z16_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
}
static noinline_for_stack bool gm20b_kind_c(u8 k)
{
return gk20a_kind_work_creation(k)
|| (k == gmmu_pte_kind_pitch_v())
|| (k == gmmu_pte_kind_generic_16bx2_v())
|| (k >= gmmu_pte_kind_c32_2c_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_pitch_no_swizzle_v());
}
static noinline_for_stack bool gm20b_kind_compressible(u8 k)
{
return /* From gm20b */
(k >= gmmu_pte_kind_s8_v() &&
k <= gmmu_pte_kind_s8_2s_v())
/* From gk20a */
|| (k >= gmmu_pte_kind_z16_2c_v() &&
k <= gmmu_pte_kind_z16_ms16_4cz_v())
|| (k >= gmmu_pte_kind_s8z24_1z_v() &&
k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_z24s8_1z_v() &&
k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_zf32_1z_v() &&
k <= gmmu_pte_kind_zf32_ms16_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
}
static noinline_for_stack bool gm20b_kind_zbc(u8 k)
{
return /* From gm20b */
(k >= gmmu_pte_kind_s8_v() &&
k <= gmmu_pte_kind_s8_2s_v())
/* From gk20a */
|| (k >= gmmu_pte_kind_z16_2c_v() &&
k <= gmmu_pte_kind_z16_ms16_2c_v())
|| (k >= gmmu_pte_kind_z16_4cz_v() &&
k <= gmmu_pte_kind_z16_ms16_4cz_v())
|| (k >= gmmu_pte_kind_s8z24_2cz_v() &&
k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_z24s8_2cs_v() &&
k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_zf32_2cs_v() &&
k <= gmmu_pte_kind_zf32_ms16_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_c32_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c32_ms4_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
k <= gmmu_pte_kind_c64_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms4_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
}
void gm20b_init_kind_attr(void)
{
u16 k;
for (k = 0; k < NV_KIND_ATTR_SIZE; k++) {
gk20a_kind_attr[k] = 0;
if (gm20b_kind_supported((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
if (gm20b_kind_compressible((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
if (gm20b_kind_z((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
if (gm20b_kind_c((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
if (gm20b_kind_zbc((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
}
}
void gm20b_fb_set_mmu_page_size(struct gk20a *g)
{
/* set large page size in fb */

View File

@@ -37,6 +37,4 @@ int gm20b_fb_vpr_info_fetch(struct gk20a *g);
bool gm20b_fb_debug_mode_enabled(struct gk20a *g);
void gm20b_fb_set_debug_mode(struct gk20a *g, bool enable);
void gm20b_init_uncompressed_kind_map(void);
void gm20b_init_kind_attr(void);
#endif

View File

@@ -703,9 +703,6 @@ int gm20b_init_hal(struct gk20a *g)
g->pmu_lsf_pmu_wpr_init_done = 0;
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
gm20b_init_uncompressed_kind_map();
gm20b_init_kind_attr();
g->name = "gm20b";
return 0;

View File

@@ -769,9 +769,6 @@ int gp106_init_hal(struct gk20a *g)
g->pmu_lsf_pmu_wpr_init_done = 0;
g->bootstrap_owner = LSF_FALCON_ID_SEC2;
gp10b_init_uncompressed_kind_map();
gp10b_init_kind_attr();
g->name = "gp10x";
gk20a_dbg_fn("done");

View File

@@ -23,448 +23,8 @@
*/
#include "gk20a/gk20a.h"
#include "gm20b/fb_gm20b.h"
#include "gk20a/kind_gk20a.h"
#include "fb_gp10b.h"
#include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h>
noinline_for_stack void gp10b_init_uncompressed_kind_map(void)
{
int i;
for (i = 0; i < 256; i++)
gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
/* From gp10b */
gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms16_2cz_v()] =
gmmu_pte_kind_z16_v();
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] =
gmmu_pte_kind_generic_16bx2_v();
/* From gm20b */
gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] =
gmmu_pte_kind_s8_v();
/* From gk20a */
gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
gmmu_pte_kind_z16_v();
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
gmmu_pte_kind_s8z24_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
gmmu_pte_kind_v8z24_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
gmmu_pte_kind_v8z24_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
gmmu_pte_kind_v8z24_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
gmmu_pte_kind_v8z24_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
gmmu_pte_kind_z24s8_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
gmmu_pte_kind_zf32_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
gmmu_pte_kind_zf32_x24s8_v();
gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
gmmu_pte_kind_generic_16bx2_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
gmmu_pte_kind_z24v8_ms4_vc4_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
gmmu_pte_kind_z24v8_ms4_vc12_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
gmmu_pte_kind_z24v8_ms8_vc8_v();
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
gmmu_pte_kind_z24v8_ms8_vc24_v();
gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
gmmu_pte_kind_x8c24_v();
}
static noinline_for_stack bool gp10b_kind_supported(u8 k)
{
return /* From gp10b */
(k >= gmmu_pte_kind_z16_2cz_v() &&
k <= gmmu_pte_kind_z16_ms8_2cz_v())
|| k == gmmu_pte_kind_z16_ms16_2cz_v()
|| k == gmmu_pte_kind_c32_ms4_4cbra_v()
|| k == gmmu_pte_kind_c64_ms4_4cbra_v()
/* From gm20b */
|| (k == gmmu_pte_kind_smsked_message_v())
|| (k >= gmmu_pte_kind_s8_v() &&
k <= gmmu_pte_kind_s8_2s_v())
/* From gk20a */
|| gk20a_kind_work_creation(k)
|| (k == gmmu_pte_kind_invalid_v())
|| (k == gmmu_pte_kind_pitch_v())
|| (k >= gmmu_pte_kind_z16_v() &&
k <= gmmu_pte_kind_z16_ms8_2c_v())
|| (k >= gmmu_pte_kind_z16_2z_v() &&
k <= gmmu_pte_kind_z16_ms8_2z_v())
|| (k == gmmu_pte_kind_s8z24_v())
|| (k >= gmmu_pte_kind_s8z24_2cz_v() &&
k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
|| (k == gmmu_pte_kind_z24s8_v())
|| (k >= gmmu_pte_kind_z24s8_2cz_v() &&
k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
|| (k == gmmu_pte_kind_zf32_v())
|| (k >= gmmu_pte_kind_zf32_2cz_v() &&
k <= gmmu_pte_kind_zf32_ms8_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
|| (k == gmmu_pte_kind_generic_16bx2_v())
|| (k == gmmu_pte_kind_c32_2c_v())
|| (k == gmmu_pte_kind_c32_2cra_v())
|| (k == gmmu_pte_kind_c32_ms2_2c_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c32_ms4_2cbr_v())
|| (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
k <= gmmu_pte_kind_c64_2c_v())
|| (k == gmmu_pte_kind_c64_2cra_v())
|| (k == gmmu_pte_kind_c64_ms2_2c_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms4_2cbr_v())
|| (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
|| (k == gmmu_pte_kind_pitch_no_swizzle_v());
}
static noinline_for_stack bool gp10b_kind_z(u8 k)
{
return /* From gp10b */
(k >= gmmu_pte_kind_z16_2cz_v() &&
k <= gmmu_pte_kind_z16_ms8_2cz_v())
|| (k == gmmu_pte_kind_z16_ms16_2cz_v())
/* From gm20b */
|| (k >= gmmu_pte_kind_s8_v() &&
k <= gmmu_pte_kind_s8_2s_v())
/* From gk20a */
|| (k >= gmmu_pte_kind_z16_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
}
static noinline_for_stack bool gp10b_kind_c(u8 k)
{
return gk20a_kind_work_creation(k)
|| (k == gmmu_pte_kind_pitch_v())
|| (k == gmmu_pte_kind_generic_16bx2_v())
|| (k >= gmmu_pte_kind_c32_2c_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_pitch_no_swizzle_v());
}
static noinline_for_stack bool gp10b_kind_compressible(u8 k)
{
return /* From gp10b */
(k >= gmmu_pte_kind_z16_2cz_v() &&
k <= gmmu_pte_kind_z16_ms8_2cz_v())
|| (k == gmmu_pte_kind_z16_ms16_2cz_v())
|| (k >= gmmu_pte_kind_z16_4cz_v() &&
k <= gmmu_pte_kind_z16_ms16_4cz_v())
|| (k == gmmu_pte_kind_c32_ms4_4cbra_v())
|| (k == gmmu_pte_kind_c64_ms4_4cbra_v())
/* From gm20b */
|| (k >= gmmu_pte_kind_s8_v() &&
k <= gmmu_pte_kind_s8_2s_v())
/* From gk20a */
|| (k >= gmmu_pte_kind_z16_2c_v() &&
k <= gmmu_pte_kind_z16_ms16_4cz_v())
|| (k >= gmmu_pte_kind_s8z24_1z_v() &&
k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_z24s8_1z_v() &&
k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_zf32_1z_v() &&
k <= gmmu_pte_kind_zf32_ms16_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
}
static noinline_for_stack bool gp10b_kind_zbc(u8 k)
{
return /* From gp10b */
(k >= gmmu_pte_kind_z16_2cz_v() &&
k <= gmmu_pte_kind_z16_ms8_2cz_v())
|| (k == gmmu_pte_kind_z16_ms16_2cz_v())
|| (k == gmmu_pte_kind_c32_ms4_4cbra_v())
|| (k == gmmu_pte_kind_c64_ms4_4cbra_v())
/* From gm20b */
|| (k >= gmmu_pte_kind_s8_v() &&
k <= gmmu_pte_kind_s8_2s_v())
/* From gk20a */
|| (k >= gmmu_pte_kind_z16_2c_v() &&
k <= gmmu_pte_kind_z16_ms16_2c_v())
|| (k >= gmmu_pte_kind_z16_4cz_v() &&
k <= gmmu_pte_kind_z16_ms16_4cz_v())
|| (k >= gmmu_pte_kind_s8z24_2cz_v() &&
k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
|| (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_z24s8_2cs_v() &&
k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
|| (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
|| (k >= gmmu_pte_kind_zf32_2cs_v() &&
k <= gmmu_pte_kind_zf32_ms16_2cz_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
|| (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
k <= gmmu_pte_kind_c32_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
k <= gmmu_pte_kind_c32_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c32_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
k <= gmmu_pte_kind_c32_ms4_2cra_v())
|| (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
k <= gmmu_pte_kind_c64_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
k <= gmmu_pte_kind_c64_ms2_2cbr_v())
|| (k == gmmu_pte_kind_c64_ms2_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
k <= gmmu_pte_kind_c64_ms4_2cra_v())
|| (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
}
void gp10b_init_kind_attr(void)
{
u16 k;
for (k = 0; k < NV_KIND_ATTR_SIZE; k++) {
if (gp10b_kind_supported((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
if (gp10b_kind_compressible((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
if (gp10b_kind_z((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
if (gp10b_kind_c((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
if (gp10b_kind_zbc((u8)k))
gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
}
}
unsigned int gp10b_fb_compression_page_size(struct gk20a *g)
{
return SZ_64K;

View File

@@ -26,8 +26,6 @@
#define _NVGPU_GP10B_FB
struct gk20a;
noinline_for_stack void gp10b_init_uncompressed_kind_map(void);
void gp10b_init_kind_attr(void);
unsigned int gp10b_fb_compression_page_size(struct gk20a *g);
unsigned int gp10b_fb_compressible_page_size(struct gk20a *g);

View File

@@ -743,9 +743,6 @@ int gp10b_init_hal(struct gk20a *g)
g->pmu_lsf_pmu_wpr_init_done = 0;
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
gp10b_init_uncompressed_kind_map();
gp10b_init_kind_attr();
g->name = "gp10b";
return 0;

View File

@@ -38,25 +38,13 @@ struct vm_gk20a;
struct vm_gk20a_mapping_batch;
struct nvgpu_vm_area;
/* NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL must be set */
int nvgpu_vm_map_linux(struct vm_gk20a *vm,
struct dma_buf *dmabuf,
u64 offset_align,
u32 flags,
/*
* compressible kind if
* NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is
* specified, otherwise just the kind
*/
s16 compr_kind,
/*
* incompressible kind if
* NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is
* specified, otherwise ignored
*/
s16 incompr_kind,
int rw_flag,
u64 buffer_offset,
u64 mapping_size,
@@ -66,12 +54,7 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm,
/*
* Notes:
* - Batch may be NULL if map op is not part of a batch.
* - If NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is set,
* compr_kind and incompr_kind work as explained in nvgpu.h.
* - If NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is NOT set,
* compr_kind holds the kind and kernel will figure out whether
* it is a compressible or incompressible kind. If compressible, kernel will
* also figure out the incompressible counterpart or return an error.
* - NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL must be set
*/
int nvgpu_vm_map_buffer(struct vm_gk20a *vm,
int dmabuf_fd,

View File

@@ -127,10 +127,8 @@ struct nvgpu_ctag_buffer_info {
enum gmmu_pgsz_gk20a pgsz_idx;
u32 flags;
u8 kind_v;
u8 uc_kind_v;
bool use_kind_v;
bool use_uc_kind_v;
s16 compr_kind;
s16 incompr_kind;
u32 ctag_lines;
};
@@ -202,9 +200,7 @@ void nvgpu_vm_put(struct vm_gk20a *vm);
int vm_aspace_id(struct vm_gk20a *vm);
int nvgpu_big_pages_possible(struct vm_gk20a *vm, u64 base, u64 size);
int nvgpu_vm_init_kind_info(struct nvgpu_ctag_buffer_info *binfo,
s16 compr_kind, s16 incompr_kind);
int nvgpu_vm_compute_kind_and_compression(struct vm_gk20a *vm,
int nvgpu_vm_compute_compression(struct vm_gk20a *vm,
struct nvgpu_ctag_buffer_info *binfo);
/* batching eliminates redundant cache flushes and invalidates */

View File

@@ -584,9 +584,6 @@ int vgpu_gm20b_init_hal(struct gk20a *g)
g->pmu_lsf_pmu_wpr_init_done = 0;
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
gm20b_init_uncompressed_kind_map();
gm20b_init_kind_attr();
g->name = "gm20b";
c->twod_class = FERMI_TWOD_A;

View File

@@ -626,9 +626,6 @@ int vgpu_gp10b_init_hal(struct gk20a *g)
g->pmu_lsf_pmu_wpr_init_done = 0;
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
gp10b_init_uncompressed_kind_map();
gp10b_init_kind_attr();
g->name = "gp10b";
c->twod_class = FERMI_TWOD_A;