diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 10 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm206/acr_gm206.c | 3 |
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 4872bb95..bcde1746 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -940,6 +940,16 @@ int gk20a_init_mm_setup_sw(struct gk20a *g) | |||
940 | if (err) | 940 | if (err) |
941 | return err; | 941 | return err; |
942 | 942 | ||
943 | /* | ||
944 | * this requires fixed allocations in vidmem which must be | ||
945 | * allocated before all other buffers | ||
946 | */ | ||
947 | if (g->ops.pmu.alloc_blob_space && g->mm.vidmem_is_vidmem) { | ||
948 | err = g->ops.pmu.alloc_blob_space(g, 0, &g->acr.ucode_blob); | ||
949 | if (err) | ||
950 | return err; | ||
951 | } | ||
952 | |||
943 | err = gk20a_alloc_sysmem_flush(g); | 953 | err = gk20a_alloc_sysmem_flush(g); |
944 | if (err) | 954 | if (err) |
945 | return err; | 955 | return err; |
diff --git a/drivers/gpu/nvgpu/gm206/acr_gm206.c b/drivers/gpu/nvgpu/gm206/acr_gm206.c index 988761f0..39b30ea6 100644 --- a/drivers/gpu/nvgpu/gm206/acr_gm206.c +++ b/drivers/gpu/nvgpu/gm206/acr_gm206.c | |||
@@ -58,6 +58,9 @@ int gm206_alloc_blob_space(struct gk20a *g, | |||
58 | { | 58 | { |
59 | struct wpr_carveout_info wpr_inf; | 59 | struct wpr_carveout_info wpr_inf; |
60 | 60 | ||
61 | if (mem->size) | ||
62 | return 0; | ||
63 | |||
61 | g->ops.pmu.get_wpr(g, &wpr_inf); | 64 | g->ops.pmu.get_wpr(g, &wpr_inf); |
62 | 65 | ||
63 | return gk20a_gmmu_alloc_attr_vid_at(g, 0, wpr_inf.size, mem, | 66 | return gk20a_gmmu_alloc_attr_vid_at(g, 0, wpr_inf.size, mem, |