hc
2024-05-16 8d2a02b24d66aa359e83eebc1ed3c0f85367a1cb
kernel/drivers/gpu/arm/bifrost/gpu/backend/mali_kbase_gpu_fault_csf.c
....@@ -1,7 +1,7 @@
11 // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
22 /*
33 *
4
- * (C) COPYRIGHT 2019-2021 ARM Limited. All rights reserved.
4
+ * (C) COPYRIGHT 2019-2023 ARM Limited. All rights reserved.
55 *
66 * This program is free software and is provided to you under the terms of the
77 * GNU General Public License version 2 as published by the Free Software
....@@ -20,7 +20,7 @@
2020 */
2121
2222 #include <mali_kbase.h>
23
-#include <uapi/gpu/arm/bifrost/csf/mali_gpu_csf_registers.h>
23
+#include <csf/mali_kbase_csf_registers.h>
2424 #include <gpu/mali_kbase_gpu_fault.h>
2525
2626 const char *kbase_gpu_exception_name(u32 const exception_code)
....@@ -42,14 +42,18 @@
4242 case CS_FATAL_EXCEPTION_TYPE_CS_ENDPOINT_FAULT:
4343 e = "FATAL_CS_ENDPOINT_FAULT";
4444 break;
45
- case CS_FATAL_EXCEPTION_TYPE_CS_BUS_FAULT:
46
- e = "FATAL_CS_BUS_FAULT";
47
- break;
4845 case CS_FATAL_EXCEPTION_TYPE_CS_INVALID_INSTRUCTION:
4946 e = "FATAL_CS_INVALID_INSTRUCTION";
5047 break;
5148 case CS_FATAL_EXCEPTION_TYPE_CS_CALL_STACK_OVERFLOW:
5249 e = "FATAL_CS_CALL_STACK_OVERFLOW";
50
+ break;
51
+ /*
52
+ * CS_FAULT_EXCEPTION_TYPE_CS_BUS_FAULT and CS_FATAL_EXCEPTION_TYPE_CS_BUS_FAULT share the same error code
53
+ * Type of CS_BUS_FAULT will be differentiated by CSF exception handler
54
+ */
55
+ case CS_FAULT_EXCEPTION_TYPE_CS_BUS_FAULT:
56
+ e = "CS_BUS_FAULT";
5357 break;
5458 /* Shader exceptions */
5559 case CS_FAULT_EXCEPTION_TYPE_INSTR_INVALID_PC:
....@@ -60,6 +64,10 @@
6064 break;
6165 case CS_FAULT_EXCEPTION_TYPE_INSTR_BARRIER_FAULT:
6266 e = "INSTR_BARRIER_FAULT";
67
+ break;
68
+ /* Iterator exceptions */
69
+ case CS_FAULT_EXCEPTION_TYPE_KABOOM:
70
+ e = "KABOOM";
6371 break;
6472 /* Misc exceptions */
6573 case CS_FAULT_EXCEPTION_TYPE_DATA_INVALID_FAULT:
....@@ -78,6 +86,9 @@
7886 case CS_FATAL_EXCEPTION_TYPE_FIRMWARE_INTERNAL_ERROR:
7987 e = "FIRMWARE_INTERNAL_ERROR";
8088 break;
89
+ case CS_FATAL_EXCEPTION_TYPE_CS_UNRECOVERABLE:
90
+ e = "CS_UNRECOVERABLE";
91
+ break;
8192 case CS_FAULT_EXCEPTION_TYPE_RESOURCE_EVICTION_TIMEOUT:
8293 e = "RESOURCE_EVICTION_TIMEOUT";
8394 break;
....@@ -94,6 +105,70 @@
94105 case GPU_FAULTSTATUS_EXCEPTION_TYPE_GPU_CACHEABILITY_FAULT:
95106 e = "GPU_CACHEABILITY_FAULT";
96107 break;
108
+ /* MMU Fault */
109
+ case CS_FAULT_EXCEPTION_TYPE_TRANSLATION_FAULT_L0:
110
+ e = "TRANSLATION_FAULT at level 0";
111
+ break;
112
+ case CS_FAULT_EXCEPTION_TYPE_TRANSLATION_FAULT_L1:
113
+ e = "TRANSLATION_FAULT at level 1";
114
+ break;
115
+ case CS_FAULT_EXCEPTION_TYPE_TRANSLATION_FAULT_L2:
116
+ e = "TRANSLATION_FAULT at level 2";
117
+ break;
118
+ case CS_FAULT_EXCEPTION_TYPE_TRANSLATION_FAULT_L3:
119
+ e = "TRANSLATION_FAULT at level 3";
120
+ break;
121
+ case CS_FAULT_EXCEPTION_TYPE_TRANSLATION_FAULT_L4:
122
+ e = "TRANSLATION_FAULT";
123
+ break;
124
+ case CS_FAULT_EXCEPTION_TYPE_PERMISSION_FAULT_0:
125
+ e = "PERMISSION_FAULT at level 0";
126
+ break;
127
+ case CS_FAULT_EXCEPTION_TYPE_PERMISSION_FAULT_1:
128
+ e = "PERMISSION_FAULT at level 1";
129
+ break;
130
+ case CS_FAULT_EXCEPTION_TYPE_PERMISSION_FAULT_2:
131
+ e = "PERMISSION_FAULT at level 2";
132
+ break;
133
+ case CS_FAULT_EXCEPTION_TYPE_PERMISSION_FAULT_3:
134
+ e = "PERMISSION_FAULT at level 3";
135
+ break;
136
+ case CS_FAULT_EXCEPTION_TYPE_ACCESS_FLAG_1:
137
+ e = "ACCESS_FLAG at level 1";
138
+ break;
139
+ case CS_FAULT_EXCEPTION_TYPE_ACCESS_FLAG_2:
140
+ e = "ACCESS_FLAG at level 2";
141
+ break;
142
+ case CS_FAULT_EXCEPTION_TYPE_ACCESS_FLAG_3:
143
+ e = "ACCESS_FLAG at level 3";
144
+ break;
145
+ case CS_FAULT_EXCEPTION_TYPE_ADDRESS_SIZE_FAULT_IN:
146
+ e = "ADDRESS_SIZE_FAULT_IN";
147
+ break;
148
+ case CS_FAULT_EXCEPTION_TYPE_ADDRESS_SIZE_FAULT_OUT_0:
149
+ e = "ADDRESS_SIZE_FAULT_OUT_0 at level 0";
150
+ break;
151
+ case CS_FAULT_EXCEPTION_TYPE_ADDRESS_SIZE_FAULT_OUT_1:
152
+ e = "ADDRESS_SIZE_FAULT_OUT_1 at level 1";
153
+ break;
154
+ case CS_FAULT_EXCEPTION_TYPE_ADDRESS_SIZE_FAULT_OUT_2:
155
+ e = "ADDRESS_SIZE_FAULT_OUT_2 at level 2";
156
+ break;
157
+ case CS_FAULT_EXCEPTION_TYPE_ADDRESS_SIZE_FAULT_OUT_3:
158
+ e = "ADDRESS_SIZE_FAULT_OUT_3 at level 3";
159
+ break;
160
+ case CS_FAULT_EXCEPTION_TYPE_MEMORY_ATTRIBUTE_FAULT_0:
161
+ e = "MEMORY_ATTRIBUTE_FAULT_0 at level 0";
162
+ break;
163
+ case CS_FAULT_EXCEPTION_TYPE_MEMORY_ATTRIBUTE_FAULT_1:
164
+ e = "MEMORY_ATTRIBUTE_FAULT_1 at level 1";
165
+ break;
166
+ case CS_FAULT_EXCEPTION_TYPE_MEMORY_ATTRIBUTE_FAULT_2:
167
+ e = "MEMORY_ATTRIBUTE_FAULT_2 at level 2";
168
+ break;
169
+ case CS_FAULT_EXCEPTION_TYPE_MEMORY_ATTRIBUTE_FAULT_3:
170
+ e = "MEMORY_ATTRIBUTE_FAULT_3 at level 3";
171
+ break;
97172 /* Any other exception code is unknown */
98173 default:
99174 e = "UNKNOWN";