diff --git a/drivers/gpu/nvgpu/Makefile.sources b/drivers/gpu/nvgpu/Makefile.sources index 6fe546dd1..93def828e 100644 --- a/drivers/gpu/nvgpu/Makefile.sources +++ b/drivers/gpu/nvgpu/Makefile.sources @@ -95,7 +95,6 @@ srcs += common/utils/enabled.c \ common/fbp/fbp.c \ common/io/io.c \ common/ecc.c \ - common/vbios/bios.c \ common/falcon/falcon.c \ common/falcon/falcon_sw_gk20a.c \ common/falcon/falcon_sw_gp106.c \ @@ -475,6 +474,7 @@ srcs += common/sec2/sec2.c \ common/sec2/ipc/sec2_msg.c \ common/sec2/ipc/sec2_queue.c \ common/sec2/ipc/sec2_seq.c \ + common/vbios/bios.c \ common/vbios/bios_sw_gv100.c \ common/vbios/bios_sw_tu104.c \ common/falcon/falcon_sw_gv100.c \ diff --git a/drivers/gpu/nvgpu/common/init/nvgpu_init.c b/drivers/gpu/nvgpu/common/init/nvgpu_init.c index eca634686..a208ce090 100644 --- a/drivers/gpu/nvgpu/common/init/nvgpu_init.c +++ b/drivers/gpu/nvgpu/common/init/nvgpu_init.c @@ -247,11 +247,13 @@ int gk20a_finalize_poweron(struct gk20a *g) } } +#ifdef NVGPU_DGPU_SUPPORT err = nvgpu_bios_sw_init(g, &g->bios); if (err != 0) { nvgpu_err(g, "BIOS SW init failed %d", err); goto done; } +#endif g->ops.bus.init_hw(g); if (g->ops.clk.disable_slowboot != NULL) { diff --git a/drivers/gpu/nvgpu/common/vbios/bios.c b/drivers/gpu/nvgpu/common/vbios/bios.c index 56494098e..d729761a3 100644 --- a/drivers/gpu/nvgpu/common/vbios/bios.c +++ b/drivers/gpu/nvgpu/common/vbios/bios.c @@ -179,7 +179,6 @@ int nvgpu_bios_sw_init(struct gk20a *g, } switch (ver) { -#ifdef NVGPU_DGPU_SUPPORT case NVGPU_GPUID_GV100: nvgpu_gv100_bios_sw_init(g, *bios); break; @@ -187,7 +186,6 @@ int nvgpu_bios_sw_init(struct gk20a *g, case NVGPU_GPUID_TU104: nvgpu_tu104_bios_sw_init(g, *bios); break; -#endif default: nvgpu_kfree(g, *bios); err = 0; @@ -196,11 +194,11 @@ int nvgpu_bios_sw_init(struct gk20a *g, if ((*bios)->init != NULL) { err = (*bios)->init(g); - if (err != 0) + if (err != 0) { nvgpu_falcon_sw_free(g, FALCON_ID_FECS); + } goto done; } - done: return err; } diff --git a/drivers/gpu/nvgpu/common/vbios/bios_sw_gv100.c b/drivers/gpu/nvgpu/common/vbios/bios_sw_gv100.c index dd7316a7c..e84933fc6 100644 --- a/drivers/gpu/nvgpu/common/vbios/bios_sw_gv100.c +++ b/drivers/gpu/nvgpu/common/vbios/bios_sw_gv100.c @@ -85,10 +85,14 @@ int gv100_bios_preos_wait_for_halt(struct gk20a *g) g->ops.bus.write_sw_scratch(g, SCRATCH_PMU_EXIT_AND_HALT, PMU_EXIT_AND_HALT_SET(tmp, PMU_EXIT_AND_HALT_YES)); - nvgpu_timeout_init(g, &timeout, + err = nvgpu_timeout_init(g, &timeout, PMU_BOOT_TIMEOUT_MAX / PMU_BOOT_TIMEOUT_DEFAULT, NVGPU_TIMER_RETRY_TIMER); + if (err != 0) { + nvgpu_err(g, "NVGPU timeout init failed"); + return err; + } do { progress = g->ops.bus.read_sw_scratch(g, @@ -100,7 +104,7 @@ int gv100_bios_preos_wait_for_halt(struct gk20a *g) nvgpu_udelay(PMU_BOOT_TIMEOUT_DEFAULT); } while (!preos_completed && - (nvgpu_timeout_expired(&timeout) == 0)); + (nvgpu_timeout_expired(&timeout) == 0)); } return err; @@ -176,10 +180,14 @@ int gv100_bios_devinit(struct gk20a *g) goto out; } - nvgpu_timeout_init(g, &timeout, + err = nvgpu_timeout_init(g, &timeout, PMU_BOOT_TIMEOUT_MAX / PMU_BOOT_TIMEOUT_DEFAULT, NVGPU_TIMER_RETRY_TIMER); + if (err != 0) { + nvgpu_err(g, "nvgpu timeout init failed %d", err); + goto out; + } do { top_scratch1_reg = g->ops.top.read_top_scratch1_reg(g); devinit_completed = ((g->ops.falcon.is_falcon_cpu_halted( diff --git a/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c index 2a88c9fd9..e10f47864 100644 --- a/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c +++ b/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c @@ -334,9 +334,13 @@ gk20a_ctrl_ioctl_gpu_characteristics( gpu.dma_copy_class = g->ops.get_litter_value(g, GPU_LIT_DMA_COPY_CLASS); +#ifdef NVGPU_DGPU_SUPPORT gpu.vbios_version = nvgpu_bios_get_vbios_version(g); gpu.vbios_oem_version = nvgpu_bios_get_vbios_oem_version(g); - +#else + gpu.vbios_version = 0; + gpu.vbios_oem_version = 0; +#endif gpu.big_page_size = nvgpu_mm_get_default_big_page_size(g); gpu.pde_coverage_bit_count = g->ops.mm.gmmu.get_mmu_levels(g,