@@ -75,12 +75,12 @@ REG32(CFG_SHADOWED, 0x14u)
75
75
FIELD (CFG_SHADOWED , ENTROPY_FAST_PROCESS , 19u , 1u )
76
76
FIELD (CFG_SHADOWED , MSG_MASK , 20u , 1u )
77
77
FIELD (CFG_SHADOWED , ENTROPY_READY , 24u , 1u )
78
- FIELD (CFG_SHADOWED , ERR_PROCESSED , 25u , 1u )
79
78
FIELD (CFG_SHADOWED , EN_UNSUPPORTED_MODESTRENGTH , 26u , 1u )
80
79
REG32 (CMD , 0x18u )
81
80
FIELD (CMD , CMD , 0u , 6u )
82
81
FIELD (CMD , ENTROPY_REQ , 8u , 1u )
83
82
FIELD (CMD , HASH_CNT_CLR , 9u , 1u )
83
+ FIELD (CMD , ERR_PROCESSED , 10u , 1u )
84
84
REG32 (STATUS , 0x1cu )
85
85
FIELD (STATUS , SHA3_IDLE , 0u , 1u )
86
86
FIELD (STATUS , SHA3_ABSORB , 1u , 1u )
@@ -97,57 +97,53 @@ REG32(ENTROPY_REFRESH_HASH_CNT, 0x24u)
97
97
FIELD (ENTROPY_REFRESH_HASH_CNT , HASH_CNT , 0u , 10u )
98
98
REG32 (ENTROPY_REFRESH_THRESHOLD_SHADOWED , 0x28u )
99
99
FIELD (ENTROPY_REFRESH_THRESHOLD_SHADOWED , THRESHOLD , 0u , 10u )
100
- REG32 (ENTROPY_SEED_0 , 0x2cu )
101
- REG32 (ENTROPY_SEED_1 , 0x30u )
102
- REG32 (ENTROPY_SEED_2 , 0x34u )
103
- REG32 (ENTROPY_SEED_3 , 0x38u )
104
- REG32 (ENTROPY_SEED_4 , 0x3cu )
105
- REG32 (KEY_SHARE0_0 , 0x40u )
106
- REG32 (KEY_SHARE0_1 , 0x44u )
107
- REG32 (KEY_SHARE0_2 , 0x48u )
108
- REG32 (KEY_SHARE0_3 , 0x4cu )
109
- REG32 (KEY_SHARE0_4 , 0x50u )
110
- REG32 (KEY_SHARE0_5 , 0x54u )
111
- REG32 (KEY_SHARE0_6 , 0x58u )
112
- REG32 (KEY_SHARE0_7 , 0x5cu )
113
- REG32 (KEY_SHARE0_8 , 0x60u )
114
- REG32 (KEY_SHARE0_9 , 0x64u )
115
- REG32 (KEY_SHARE0_10 , 0x68u )
116
- REG32 (KEY_SHARE0_11 , 0x6cu )
117
- REG32 (KEY_SHARE0_12 , 0x70u )
118
- REG32 (KEY_SHARE0_13 , 0x74u )
119
- REG32 (KEY_SHARE0_14 , 0x78u )
120
- REG32 (KEY_SHARE0_15 , 0x7cu )
121
- REG32 (KEY_SHARE1_0 , 0x80u )
122
- REG32 (KEY_SHARE1_1 , 0x84u )
123
- REG32 (KEY_SHARE1_2 , 0x88u )
124
- REG32 (KEY_SHARE1_3 , 0x8cu )
125
- REG32 (KEY_SHARE1_4 , 0x90u )
126
- REG32 (KEY_SHARE1_5 , 0x94u )
127
- REG32 (KEY_SHARE1_6 , 0x98u )
128
- REG32 (KEY_SHARE1_7 , 0x9cu )
129
- REG32 (KEY_SHARE1_8 , 0xa0u )
130
- REG32 (KEY_SHARE1_9 , 0xa4u )
131
- REG32 (KEY_SHARE1_10 , 0xa8u )
132
- REG32 (KEY_SHARE1_11 , 0xacu )
133
- REG32 (KEY_SHARE1_12 , 0xb0u )
134
- REG32 (KEY_SHARE1_13 , 0xb4u )
135
- REG32 (KEY_SHARE1_14 , 0xb8u )
136
- REG32 (KEY_SHARE1_15 , 0xbcu )
137
- REG32 (KEY_LEN , 0xc0u )
100
+ REG32 (ENTROPY_SEED , 0x2cu )
101
+ REG32 (KEY_SHARE0_0 , 0x30u )
102
+ REG32 (KEY_SHARE0_1 , 0x34u )
103
+ REG32 (KEY_SHARE0_2 , 0x38u )
104
+ REG32 (KEY_SHARE0_3 , 0x3cu )
105
+ REG32 (KEY_SHARE0_4 , 0x40u )
106
+ REG32 (KEY_SHARE0_5 , 0x44u )
107
+ REG32 (KEY_SHARE0_6 , 0x48u )
108
+ REG32 (KEY_SHARE0_7 , 0x4cu )
109
+ REG32 (KEY_SHARE0_8 , 0x50u )
110
+ REG32 (KEY_SHARE0_9 , 0x54u )
111
+ REG32 (KEY_SHARE0_10 , 0x58u )
112
+ REG32 (KEY_SHARE0_11 , 0x5cu )
113
+ REG32 (KEY_SHARE0_12 , 0x60u )
114
+ REG32 (KEY_SHARE0_13 , 0x64u )
115
+ REG32 (KEY_SHARE0_14 , 0x68u )
116
+ REG32 (KEY_SHARE0_15 , 0x6cu )
117
+ REG32 (KEY_SHARE1_0 , 0x70u )
118
+ REG32 (KEY_SHARE1_1 , 0x74u )
119
+ REG32 (KEY_SHARE1_2 , 0x78u )
120
+ REG32 (KEY_SHARE1_3 , 0x7cu )
121
+ REG32 (KEY_SHARE1_4 , 0x80u )
122
+ REG32 (KEY_SHARE1_5 , 0x84u )
123
+ REG32 (KEY_SHARE1_6 , 0x88u )
124
+ REG32 (KEY_SHARE1_7 , 0x8cu )
125
+ REG32 (KEY_SHARE1_8 , 0x90u )
126
+ REG32 (KEY_SHARE1_9 , 0x94u )
127
+ REG32 (KEY_SHARE1_10 , 0x98u )
128
+ REG32 (KEY_SHARE1_11 , 0x9cu )
129
+ REG32 (KEY_SHARE1_12 , 0xa0u )
130
+ REG32 (KEY_SHARE1_13 , 0xa4u )
131
+ REG32 (KEY_SHARE1_14 , 0xa8u )
132
+ REG32 (KEY_SHARE1_15 , 0xacu )
133
+ REG32 (KEY_LEN , 0xb0u )
138
134
FIELD (KEY_LEN , LEN , 0u , 3u )
139
- REG32 (PREFIX_0 , 0xc4u )
140
- REG32 (PREFIX_1 , 0xc8u )
141
- REG32 (PREFIX_2 , 0xccu )
142
- REG32 (PREFIX_3 , 0xd0u )
143
- REG32 (PREFIX_4 , 0xd4u )
144
- REG32 (PREFIX_5 , 0xd8u )
145
- REG32 (PREFIX_6 , 0xdcu )
146
- REG32 (PREFIX_7 , 0xe0u )
147
- REG32 (PREFIX_8 , 0xe4u )
148
- REG32 (PREFIX_9 , 0xe8u )
149
- REG32 (PREFIX_10 , 0xecu )
150
- REG32 (ERR_CODE , 0xf0u )
135
+ REG32 (PREFIX_0 , 0xb4u )
136
+ REG32 (PREFIX_1 , 0xb8u )
137
+ REG32 (PREFIX_2 , 0xbcu )
138
+ REG32 (PREFIX_3 , 0xc0u )
139
+ REG32 (PREFIX_4 , 0xc4u )
140
+ REG32 (PREFIX_5 , 0xc8u )
141
+ REG32 (PREFIX_6 , 0xccu )
142
+ REG32 (PREFIX_7 , 0xd0u )
143
+ REG32 (PREFIX_8 , 0xd4u )
144
+ REG32 (PREFIX_9 , 0xd8u )
145
+ REG32 (PREFIX_10 , 0xdcu )
146
+ REG32 (ERR_CODE , 0xe0u )
151
147
FIELD (ERR_CODE , INFO , 0u , 24u )
152
148
FIELD (ERR_CODE , CODE , 24u , 8u )
153
149
/* clang-format on */
@@ -162,7 +158,7 @@ REG32(ERR_CODE, 0xf0u)
162
158
R_CFG_SHADOWED_STATE_ENDIANNESS_MASK | R_CFG_SHADOWED_SIDELOAD_MASK | \
163
159
R_CFG_SHADOWED_ENTROPY_MODE_MASK | \
164
160
R_CFG_SHADOWED_ENTROPY_FAST_PROCESS_MASK | R_CFG_SHADOWED_MSG_MASK_MASK | \
165
- R_CFG_SHADOWED_ENTROPY_READY_MASK | R_CFG_SHADOWED_ERR_PROCESSED_MASK | \
161
+ R_CFG_SHADOWED_ENTROPY_READY_MASK | \
166
162
R_CFG_SHADOWED_EN_UNSUPPORTED_MODESTRENGTH_MASK)
167
163
168
164
enum {
@@ -254,11 +250,7 @@ static const char *REG_NAMES[REGS_COUNT] = {
254
250
REG_NAME_ENTRY (ENTROPY_PERIOD ),
255
251
REG_NAME_ENTRY (ENTROPY_REFRESH_HASH_CNT ),
256
252
REG_NAME_ENTRY (ENTROPY_REFRESH_THRESHOLD_SHADOWED ),
257
- REG_NAME_ENTRY (ENTROPY_SEED_0 ),
258
- REG_NAME_ENTRY (ENTROPY_SEED_1 ),
259
- REG_NAME_ENTRY (ENTROPY_SEED_2 ),
260
- REG_NAME_ENTRY (ENTROPY_SEED_3 ),
261
- REG_NAME_ENTRY (ENTROPY_SEED_4 ),
253
+ REG_NAME_ENTRY (ENTROPY_SEED ),
262
254
REG_NAME_ENTRY (KEY_SHARE0_0 ),
263
255
REG_NAME_ENTRY (KEY_SHARE0_1 ),
264
256
REG_NAME_ENTRY (KEY_SHARE0_2 ),
@@ -1094,11 +1086,7 @@ static uint64_t ot_kmac_regs_read(void *opaque, hwaddr addr, unsigned size)
1094
1086
break ;
1095
1087
case R_INTR_TEST :
1096
1088
case R_ALERT_TEST :
1097
- case R_ENTROPY_SEED_0 :
1098
- case R_ENTROPY_SEED_1 :
1099
- case R_ENTROPY_SEED_2 :
1100
- case R_ENTROPY_SEED_3 :
1101
- case R_ENTROPY_SEED_4 :
1089
+ case R_ENTROPY_SEED :
1102
1090
case R_KEY_SHARE0_0 :
1103
1091
case R_KEY_SHARE0_1 :
1104
1092
case R_KEY_SHARE0_2 :
@@ -1212,6 +1200,12 @@ static void ot_kmac_regs_write(void *opaque, hwaddr addr, uint64_t value,
1212
1200
qemu_log_mask (LOG_UNIMP , "%s: CMD.HASH_CNT_CLR is not supported\n" ,
1213
1201
__func__ );
1214
1202
}
1203
+
1204
+ if (val32 & R_CMD_ERR_PROCESSED_MASK ) {
1205
+ /* TODO: implement entropy */
1206
+ s -> regs [R_STATUS ] &= ~R_STATUS_ALERT_RECOV_CTRL_UPDATE_ERR_MASK ;
1207
+ ot_kmac_update_alert (s );
1208
+ }
1215
1209
break ;
1216
1210
}
1217
1211
case R_ENTROPY_PERIOD :
@@ -1240,11 +1234,7 @@ static void ot_kmac_regs_write(void *opaque, hwaddr addr, uint64_t value,
1240
1234
break ;
1241
1235
}
1242
1236
break ;
1243
- case R_ENTROPY_SEED_0 :
1244
- case R_ENTROPY_SEED_1 :
1245
- case R_ENTROPY_SEED_2 :
1246
- case R_ENTROPY_SEED_3 :
1247
- case R_ENTROPY_SEED_4 :
1237
+ case R_ENTROPY_SEED :
1248
1238
/* TODO: implement entropy */
1249
1239
qemu_log_mask (LOG_UNIMP , "%s: R_ENTROPY_SEED_* is not supported\n" ,
1250
1240
__func__ );
0 commit comments