gpu: nvgpu: ga10b: Disable compression on Av+L/Q

GPU HW expects physically contiguous addresses when clearing
the compression bit store in memory. Currently on hypervisor setup,
the DMA_ATTR_FORCE_CONTIGUOUS flag ensures contiguous IPA, but it
is not possible to ensure contiguous physical memory.Disable
compression on virtualized environments until physically contiguous
memory is feasible.

Buffer Metadata support is dependent on compression support.
Move the initialization of NVGPU_SUPPORT_BUFFER_METADATA flag to
common code where NVGPU_SUPPORT_COMPRESSION is initialized.

Bug 200780546

Change-Id: Id94bffc878e275a80948880f0475162d0bb4ddae
Signed-off-by: Tejal Kudav <tkudav@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2607830
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Tejal Kudav
2021-10-08 14:07:02 +00:00
committed by mobile promotions
parent a28612220a
commit 243e52a771
9 changed files with 23 additions and 10 deletions

View File

@@ -1928,6 +1928,7 @@ int ga100_init_hal(struct gk20a *g)
if (nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
nvgpu_set_enabled(g, NVGPU_SUPPORT_POST_L2_COMPRESSION, false);
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, true);
} else {
gops->cbc.init = NULL;
gops->cbc.ctrl = NULL;

View File

@@ -1890,10 +1890,15 @@ int ga10b_init_hal(struct gk20a *g)
#endif
#ifdef CONFIG_NVGPU_COMPRESSION
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, true);
if (nvgpu_is_hypervisor_mode(g)) {
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, false);
} else {
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, true);
}
if (nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
nvgpu_set_enabled(g, NVGPU_SUPPORT_POST_L2_COMPRESSION, true);
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, true);
} else {
gops->cbc.init = NULL;
gops->cbc.ctrl = NULL;

View File

@@ -1225,7 +1225,9 @@ int gm20b_init_hal(struct gk20a *g)
#ifdef CONFIG_NVGPU_COMPRESSION
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, true);
if (!nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
if (nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, true);
} else {
gops->cbc.init = NULL;
gops->cbc.ctrl = NULL;
gops->cbc.alloc_comptags = NULL;

View File

@@ -1318,7 +1318,9 @@ int gp10b_init_hal(struct gk20a *g)
#ifdef CONFIG_NVGPU_COMPRESSION
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, true);
if (!nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
if (nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, true);
} else {
gops->cbc.init = NULL;
gops->cbc.ctrl = NULL;
gops->cbc.alloc_comptags = NULL;

View File

@@ -1596,7 +1596,9 @@ int gv11b_init_hal(struct gk20a *g)
#ifdef CONFIG_NVGPU_COMPRESSION
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, true);
if (!nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
if (nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, true);
} else {
gops->cbc.init = NULL;
gops->cbc.ctrl = NULL;
gops->cbc.alloc_comptags = NULL;

View File

@@ -1853,7 +1853,9 @@ int tu104_init_hal(struct gk20a *g)
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, true);
}
if (!nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
if (nvgpu_is_enabled(g, NVGPU_SUPPORT_COMPRESSION)) {
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, true);
} else {
gops->cbc.init = NULL;
gops->cbc.ctrl = NULL;
gops->cbc.alloc_comptags = NULL;

View File

@@ -1206,8 +1206,9 @@ int vgpu_ga10b_init_hal(struct gk20a *g)
priv->constants.max_sm_diversity_config_count;
#ifdef CONFIG_NVGPU_COMPRESSION
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, true);
nvgpu_set_enabled(g, NVGPU_SUPPORT_POST_L2_COMPRESSION, true);
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, false);
nvgpu_set_enabled(g, NVGPU_SUPPORT_POST_L2_COMPRESSION, false);
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, false);
#endif
#ifdef CONFIG_NVGPU_RECOVERY

View File

@@ -1175,6 +1175,7 @@ int vgpu_gv11b_init_hal(struct gk20a *g)
#ifdef CONFIG_NVGPU_COMPRESSION
nvgpu_set_enabled(g, NVGPU_SUPPORT_COMPRESSION, true);
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, true);
#endif
#ifdef CONFIG_NVGPU_RECOVERY

View File

@@ -330,9 +330,6 @@ void gk20a_init_linux_characteristics(struct gk20a *g)
nvgpu_set_enabled(g, NVGPU_SUPPORT_DETERMINISTIC_OPTS, true);
nvgpu_set_enabled(g, NVGPU_SUPPORT_USERSPACE_MANAGED_AS, true);
nvgpu_set_enabled(g, NVGPU_SUPPORT_REMAP, true);
#ifdef CONFIG_NVGPU_COMPRESSION
nvgpu_set_enabled(g, NVGPU_SUPPORT_BUFFER_METADATA, true);
#endif
if (!IS_ENABLED(CONFIG_NVGPU_SYNCFD_NONE)) {
nvgpu_set_enabled(g, NVGPU_SUPPORT_SYNC_FENCE_FDS, true);