mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 09:57:08 +03:00
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:
committed by
mobile promotions
parent
b584bf8aa8
commit
cefabe7eb1
@@ -93,7 +93,6 @@ nvgpu-y := \
|
|||||||
gk20a/dbg_gpu_gk20a.o \
|
gk20a/dbg_gpu_gk20a.o \
|
||||||
gk20a/regops_gk20a.o \
|
gk20a/regops_gk20a.o \
|
||||||
gk20a/gr_gk20a.o \
|
gk20a/gr_gk20a.o \
|
||||||
gk20a/kind_gk20a.o \
|
|
||||||
gk20a/mm_gk20a.o \
|
gk20a/mm_gk20a.o \
|
||||||
gk20a/pmu_gk20a.o \
|
gk20a/pmu_gk20a.o \
|
||||||
gk20a/flcn_gk20a.o \
|
gk20a/flcn_gk20a.o \
|
||||||
|
|||||||
@@ -79,22 +79,19 @@ static int gk20a_as_ioctl_map_buffer_ex(
|
|||||||
struct gk20a_as_share *as_share,
|
struct gk20a_as_share *as_share,
|
||||||
struct nvgpu_as_map_buffer_ex_args *args)
|
struct nvgpu_as_map_buffer_ex_args *args)
|
||||||
{
|
{
|
||||||
s16 compressible_kind;
|
|
||||||
s16 incompressible_kind;
|
|
||||||
|
|
||||||
gk20a_dbg_fn("");
|
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 -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nvgpu_vm_map_buffer(as_share->vm, args->dmabuf_fd,
|
return nvgpu_vm_map_buffer(as_share->vm, args->dmabuf_fd,
|
||||||
&args->offset, args->flags,
|
&args->offset, args->flags,
|
||||||
compressible_kind, incompressible_kind,
|
args->compr_kind,
|
||||||
|
args->incompr_kind,
|
||||||
args->buffer_offset,
|
args->buffer_offset,
|
||||||
args->mapping_size,
|
args->mapping_size,
|
||||||
NULL);
|
NULL);
|
||||||
|
|||||||
@@ -32,7 +32,6 @@
|
|||||||
|
|
||||||
#include "gk20a/gk20a.h"
|
#include "gk20a/gk20a.h"
|
||||||
#include "gk20a/mm_gk20a.h"
|
#include "gk20a/mm_gk20a.h"
|
||||||
#include "gk20a/kind_gk20a.h"
|
|
||||||
|
|
||||||
#include "platform_gk20a.h"
|
#include "platform_gk20a.h"
|
||||||
#include "os_linux.h"
|
#include "os_linux.h"
|
||||||
@@ -239,14 +238,17 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm,
|
|||||||
|
|
||||||
binfo.flags = flags;
|
binfo.flags = flags;
|
||||||
binfo.size = dmabuf->size;
|
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)
|
if (compr_kind != NV_KIND_INVALID)
|
||||||
map_key_kind = compr_kind;
|
map_key_kind = compr_kind;
|
||||||
else
|
else
|
||||||
map_key_kind = incompr_kind;
|
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 &&
|
if (vm->userspace_managed &&
|
||||||
@@ -277,10 +279,6 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm,
|
|||||||
goto clean_up;
|
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);
|
aperture = gk20a_dmabuf_aperture(g, dmabuf);
|
||||||
if (aperture == APERTURE_INVALID) {
|
if (aperture == APERTURE_INVALID) {
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
@@ -321,9 +319,9 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm,
|
|||||||
va_allocated = true;
|
va_allocated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = nvgpu_vm_compute_kind_and_compression(vm, &binfo);
|
err = nvgpu_vm_compute_compression(vm, &binfo);
|
||||||
if (err) {
|
if (err) {
|
||||||
nvgpu_err(g, "failure setting up kind and compression");
|
nvgpu_err(g, "failure setting up compression");
|
||||||
goto clean_up;
|
goto clean_up;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,10 +338,12 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm,
|
|||||||
binfo.ctag_lines);
|
binfo.ctag_lines);
|
||||||
if (err) {
|
if (err) {
|
||||||
/* TBD: we can partially alloc ctags as well... */
|
/* TBD: we can partially alloc ctags as well... */
|
||||||
if (binfo.use_uc_kind_v) {
|
|
||||||
/* no comptags, but fallback kind available */
|
/* prevent compression ... */
|
||||||
binfo.kind_v = binfo.uc_kind_v;
|
binfo.compr_kind = NV_KIND_INVALID;
|
||||||
} else {
|
|
||||||
|
/* ... 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");
|
nvgpu_err(g, "comptag alloc failed and no fallback kind specified");
|
||||||
goto clean_up;
|
goto clean_up;
|
||||||
}
|
}
|
||||||
@@ -379,7 +379,8 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm,
|
|||||||
buffer_offset, /* sg offset */
|
buffer_offset, /* sg offset */
|
||||||
mapping_size,
|
mapping_size,
|
||||||
binfo.pgsz_idx,
|
binfo.pgsz_idx,
|
||||||
binfo.kind_v,
|
(binfo.compr_kind != NV_KIND_INVALID ?
|
||||||
|
binfo.compr_kind : binfo.incompr_kind),
|
||||||
ctag_offset,
|
ctag_offset,
|
||||||
flags, rw_flag,
|
flags, rw_flag,
|
||||||
clear_ctags,
|
clear_ctags,
|
||||||
|
|||||||
@@ -35,7 +35,6 @@
|
|||||||
|
|
||||||
#include "gk20a/gk20a.h"
|
#include "gk20a/gk20a.h"
|
||||||
#include "gk20a/mm_gk20a.h"
|
#include "gk20a/mm_gk20a.h"
|
||||||
#include "gk20a/kind_gk20a.h"
|
|
||||||
|
|
||||||
static void __nvgpu_vm_unmap(struct nvgpu_mapped_buf *mapped_buffer,
|
static void __nvgpu_vm_unmap(struct nvgpu_mapped_buf *mapped_buffer,
|
||||||
struct vm_gk20a_mapping_batch *batch);
|
struct vm_gk20a_mapping_batch *batch);
|
||||||
@@ -829,123 +828,36 @@ done:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nvgpu_vm_init_kind_info(struct nvgpu_ctag_buffer_info *binfo,
|
int nvgpu_vm_compute_compression(struct vm_gk20a *vm,
|
||||||
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,
|
|
||||||
struct nvgpu_ctag_buffer_info *binfo)
|
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);
|
struct gk20a *g = gk20a_from_vm(vm);
|
||||||
int ctag_granularity = g->ops.fb.compression_page_size(g);
|
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 &&
|
if (kind_compressible &&
|
||||||
vm->gmmu_page_sizes[binfo->pgsz_idx] <
|
vm->gmmu_page_sizes[binfo->pgsz_idx] <
|
||||||
g->ops.fb.compressible_page_size(g)) {
|
g->ops.fb.compressible_page_size(g)) {
|
||||||
/* it is safe to fall back to uncompressed as
|
/*
|
||||||
functionality is not harmed */
|
* Let's double check that there is a fallback kind
|
||||||
binfo->kind_v = binfo->uc_kind_v;
|
*/
|
||||||
|
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;
|
kind_compressible = false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (kind_compressible)
|
if (kind_compressible)
|
||||||
binfo->ctag_lines = DIV_ROUND_UP_ULL(binfo->size,
|
binfo->ctag_lines = DIV_ROUND_UP_ULL(binfo->size,
|
||||||
ctag_granularity);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
#include <trace/events/gk20a.h>
|
#include <trace/events/gk20a.h>
|
||||||
|
|
||||||
#include "gk20a.h"
|
#include "gk20a.h"
|
||||||
#include "kind_gk20a.h"
|
|
||||||
#include "fb_gk20a.h"
|
#include "fb_gk20a.h"
|
||||||
|
|
||||||
#include <nvgpu/timers.h>
|
#include <nvgpu/timers.h>
|
||||||
|
|||||||
@@ -41,7 +41,6 @@
|
|||||||
#include <nvgpu/ctxsw_trace.h>
|
#include <nvgpu/ctxsw_trace.h>
|
||||||
|
|
||||||
#include "gk20a.h"
|
#include "gk20a.h"
|
||||||
#include "kind_gk20a.h"
|
|
||||||
#include "gr_ctx_gk20a.h"
|
#include "gr_ctx_gk20a.h"
|
||||||
#include "gr_pri_gk20a.h"
|
#include "gr_pri_gk20a.h"
|
||||||
#include "regops_gk20a.h"
|
#include "regops_gk20a.h"
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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__ */
|
|
||||||
@@ -43,7 +43,6 @@
|
|||||||
#include "gk20a.h"
|
#include "gk20a.h"
|
||||||
#include "mm_gk20a.h"
|
#include "mm_gk20a.h"
|
||||||
#include "fence_gk20a.h"
|
#include "fence_gk20a.h"
|
||||||
#include "kind_gk20a.h"
|
|
||||||
#include "bus_gk20a.h"
|
#include "bus_gk20a.h"
|
||||||
|
|
||||||
#include <nvgpu/hw/gk20a/hw_gmmu_gk20a.h>
|
#include <nvgpu/hw/gk20a/hw_gmmu_gk20a.h>
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gk20a/gk20a.h"
|
#include "gk20a/gk20a.h"
|
||||||
#include "gk20a/kind_gk20a.h"
|
|
||||||
#include "gk20a/fb_gk20a.h"
|
#include "gk20a/fb_gk20a.h"
|
||||||
#include "gm20b/fb_gm20b.h"
|
#include "gm20b/fb_gm20b.h"
|
||||||
|
|
||||||
@@ -43,407 +42,6 @@ void fb_gm20b_init_fs_state(struct gk20a *g)
|
|||||||
g->ltc_count);
|
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)
|
void gm20b_fb_set_mmu_page_size(struct gk20a *g)
|
||||||
{
|
{
|
||||||
/* set large page size in fb */
|
/* set large page size in fb */
|
||||||
|
|||||||
@@ -37,6 +37,4 @@ int gm20b_fb_vpr_info_fetch(struct gk20a *g);
|
|||||||
bool gm20b_fb_debug_mode_enabled(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_fb_set_debug_mode(struct gk20a *g, bool enable);
|
||||||
|
|
||||||
void gm20b_init_uncompressed_kind_map(void);
|
|
||||||
void gm20b_init_kind_attr(void);
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -703,9 +703,6 @@ int gm20b_init_hal(struct gk20a *g)
|
|||||||
g->pmu_lsf_pmu_wpr_init_done = 0;
|
g->pmu_lsf_pmu_wpr_init_done = 0;
|
||||||
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
|
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
|
||||||
|
|
||||||
gm20b_init_uncompressed_kind_map();
|
|
||||||
gm20b_init_kind_attr();
|
|
||||||
|
|
||||||
g->name = "gm20b";
|
g->name = "gm20b";
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -769,9 +769,6 @@ int gp106_init_hal(struct gk20a *g)
|
|||||||
g->pmu_lsf_pmu_wpr_init_done = 0;
|
g->pmu_lsf_pmu_wpr_init_done = 0;
|
||||||
g->bootstrap_owner = LSF_FALCON_ID_SEC2;
|
g->bootstrap_owner = LSF_FALCON_ID_SEC2;
|
||||||
|
|
||||||
gp10b_init_uncompressed_kind_map();
|
|
||||||
gp10b_init_kind_attr();
|
|
||||||
|
|
||||||
g->name = "gp10x";
|
g->name = "gp10x";
|
||||||
|
|
||||||
gk20a_dbg_fn("done");
|
gk20a_dbg_fn("done");
|
||||||
|
|||||||
@@ -23,448 +23,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gk20a/gk20a.h"
|
#include "gk20a/gk20a.h"
|
||||||
#include "gm20b/fb_gm20b.h"
|
|
||||||
#include "gk20a/kind_gk20a.h"
|
|
||||||
#include "fb_gp10b.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)
|
unsigned int gp10b_fb_compression_page_size(struct gk20a *g)
|
||||||
{
|
{
|
||||||
return SZ_64K;
|
return SZ_64K;
|
||||||
|
|||||||
@@ -26,8 +26,6 @@
|
|||||||
#define _NVGPU_GP10B_FB
|
#define _NVGPU_GP10B_FB
|
||||||
struct gk20a;
|
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_compression_page_size(struct gk20a *g);
|
||||||
unsigned int gp10b_fb_compressible_page_size(struct gk20a *g);
|
unsigned int gp10b_fb_compressible_page_size(struct gk20a *g);
|
||||||
|
|
||||||
|
|||||||
@@ -743,9 +743,6 @@ int gp10b_init_hal(struct gk20a *g)
|
|||||||
g->pmu_lsf_pmu_wpr_init_done = 0;
|
g->pmu_lsf_pmu_wpr_init_done = 0;
|
||||||
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
|
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
|
||||||
|
|
||||||
gp10b_init_uncompressed_kind_map();
|
|
||||||
gp10b_init_kind_attr();
|
|
||||||
|
|
||||||
g->name = "gp10b";
|
g->name = "gp10b";
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -38,25 +38,13 @@ struct vm_gk20a;
|
|||||||
struct vm_gk20a_mapping_batch;
|
struct vm_gk20a_mapping_batch;
|
||||||
struct nvgpu_vm_area;
|
struct nvgpu_vm_area;
|
||||||
|
|
||||||
|
/* NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL must be set */
|
||||||
int nvgpu_vm_map_linux(struct vm_gk20a *vm,
|
int nvgpu_vm_map_linux(struct vm_gk20a *vm,
|
||||||
struct dma_buf *dmabuf,
|
struct dma_buf *dmabuf,
|
||||||
u64 offset_align,
|
u64 offset_align,
|
||||||
u32 flags,
|
u32 flags,
|
||||||
|
|
||||||
/*
|
|
||||||
* compressible kind if
|
|
||||||
* NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is
|
|
||||||
* specified, otherwise just the kind
|
|
||||||
*/
|
|
||||||
s16 compr_kind,
|
s16 compr_kind,
|
||||||
|
|
||||||
/*
|
|
||||||
* incompressible kind if
|
|
||||||
* NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is
|
|
||||||
* specified, otherwise ignored
|
|
||||||
*/
|
|
||||||
s16 incompr_kind,
|
s16 incompr_kind,
|
||||||
|
|
||||||
int rw_flag,
|
int rw_flag,
|
||||||
u64 buffer_offset,
|
u64 buffer_offset,
|
||||||
u64 mapping_size,
|
u64 mapping_size,
|
||||||
@@ -66,12 +54,7 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm,
|
|||||||
/*
|
/*
|
||||||
* Notes:
|
* Notes:
|
||||||
* - Batch may be NULL if map op is not part of a batch.
|
* - Batch may be NULL if map op is not part of a batch.
|
||||||
* - If NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL is set,
|
* - NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL must be 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.
|
|
||||||
*/
|
*/
|
||||||
int nvgpu_vm_map_buffer(struct vm_gk20a *vm,
|
int nvgpu_vm_map_buffer(struct vm_gk20a *vm,
|
||||||
int dmabuf_fd,
|
int dmabuf_fd,
|
||||||
|
|||||||
@@ -127,10 +127,8 @@ struct nvgpu_ctag_buffer_info {
|
|||||||
enum gmmu_pgsz_gk20a pgsz_idx;
|
enum gmmu_pgsz_gk20a pgsz_idx;
|
||||||
u32 flags;
|
u32 flags;
|
||||||
|
|
||||||
u8 kind_v;
|
s16 compr_kind;
|
||||||
u8 uc_kind_v;
|
s16 incompr_kind;
|
||||||
bool use_kind_v;
|
|
||||||
bool use_uc_kind_v;
|
|
||||||
|
|
||||||
u32 ctag_lines;
|
u32 ctag_lines;
|
||||||
};
|
};
|
||||||
@@ -202,9 +200,7 @@ void nvgpu_vm_put(struct vm_gk20a *vm);
|
|||||||
int vm_aspace_id(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_big_pages_possible(struct vm_gk20a *vm, u64 base, u64 size);
|
||||||
|
|
||||||
int nvgpu_vm_init_kind_info(struct nvgpu_ctag_buffer_info *binfo,
|
int nvgpu_vm_compute_compression(struct vm_gk20a *vm,
|
||||||
s16 compr_kind, s16 incompr_kind);
|
|
||||||
int nvgpu_vm_compute_kind_and_compression(struct vm_gk20a *vm,
|
|
||||||
struct nvgpu_ctag_buffer_info *binfo);
|
struct nvgpu_ctag_buffer_info *binfo);
|
||||||
|
|
||||||
/* batching eliminates redundant cache flushes and invalidates */
|
/* batching eliminates redundant cache flushes and invalidates */
|
||||||
|
|||||||
@@ -584,9 +584,6 @@ int vgpu_gm20b_init_hal(struct gk20a *g)
|
|||||||
g->pmu_lsf_pmu_wpr_init_done = 0;
|
g->pmu_lsf_pmu_wpr_init_done = 0;
|
||||||
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
|
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
|
||||||
|
|
||||||
gm20b_init_uncompressed_kind_map();
|
|
||||||
gm20b_init_kind_attr();
|
|
||||||
|
|
||||||
g->name = "gm20b";
|
g->name = "gm20b";
|
||||||
|
|
||||||
c->twod_class = FERMI_TWOD_A;
|
c->twod_class = FERMI_TWOD_A;
|
||||||
|
|||||||
@@ -626,9 +626,6 @@ int vgpu_gp10b_init_hal(struct gk20a *g)
|
|||||||
g->pmu_lsf_pmu_wpr_init_done = 0;
|
g->pmu_lsf_pmu_wpr_init_done = 0;
|
||||||
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
|
g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT;
|
||||||
|
|
||||||
gp10b_init_uncompressed_kind_map();
|
|
||||||
gp10b_init_kind_attr();
|
|
||||||
|
|
||||||
g->name = "gp10b";
|
g->name = "gp10b";
|
||||||
|
|
||||||
c->twod_class = FERMI_TWOD_A;
|
c->twod_class = FERMI_TWOD_A;
|
||||||
|
|||||||
Reference in New Issue
Block a user