xref: /xnu-12377.61.12/bsd/sys/kdebug_triage.h (revision 4d495c6e23c53686cf65f45067f79024cf5dcee8)
1*4d495c6eSApple OSS Distributions /*
2*4d495c6eSApple OSS Distributions  * Copyright (c) 2000-2020 Apple Inc. All rights reserved.
3*4d495c6eSApple OSS Distributions  *
4*4d495c6eSApple OSS Distributions  * @Apple_LICENSE_HEADER_START@
5*4d495c6eSApple OSS Distributions  *
6*4d495c6eSApple OSS Distributions  * The contents of this file constitute Original Code as defined in and
7*4d495c6eSApple OSS Distributions  * are subject to the Apple Public Source License Version 1.1 (the
8*4d495c6eSApple OSS Distributions  * "License").  You may not use this file except in compliance with the
9*4d495c6eSApple OSS Distributions  * License.  Please obtain a copy of the License at
10*4d495c6eSApple OSS Distributions  * http://www.apple.com/publicsource and read it before using this file.
11*4d495c6eSApple OSS Distributions  *
12*4d495c6eSApple OSS Distributions  * This Original Code and all software distributed under the License are
13*4d495c6eSApple OSS Distributions  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14*4d495c6eSApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15*4d495c6eSApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16*4d495c6eSApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
17*4d495c6eSApple OSS Distributions  * License for the specific language governing rights and limitations
18*4d495c6eSApple OSS Distributions  * under the License.
19*4d495c6eSApple OSS Distributions  *
20*4d495c6eSApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
21*4d495c6eSApple OSS Distributions  */
22*4d495c6eSApple OSS Distributions 
23*4d495c6eSApple OSS Distributions #ifndef BSD_SYS_KDEBUG_TRIAGE_H
24*4d495c6eSApple OSS Distributions #define BSD_SYS_KDEBUG_TRIAGE_H
25*4d495c6eSApple OSS Distributions 
26*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CLASS_MASK   (0xff000000)
27*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CLASS_OFFSET (24)
28*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CLASS_MAX    (0xff)
29*4d495c6eSApple OSS Distributions 
30*4d495c6eSApple OSS Distributions /* Unused but reserved for future use (possibly for payload encoding) */
31*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_RESERVED (0)
32*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_RESERVED_MASK   (0x00ff0000)
33*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_RESERVED_OFFSET (16)
34*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_RESERVED_MAX    (0xff)
35*4d495c6eSApple OSS Distributions 
36*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CODE_MASK   (0x0000fffc)
37*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CODE_OFFSET (2)
38*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_CODE_MAX    (0x3fff)
39*4d495c6eSApple OSS Distributions 
40*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_EVENTID(Class, Reserved, Code)                \
41*4d495c6eSApple OSS Distributions 	(((unsigned)((Class)    &   0xff) << KDBG_TRIAGE_CLASS_OFFSET)    | \
42*4d495c6eSApple OSS Distributions 	 ((unsigned)((Reserved) &   0xff) << KDBG_TRIAGE_RESERVED_OFFSET) | \
43*4d495c6eSApple OSS Distributions 	 ((unsigned)((Code)     & 0x3fff) << KDBG_TRIAGE_CODE_OFFSET))
44*4d495c6eSApple OSS Distributions 
45*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_EXTRACT_CLASS(Debugid) \
46*4d495c6eSApple OSS Distributions 	((uint8_t)(((Debugid) & KDBG_TRIAGE_CLASS_MASK) >> KDBG_TRIAGE_CLASS_OFFSET))
47*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_EXTRACT_CODE(Debugid) \
48*4d495c6eSApple OSS Distributions 	((uint16_t)(((Debugid) & KDBG_TRIAGE_CODE_MASK) >> KDBG_TRIAGE_CODE_OFFSET))
49*4d495c6eSApple OSS Distributions 
50*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_MAX_STRINGS (5)
51*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_MAX_STRLEN  (128)
52*4d495c6eSApple OSS Distributions 
53*4d495c6eSApple OSS Distributions /****** VM Codes Begin ******/
54*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_VM   (1)
55*4d495c6eSApple OSS Distributions 
56*4d495c6eSApple OSS Distributions enum vm_subsys_error_codes {
57*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_PREFIX = 0,
58*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_NO_DATA,
59*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_TEXT_CORRUPTION,
60*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_ADDRESS_NOT_FOUND,
61*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_PROTECTION_FAILURE,
62*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_MEMORY_SHORTAGE,
63*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_COPY_MEMORY_SHORTAGE,
64*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_OBJCOPYSLOWLY_MEMORY_SHORTAGE,
65*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_OBJIOPLREQ_MEMORY_SHORTAGE,
66*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_FAULT_INTERRUPTED,
67*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_SUCCESS_NO_PAGE,
68*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_GUARDPAGE_FAULT,
69*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_NONZERO_PREEMPTION_LEVEL,
70*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_BUSYPAGE_WAIT_INTERRUPTED,
71*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_PURGEABLE_FAULT_ERROR,
72*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_SHADOW_SEVERED,
73*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NOT_ALIVE,
74*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NO_PAGER,
75*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NO_PAGER_RECLAIM,
76*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NO_PAGER_UNMOUNT,
77*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NO_PAGER_FORCED_UNMOUNT,
78*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NO_PAGER_UNGRAFT,
79*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_OBJECT_NO_PAGER_DEALLOC_PAGER,
80*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_PAGE_HAS_ERROR,
81*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_PAGE_HAS_RESTART,
82*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_FAILED_IMMUTABLE_PAGE_WRITE,
83*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_FAILED_NX_PAGE_EXEC_MAPPING,
84*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_PMAP_ENTER_RESOURCE_SHORTAGE,
85*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COMPRESSOR_GET_OUT_OF_RANGE,
86*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COMPRESSOR_GET_NO_PAGE,
87*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COMPRESSOR_DECOMPRESS_FAILED,
88*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COMPRESSOR_DECOMPRESS_POPCNT_MISMATCH,
89*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_SUBMAP_NO_COW_ON_EXECUTABLE,
90*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_SUBMAP_COPY_SLOWLY_FAILED,
91*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_SUBMAP_COPY_STRAT_FAILED,
92*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_VNODEPAGER_CLREAD_NO_UPL,
93*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_VNODEPAGEIN_NO_UBCINFO,
94*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_VNODEPAGEIN_FSPAGEIN_FAIL,
95*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_VNODEPAGEIN_NO_UPL,
96*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_ECC_DIRTY,
97*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_ECC_CLEAN,
98*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOUTMAP_SAMEMAP_ERROR,
99*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOUTMAP_DIFFERENTMAP_ERROR,
100*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOVERWRITE_FULL_NESTED_ERROR,
101*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOVERWRITE_PARTIAL_NESTED_ERROR,
102*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOVERWRITE_PARTIAL_HEAD_NESTED_ERROR,
103*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOVERWRITE_PARTIAL_TAIL_NESTED_ERROR,
104*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOUT_INTERNAL_SIZE_ERROR,
105*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOUT_KERNEL_BUFFER_ERROR,
106*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOUT_INTERNAL_ADJUSTING_ERROR,
107*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_COPYOUT_INTERNAL_SPACE_ERROR,
108*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_ALLOCATE_KERNEL_BADFLAGS_ERROR,
109*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_ALLOCATE_KERNEL_BADMAP_ERROR,
110*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_ALLOCATE_KERNEL_BADSIZE_ERROR,
111*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_ALLOCATE_KERNEL_VMMAPENTER_ERROR,
112*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_CODE_SIGNING,
113*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_FAULTS_DISABLED,
114*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_IOPL_ON_EXEC_PAGE,
115*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_EXEC_ON_IOPL_PAGE,
116*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_UPL_WRITE_ON_EXEC_REGION,
117*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_VM_MAX
118*4d495c6eSApple OSS Distributions };
119*4d495c6eSApple OSS Distributions #define VM_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_VM_MAX)
120*4d495c6eSApple OSS Distributions 
121*4d495c6eSApple OSS Distributions /****** VM Codes End ******/
122*4d495c6eSApple OSS Distributions 
123*4d495c6eSApple OSS Distributions /****** Cluster Codes Begin ******/
124*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_CLUSTER   (2)
125*4d495c6eSApple OSS Distributions 
126*4d495c6eSApple OSS Distributions enum cluster_subsys_error_codes {
127*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CL_PREFIX = 0,
128*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CL_PGIN_PAST_EOF,
129*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CL_MAX
130*4d495c6eSApple OSS Distributions };
131*4d495c6eSApple OSS Distributions #define CLUSTER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_CL_MAX)
132*4d495c6eSApple OSS Distributions 
133*4d495c6eSApple OSS Distributions /****** Cluster Codes End ******/
134*4d495c6eSApple OSS Distributions 
135*4d495c6eSApple OSS Distributions /****** Shared Region Codes Begin ******/
136*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_SHARED_REGION   (3)
137*4d495c6eSApple OSS Distributions 
138*4d495c6eSApple OSS Distributions enum shared_region_subsys_error_codes {
139*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_PREFIX = 0,
140*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_NO_UPL,
141*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_SLIDE_ERROR,
142*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_PAGER_MEMORY_SHORTAGE,
143*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_SHARED_REGION_MAX
144*4d495c6eSApple OSS Distributions };
145*4d495c6eSApple OSS Distributions #define SHARED_REGION_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_SHARED_REGION_MAX)
146*4d495c6eSApple OSS Distributions 
147*4d495c6eSApple OSS Distributions /****** Shared Region Codes End ******/
148*4d495c6eSApple OSS Distributions 
149*4d495c6eSApple OSS Distributions /****** DYLD pager Codes Begin ******/
150*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_DYLD_PAGER   (4)
151*4d495c6eSApple OSS Distributions 
152*4d495c6eSApple OSS Distributions enum dyld_pager_subsys_error_codes {
153*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_PREFIX = 0,
154*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_NO_UPL,
155*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_MEMORY_SHORTAGE,
156*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_SLIDE_ERROR,
157*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_CHAIN_OUT_OF_RANGE,
158*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_SEG_INFO_OUT_OF_RANGE,
159*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_SEG_SIZE_OUT_OF_RANGE,
160*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_SEG_PAGE_CNT_OUT_OF_RANGE,
161*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_NO_SEG_FOR_VA,
162*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_RANGE_NOT_FOUND,
163*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_DELTA_TOO_LARGE,
164*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_PAGE_START_OUT_OF_RANGE,
165*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_BAD_POINTER_FMT,
166*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_INVALID_AUTH_KEY,
167*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_BIND_ORDINAL,
168*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_DYLD_PAGER_MAX
169*4d495c6eSApple OSS Distributions };
170*4d495c6eSApple OSS Distributions #define DYLD_PAGER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_DYLD_PAGER_MAX)
171*4d495c6eSApple OSS Distributions 
172*4d495c6eSApple OSS Distributions /****** DYLD pager Codes End ******/
173*4d495c6eSApple OSS Distributions 
174*4d495c6eSApple OSS Distributions /****** APPLE_PROTECT_PAGER pager Codes Begin ******/
175*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_APPLE_PROTECT_PAGER   (5)
176*4d495c6eSApple OSS Distributions 
177*4d495c6eSApple OSS Distributions enum apple_protect_pager_subsys_error_codes {
178*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_APPLE_PROTECT_PAGER_PREFIX = 0,
179*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_APPLE_PROTECT_PAGER_MEMORY_SHORTAGE,
180*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_APPLE_PROTECT_PAGER_MAX
181*4d495c6eSApple OSS Distributions };
182*4d495c6eSApple OSS Distributions #define APPLE_PROTECT_PAGER_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_APPLE_PROTECT_PAGER_MAX)
183*4d495c6eSApple OSS Distributions 
184*4d495c6eSApple OSS Distributions /****** APPLE_PROTECT pager Codes End ******/
185*4d495c6eSApple OSS Distributions 
186*4d495c6eSApple OSS Distributions /****** Corpse pager Codes Begin ******/
187*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_CORPSE   (6)
188*4d495c6eSApple OSS Distributions 
189*4d495c6eSApple OSS Distributions enum corpse_subsys_error_codes {
190*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CORPSE_PREFIX = 0,
191*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CORPSE_PROC_TOO_BIG,
192*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CORPSE_FAIL_LIBGMALLOC,
193*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CORPSE_BLOCKED_JETSAM,
194*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CORPSE_LIMIT,
195*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CORPSES_DISABLED,
196*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CORPSE_DISABLED_FOR_PROC,
197*4d495c6eSApple OSS Distributions 	KDBG_TRIAGE_CORPSE_MAX
198*4d495c6eSApple OSS Distributions };
199*4d495c6eSApple OSS Distributions #define CORPSE_MAX_TRIAGE_STRINGS (KDBG_TRIAGE_CORPSE_MAX)
200*4d495c6eSApple OSS Distributions 
201*4d495c6eSApple OSS Distributions /****** Corpse pager Codes End ******/
202*4d495c6eSApple OSS Distributions 
203*4d495c6eSApple OSS Distributions /****** Dynamic ktriage Begin ******/
204*4d495c6eSApple OSS Distributions /*
205*4d495c6eSApple OSS Distributions  * kexts and kernel modules can define their own strings and augment them with
206*4d495c6eSApple OSS Distributions  * an argument.
207*4d495c6eSApple OSS Distributions  * ktriage only needs to know the subsystem id, and expects that the first
208*4d495c6eSApple OSS Distributions  * string will be the subsystem prefix string.
209*4d495c6eSApple OSS Distributions  *
210*4d495c6eSApple OSS Distributions  * Right now we don't support dynamically adding or removing subsystems.
211*4d495c6eSApple OSS Distributions  */
212*4d495c6eSApple OSS Distributions 
213*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_APFS    (7)
214*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_DECMPFS (8)
215*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_VM_SANITIZE (9)
216*4d495c6eSApple OSS Distributions 
217*4d495c6eSApple OSS Distributions /****** Dynamic ktriage End ******/
218*4d495c6eSApple OSS Distributions 
219*4d495c6eSApple OSS Distributions /* please update KDBG_TRIAGE_SUBSYS_MAX when adding a new subsystem */
220*4d495c6eSApple OSS Distributions 
221*4d495c6eSApple OSS Distributions #define KDBG_TRIAGE_SUBSYS_MAX  KDBG_TRIAGE_SUBSYS_VM_SANITIZE
222*4d495c6eSApple OSS Distributions 
223*4d495c6eSApple OSS Distributions #endif /* BSD_SYS_KDEBUG_TRIAGE_H */
224