mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 09:57:08 +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;
|
||||
|
||||
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_TYPE_NUM);
|
||||
if (!fault_info_mem) {
|
||||
@@ -117,24 +123,31 @@ static void gv11b_mm_mmu_hw_fault_buf_init(struct gk20a *g,
|
||||
fb_size = (g->ops.fifo.get_num_fifos(g) + 1) *
|
||||
gmmu_fault_buf_size_v();
|
||||
|
||||
err = nvgpu_dma_alloc_map_sys(vm, fb_size,
|
||||
if (!nvgpu_mem_is_valid(
|
||||
&g->mm.hw_fault_buf[FAULT_TYPE_OTHER_AND_NONREPLAY])) {
|
||||
|
||||
err = nvgpu_dma_alloc_map_sys(vm, fb_size,
|
||||
&g->mm.hw_fault_buf[FAULT_TYPE_OTHER_AND_NONREPLAY]);
|
||||
if (err) {
|
||||
nvgpu_err(g,
|
||||
"Error in hw mmu fault buf [0] alloc in bar2 vm ");
|
||||
/* Fault will be snapped in pri reg but not in buffer */
|
||||
return;
|
||||
if (err) {
|
||||
nvgpu_err(g,
|
||||
"Error in hw mmu fault buf [0] alloc in bar2 vm ");
|
||||
/* Fault will be snapped in pri reg but not in buffer */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
*hub_intr_types |= HUB_INTR_TYPE_NONREPLAY;
|
||||
|
||||
err = nvgpu_dma_alloc_map_sys(vm, fb_size,
|
||||
&g->mm.hw_fault_buf[FAULT_TYPE_REPLAY]);
|
||||
if (err) {
|
||||
nvgpu_err(g,
|
||||
"Error in hw mmu fault buf [1] alloc in bar2 vm ");
|
||||
/* Fault will be snapped in pri reg but not in buffer */
|
||||
return;
|
||||
if (!nvgpu_mem_is_valid(
|
||||
&g->mm.hw_fault_buf[FAULT_TYPE_REPLAY])) {
|
||||
err = nvgpu_dma_alloc_map_sys(vm, fb_size,
|
||||
&g->mm.hw_fault_buf[FAULT_TYPE_REPLAY]);
|
||||
if (err) {
|
||||
nvgpu_err(g,
|
||||
"Error in hw mmu fault buf [1] alloc in bar2 vm ");
|
||||
/* Fault will be snapped in pri reg but not in buffer */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
*hub_intr_types |= HUB_INTR_TYPE_REPLAY;
|
||||
|
||||
Reference in New Issue
Block a user