mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 18:16:01 +03:00
gpu: nvgpu: gv11b: skip mmu fault buf alloc after resume
Skip allocating memory if required s/w set up for mmu fault buffers is already done. Bug 2045228 Change-Id: Ib88e8dd4f54b3f0faf7dc9edf091ec285220f7b5 Signed-off-by: Seema Khowala <seemaj@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1640516 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
0f291f0d58
commit
0a0ffca145
@@ -89,6 +89,12 @@ static int gv11b_mm_mmu_fault_info_buf_init(struct gk20a *g,
|
|||||||
{
|
{
|
||||||
struct mmu_fault_info *fault_info_mem;
|
struct mmu_fault_info *fault_info_mem;
|
||||||
|
|
||||||
|
if (g->mm.fault_info[FAULT_TYPE_OTHER_AND_NONREPLAY] != NULL &&
|
||||||
|
g->mm.fault_info[FAULT_TYPE_REPLAY] != NULL) {
|
||||||
|
*hub_intr_types |= HUB_INTR_TYPE_OTHER;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
fault_info_mem = nvgpu_kzalloc(g, sizeof(struct mmu_fault_info) *
|
fault_info_mem = nvgpu_kzalloc(g, sizeof(struct mmu_fault_info) *
|
||||||
FAULT_TYPE_NUM);
|
FAULT_TYPE_NUM);
|
||||||
if (!fault_info_mem) {
|
if (!fault_info_mem) {
|
||||||
@@ -117,6 +123,9 @@ static void gv11b_mm_mmu_hw_fault_buf_init(struct gk20a *g,
|
|||||||
fb_size = (g->ops.fifo.get_num_fifos(g) + 1) *
|
fb_size = (g->ops.fifo.get_num_fifos(g) + 1) *
|
||||||
gmmu_fault_buf_size_v();
|
gmmu_fault_buf_size_v();
|
||||||
|
|
||||||
|
if (!nvgpu_mem_is_valid(
|
||||||
|
&g->mm.hw_fault_buf[FAULT_TYPE_OTHER_AND_NONREPLAY])) {
|
||||||
|
|
||||||
err = nvgpu_dma_alloc_map_sys(vm, fb_size,
|
err = nvgpu_dma_alloc_map_sys(vm, fb_size,
|
||||||
&g->mm.hw_fault_buf[FAULT_TYPE_OTHER_AND_NONREPLAY]);
|
&g->mm.hw_fault_buf[FAULT_TYPE_OTHER_AND_NONREPLAY]);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -125,9 +134,12 @@ static void gv11b_mm_mmu_hw_fault_buf_init(struct gk20a *g,
|
|||||||
/* Fault will be snapped in pri reg but not in buffer */
|
/* Fault will be snapped in pri reg but not in buffer */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
*hub_intr_types |= HUB_INTR_TYPE_NONREPLAY;
|
*hub_intr_types |= HUB_INTR_TYPE_NONREPLAY;
|
||||||
|
|
||||||
|
if (!nvgpu_mem_is_valid(
|
||||||
|
&g->mm.hw_fault_buf[FAULT_TYPE_REPLAY])) {
|
||||||
err = nvgpu_dma_alloc_map_sys(vm, fb_size,
|
err = nvgpu_dma_alloc_map_sys(vm, fb_size,
|
||||||
&g->mm.hw_fault_buf[FAULT_TYPE_REPLAY]);
|
&g->mm.hw_fault_buf[FAULT_TYPE_REPLAY]);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -136,6 +148,7 @@ static void gv11b_mm_mmu_hw_fault_buf_init(struct gk20a *g,
|
|||||||
/* Fault will be snapped in pri reg but not in buffer */
|
/* Fault will be snapped in pri reg but not in buffer */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
*hub_intr_types |= HUB_INTR_TYPE_REPLAY;
|
*hub_intr_types |= HUB_INTR_TYPE_REPLAY;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user