diff --git a/drivers/gpu/nvgpu/hal/init/hal_ga10b.c b/drivers/gpu/nvgpu/hal/init/hal_ga10b.c index 3113e0977..02c8575c7 100644 --- a/drivers/gpu/nvgpu/hal/init/hal_ga10b.c +++ b/drivers/gpu/nvgpu/hal/init/hal_ga10b.c @@ -1994,6 +1994,7 @@ int ga10b_init_hal(struct gk20a *g) #ifdef CONFIG_NVGPU_HAL_NON_FUSA gops->mssnvlink = ga10b_ops_mssnvlink; #endif + nvgpu_set_enabled(g, NVGPU_SUPPORT_EMULATE_MODE, true); g->name = "ga10b"; return 0; diff --git a/drivers/gpu/nvgpu/include/nvgpu/enabled.h b/drivers/gpu/nvgpu/include/nvgpu/enabled.h index 97c01922c..8e5b46ded 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/enabled.h +++ b/drivers/gpu/nvgpu/include/nvgpu/enabled.h @@ -221,6 +221,8 @@ struct gk20a; DEFINE_FLAG(NVGPU_SUPPORT_NVS, "Domain scheduler support"), \ DEFINE_FLAG(NVGPU_SUPPORT_TEGRA_RAW, \ "TEGRA_RAW format support"), \ + DEFINE_FLAG(NVGPU_SUPPORT_EMULATE_MODE, \ + "Emulate mode support"), \ DEFINE_FLAG(NVGPU_MAX_ENABLED_BITS, "Marks max number of flags"), /** diff --git a/drivers/gpu/nvgpu/os/linux/sysfs.c b/drivers/gpu/nvgpu/os/linux/sysfs.c index 0f330432b..c6d055126 100644 --- a/drivers/gpu/nvgpu/os/linux/sysfs.c +++ b/drivers/gpu/nvgpu/os/linux/sysfs.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -1302,6 +1303,10 @@ static ssize_t emulate_mode_store(struct device *dev, if (kstrtoul(buf, 10, &val) < 0) return -EINVAL; + if (!nvgpu_is_enabled(g, NVGPU_SUPPORT_EMULATE_MODE)) { + nvgpu_err(g, "Emulate mode not supported"); + return -EINVAL; + } if (nvgpu_is_powered_on(g)) { nvgpu_err(g, "GPU is powered on already, emulate mode " "cannot be enabled");