diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2016-08-23 04:47:05 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-09-01 12:11:46 -0400 |
commit | 93a436f581ced27efe2e600bb16b2e50b5696c12 (patch) | |
tree | 6112625ba14f2adc00fba8ab7b9065ed053b1d4e /drivers/gpu/nvgpu | |
parent | 8de995d4af1916a47a50b0b13965058c9873f962 (diff) |
gpu: nvgpu: allocate blob space early
Allocting blob space for pmu might need fixed address
allocation in vidmem and during boot up
But if some page tables are allocated before blob space,
blob space allocation could fail
Fix this by allocating blob space early during boot up
Jira DNVGPU-20
Change-Id: I30eca1023c8f8f8be101bb7e160ba57a7040911a
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/1206402
(cherry picked from commit fad4309ce345ed3879f497bda27f2eceb1084dbb)
Reviewed-on: http://git-master/r/1210956
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
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, |