xref: /openbmc/u-boot/include/fsl_secboot_err.h (revision 47151e4b)
1*47151e4bSgaurav rana /*
2*47151e4bSgaurav rana  * Copyright 2015 Freescale Semiconductor, Inc.
3*47151e4bSgaurav rana  *
4*47151e4bSgaurav rana  * SPDX-License-Identifier:	GPL-2.0+
5*47151e4bSgaurav rana  */
6*47151e4bSgaurav rana 
7*47151e4bSgaurav rana #ifndef _FSL_SECBOOT_ERR_H
8*47151e4bSgaurav rana #define _FSL_SECBOOT_ERR_H
9*47151e4bSgaurav rana 
10*47151e4bSgaurav rana #define ERROR_ESBC_PAMU_INIT					0x100000
11*47151e4bSgaurav rana #define ERROR_ESBC_SEC_RESET					0x200000
12*47151e4bSgaurav rana #define ERROR_ESBC_SEC_INIT					0x400000
13*47151e4bSgaurav rana #define ERROR_ESBC_SEC_DEQ					0x800000
14*47151e4bSgaurav rana #define ERROR_ESBC_SEC_DEQ_TO					0x1000000
15*47151e4bSgaurav rana #define ERROR_ESBC_SEC_ENQ					0x2000000
16*47151e4bSgaurav rana #define ERROR_ESBC_SEC_JOBQ_STATUS				0x4000000
17*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_CPUID_NO_MATCH			0x1
18*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HDR_LOC				0x2
19*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_BARKER				0x4
20*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_KEY_LEN			0x8
21*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_SIG_LEN			0x10
22*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_KEY_REVOKED			0x11
23*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_INVALID_SRK_NUM_ENTRY		0x12
24*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_INVALID_KEY_NUM		0x13
25*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_INV_SRK_ENTRY_KEYLEN		0x14
26*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_IE_KEY_REVOKED			0x15
27*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_INVALID_IE_NUM_ENTRY		0x16
28*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_INVALID_IE_KEY_NUM		0x17
29*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_INV_IE_ENTRY_KEYLEN		0x18
30*47151e4bSgaurav rana #define ERROR_IE_TABLE_NOT_FOUND				0x19
31*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_KEY_LEN_NOT_TWICE_SIG_LEN	0x20
32*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_KEY_MOD_1			0x40
33*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_KEY_MOD_2			0x80
34*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_SIG_KEY_MOD			0x100
35*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_SG_ESBC_EP			0x200
36*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HASH_COMPARE_KEY			0x400
37*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HASH_COMPARE_EM			0x800
38*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_SSM_TRUSTSTS				0x1000
39*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_BAD_ADDRESS				0x2000
40*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_MISC					0x4000
41*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_SG_ENTIRES_BAD			0x8000
42*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_SG				0x10000
43*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_HEADER_IMG_SIZE			0x20000
44*47151e4bSgaurav rana #define ERROR_ESBC_WRONG_CMD					0x40000
45*47151e4bSgaurav rana #define ERROR_ESBC_MISSING_BOOTM				0x80000
46*47151e4bSgaurav rana #define ERROR_ESBC_CLIENT_MAX					0x0
47*47151e4bSgaurav rana 
48*47151e4bSgaurav rana struct fsl_secboot_errcode {
49*47151e4bSgaurav rana 	int errcode;
50*47151e4bSgaurav rana 	const char *name;
51*47151e4bSgaurav rana };
52*47151e4bSgaurav rana 
53*47151e4bSgaurav rana static const struct fsl_secboot_errcode fsl_secboot_errcodes[] = {
54*47151e4bSgaurav rana 	{ ERROR_ESBC_PAMU_INIT,
55*47151e4bSgaurav rana 		"Error in initializing PAMU"},
56*47151e4bSgaurav rana 	{ ERROR_ESBC_SEC_RESET,
57*47151e4bSgaurav rana 		"Error in resetting Job ring of SEC"},
58*47151e4bSgaurav rana 	{ ERROR_ESBC_SEC_INIT,
59*47151e4bSgaurav rana 		"Error in initializing SEC"},
60*47151e4bSgaurav rana 	{ ERROR_ESBC_SEC_ENQ,
61*47151e4bSgaurav rana 		"Error in enqueue operation by SEC"},
62*47151e4bSgaurav rana 	{ ERROR_ESBC_SEC_DEQ_TO,
63*47151e4bSgaurav rana 		"Dequeue operation by SEC is timed out"},
64*47151e4bSgaurav rana 	{ ERROR_ESBC_SEC_DEQ,
65*47151e4bSgaurav rana 		"Error in dequeue operation by SEC"},
66*47151e4bSgaurav rana 	{ ERROR_ESBC_SEC_JOBQ_STATUS,
67*47151e4bSgaurav rana 		"Error in status of the job submitted to SEC"},
68*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_CPUID_NO_MATCH,
69*47151e4bSgaurav rana 		"Current core is not boot core i.e core0" },
70*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HDR_LOC,
71*47151e4bSgaurav rana 		"Header address not in allowed memory range" },
72*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_BARKER,
73*47151e4bSgaurav rana 		"Wrong barker code in header" },
74*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_KEY_LEN,
75*47151e4bSgaurav rana 		"Wrong public key length in header" },
76*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_SIG_LEN,
77*47151e4bSgaurav rana 		"Wrong signature length in header" },
78*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_KEY_LEN_NOT_TWICE_SIG_LEN,
79*47151e4bSgaurav rana 		"Public key length not twice of signature length" },
80*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_KEY_MOD_1,
81*47151e4bSgaurav rana 		"Public key Modulus most significant bit not set" },
82*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_KEY_MOD_2,
83*47151e4bSgaurav rana 		"Public key Modulus in header not odd" },
84*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_SIG_KEY_MOD,
85*47151e4bSgaurav rana 		"Signature not less than modulus" },
86*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_SG_ESBC_EP,
87*47151e4bSgaurav rana 		"Entry point not in allowed space or one of the SG entries" },
88*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HASH_COMPARE_KEY,
89*47151e4bSgaurav rana 		"Public key hash comparison failed" },
90*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HASH_COMPARE_EM,
91*47151e4bSgaurav rana 		"RSA verification failed" },
92*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_SSM_TRUSTSTS,
93*47151e4bSgaurav rana 		"SNVS not in TRUSTED state" },
94*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_BAD_ADDRESS,
95*47151e4bSgaurav rana 		"Bad address error" },
96*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_MISC,
97*47151e4bSgaurav rana 		"Miscallaneous error" },
98*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_SG,
99*47151e4bSgaurav rana 		"No SG support"  },
100*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_IMG_SIZE,
101*47151e4bSgaurav rana 		"Invalid Image size"  },
102*47151e4bSgaurav rana 	{ ERROR_ESBC_WRONG_CMD,
103*47151e4bSgaurav rana 		"Unknown cmd/Wrong arguments. Core in infinite loop"},
104*47151e4bSgaurav rana 	{ ERROR_ESBC_MISSING_BOOTM,
105*47151e4bSgaurav rana 		"Bootm command missing from bootscript" },
106*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_KEY_REVOKED,
107*47151e4bSgaurav rana 		"Selected key is revoked" },
108*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_INVALID_SRK_NUM_ENTRY,
109*47151e4bSgaurav rana 		"Wrong key entry" },
110*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_INVALID_KEY_NUM,
111*47151e4bSgaurav rana 		"Wrong key is selected" },
112*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_INV_SRK_ENTRY_KEYLEN,
113*47151e4bSgaurav rana 		"Wrong srk public key len in header" },
114*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_IE_KEY_REVOKED,
115*47151e4bSgaurav rana 		"Selected IE key is revoked" },
116*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_INVALID_IE_NUM_ENTRY,
117*47151e4bSgaurav rana 		"Wrong key entry in IE Table" },
118*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_INVALID_IE_KEY_NUM,
119*47151e4bSgaurav rana 		"Wrong IE key is selected" },
120*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_HEADER_INV_IE_ENTRY_KEYLEN,
121*47151e4bSgaurav rana 		"Wrong IE public key len in header" },
122*47151e4bSgaurav rana 	{ ERROR_IE_TABLE_NOT_FOUND,
123*47151e4bSgaurav rana 		"Information about IE Table missing" },
124*47151e4bSgaurav rana 	{ ERROR_ESBC_CLIENT_MAX, "NULL" }
125*47151e4bSgaurav rana };
126*47151e4bSgaurav rana 
127*47151e4bSgaurav rana void fsl_secboot_handle_error(int error);
128*47151e4bSgaurav rana #endif
129