summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeema Khowala <seemaj@nvidia.com>2018-01-22 16:03:14 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-01-26 13:50:20 -0500
commit3f0f6267ea760c12e19424785e14c9309b88a6ae (patch)
treeea8ec688a4ddd8d528aeeef2dc5bc90435039965
parentfbdcc8a2d4c2b7f145b034ee7bde7105e66e0a4e (diff)
gpu: nvgpu: gv11b: dump more mmu fault info
-Dump client type/id and protected mode as error prints. This will help figuring out which client is causing mmu fault. -Removed extra print for unbound instance block fault as it is already printed as fault type -Changed few extra prints from info prints to prints protected by gpu_dbg_intr Change-Id: I9e87e2a701372b47200f85149e040176365bd71c Signed-off-by: Seema Khowala <seemaj@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1643817 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gv11b/fb_gv11b.c61
1 files changed, 24 insertions, 37 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fb_gv11b.c b/drivers/gpu/nvgpu/gv11b/fb_gv11b.c
index b7a0a3cf..e9093224 100644
--- a/drivers/gpu/nvgpu/gv11b/fb_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/fb_gv11b.c
@@ -760,46 +760,34 @@ static void gv11b_fb_print_fault_info(struct gk20a *g,
760 mmfault->fault_addr_aperture, 760 mmfault->fault_addr_aperture,
761 mmfault->fault_type_desc, 761 mmfault->fault_type_desc,
762 fault_access_type_descs_gv11b[mmfault->access_type]); 762 fault_access_type_descs_gv11b[mmfault->access_type]);
763 nvgpu_log(g, gpu_dbg_intr, "[MMU FAULT] " 763 nvgpu_err(g, "[MMU FAULT] "
764 "mmu engine id: %d, " 764 "protected mode: %d, "
765 "faulted act eng id if any: 0x%x, "
766 "faulted veid if any: 0x%x, "
767 "faulted pbdma id if any: 0x%x, "
768 "fault addr: 0x%llx, ",
769 mmfault->mmu_engine_id,
770 mmfault->faulted_engine,
771 mmfault->faulted_subid,
772 mmfault->faulted_pbdma,
773 mmfault->fault_addr);
774 nvgpu_log(g, gpu_dbg_intr, "[MMU FAULT] "
775 "fault addr aperture: %d, "
776 "fault type: %s, "
777 "access type: %s, "
778 "inst ptr: 0x%llx, "
779 "inst ptr aperture: %d, ",
780 mmfault->fault_addr_aperture,
781 mmfault->fault_type_desc,
782 fault_access_type_descs_gv11b[mmfault->access_type],
783 mmfault->inst_ptr,
784 mmfault->inst_aperture);
785 nvgpu_log(g, gpu_dbg_intr, "[MMU FAULT] "
786 "ch id: %d, "
787 "timestamp hi:lo 0x%08x:0x%08x, "
788 "client type: %s, " 765 "client type: %s, "
789 "client id: %s, " 766 "client id: %s, "
790 "gpc id if client type is gpc: %d, ", 767 "gpc id if client type is gpc: %d, ",
791 mmfault->chid, 768 mmfault->protected_mode,
792 mmfault->timestamp_hi, mmfault->timestamp_lo,
793 mmfault->client_type_desc, 769 mmfault->client_type_desc,
794 mmfault->client_id_desc, 770 mmfault->client_id_desc,
795 mmfault->gpc_id); 771 mmfault->gpc_id);
772
796 nvgpu_log(g, gpu_dbg_intr, "[MMU FAULT] " 773 nvgpu_log(g, gpu_dbg_intr, "[MMU FAULT] "
797 "protected mode: %d, " 774 "faulted act eng id if any: 0x%x, "
775 "faulted veid if any: 0x%x, "
776 "faulted pbdma id if any: 0x%x, ",
777 mmfault->faulted_engine,
778 mmfault->faulted_subid,
779 mmfault->faulted_pbdma);
780 nvgpu_log(g, gpu_dbg_intr, "[MMU FAULT] "
781 "inst ptr: 0x%llx, "
782 "inst ptr aperture: %d, "
798 "replayable fault: %d, " 783 "replayable fault: %d, "
799 "replayable fault en: %d ", 784 "replayable fault en: %d "
800 mmfault->protected_mode, 785 "timestamp hi:lo 0x%08x:0x%08x, ",
786 mmfault->inst_ptr,
787 mmfault->inst_aperture,
801 mmfault->replayable_fault, 788 mmfault->replayable_fault,
802 mmfault->replay_fault_en); 789 mmfault->replay_fault_en,
790 mmfault->timestamp_hi, mmfault->timestamp_lo);
803 } 791 }
804} 792}
805 793
@@ -969,7 +957,6 @@ static void gv11b_fb_handle_mmu_fault_common(struct gk20a *g,
969 * single context so we need to reset the entire runlist 957 * single context so we need to reset the entire runlist
970 */ 958 */
971 id_type = ID_TYPE_UNKNOWN; 959 id_type = ID_TYPE_UNKNOWN;
972 nvgpu_log(g, gpu_dbg_intr, "UNBOUND INST BLOCK MMU FAULT");
973 960
974 } else if (mmfault->refch) { 961 } else if (mmfault->refch) {
975 if (gk20a_is_channel_marked_as_tsg(mmfault->refch)) { 962 if (gk20a_is_channel_marked_as_tsg(mmfault->refch)) {
@@ -1047,7 +1034,7 @@ static void gv11b_fb_handle_mmu_nonreplay_replay_fault(struct gk20a *g,
1047 "SPURIOUS mmu fault: reg index:%d", index); 1034 "SPURIOUS mmu fault: reg index:%d", index);
1048 return; 1035 return;
1049 } 1036 }
1050 nvgpu_info(g, "%s MMU FAULT" , 1037 nvgpu_log(g, gpu_dbg_intr, "%s MMU FAULT" ,
1051 index == REPLAY_REG_INDEX ? "REPLAY" : "NON-REPLAY"); 1038 index == REPLAY_REG_INDEX ? "REPLAY" : "NON-REPLAY");
1052 1039
1053 nvgpu_log(g, gpu_dbg_intr, "get ptr = %d", get_indx); 1040 nvgpu_log(g, gpu_dbg_intr, "get ptr = %d", get_indx);
@@ -1091,10 +1078,9 @@ static void gv11b_fb_handle_mmu_nonreplay_replay_fault(struct gk20a *g,
1091 prev_fault_addr = next_fault_addr; 1078 prev_fault_addr = next_fault_addr;
1092 next_fault_addr = mmfault->fault_addr; 1079 next_fault_addr = mmfault->fault_addr;
1093 if (prev_fault_addr == next_fault_addr) { 1080 if (prev_fault_addr == next_fault_addr) {
1094 nvgpu_log(g, gpu_dbg_intr, "pte is fixed"); 1081 nvgpu_log(g, gpu_dbg_intr, "pte already scanned");
1095 if (mmfault->refch) 1082 if (mmfault->refch)
1096 gk20a_channel_put(mmfault->refch); 1083 gk20a_channel_put(mmfault->refch);
1097 /* pte already fixed for this addr */
1098 continue; 1084 continue;
1099 } 1085 }
1100 } 1086 }
@@ -1398,7 +1384,8 @@ void gv11b_fb_hub_isr(struct gk20a *g)
1398 1384
1399 niso_intr = gk20a_readl(g, fb_niso_intr_r()); 1385 niso_intr = gk20a_readl(g, fb_niso_intr_r());
1400 1386
1401 nvgpu_info(g, "enter hub isr, niso_intr = 0x%08x", niso_intr); 1387 nvgpu_log(g, gpu_dbg_intr, "enter hub isr, niso_intr = 0x%08x",
1388 niso_intr);
1402 1389
1403 if (niso_intr & 1390 if (niso_intr &
1404 (fb_niso_intr_hub_access_counter_notify_m() | 1391 (fb_niso_intr_hub_access_counter_notify_m() |
@@ -1439,7 +1426,7 @@ void gv11b_fb_hub_isr(struct gk20a *g)
1439 fb_niso_intr_mmu_nonreplayable_fault_notify_m() | 1426 fb_niso_intr_mmu_nonreplayable_fault_notify_m() |
1440 fb_niso_intr_mmu_nonreplayable_fault_overflow_m())) { 1427 fb_niso_intr_mmu_nonreplayable_fault_overflow_m())) {
1441 1428
1442 nvgpu_info(g, "MMU Fault"); 1429 nvgpu_log(g, gpu_dbg_intr, "MMU Fault");
1443 gv11b_fb_handle_mmu_fault(g, niso_intr); 1430 gv11b_fb_handle_mmu_fault(g, niso_intr);
1444 } 1431 }
1445 1432