File tree Expand file tree Collapse file tree
runtime/tests/runtime_integration_tests Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -160,6 +160,60 @@ fn test_mbox_busy_during_warm_reset() {
160160 ) ;
161161}
162162
163+ #[ test]
164+ fn test_warm_reset_with_debug_unlock ( ) {
165+ let security_state = * SecurityState :: default ( )
166+ . set_debug_locked ( false )
167+ . set_device_lifecycle ( DeviceLifecycle :: Production ) ;
168+
169+ let rom = caliptra_builder:: rom_for_fw_integration_tests ( ) . unwrap ( ) ;
170+ let image = caliptra_builder:: build_and_sign_image (
171+ & FMC_WITH_UART ,
172+ & APP_WITH_UART ,
173+ ImageOptions :: default ( ) ,
174+ )
175+ . unwrap ( ) ;
176+ let vendor_pk_hash =
177+ bytes_to_be_words_48 ( & sha384 ( image. manifest . preamble . vendor_pub_keys . as_bytes ( ) ) ) ;
178+ let owner_pk_hash =
179+ bytes_to_be_words_48 ( & sha384 ( image. manifest . preamble . owner_pub_keys . as_bytes ( ) ) ) ;
180+
181+ let mut model = caliptra_hw_model:: new (
182+ InitParams {
183+ rom : & rom,
184+ security_state,
185+ ..Default :: default ( )
186+ } ,
187+ BootParams {
188+ fuses : Fuses {
189+ key_manifest_pk_hash : vendor_pk_hash,
190+ owner_pk_hash,
191+ ..Default :: default ( )
192+ } ,
193+ fw_image : Some ( & image. to_bytes ( ) . unwrap ( ) ) ,
194+ ..Default :: default ( )
195+ } ,
196+ )
197+ . unwrap ( ) ;
198+
199+ // Wait for boot
200+ model. step_until ( |m| m. soc_ifc ( ) . cptra_flow_status ( ) . read ( ) . ready_for_runtime ( ) ) ;
201+
202+ // Perform warm reset
203+ model. warm_reset_flow ( & Fuses {
204+ key_manifest_pk_hash : vendor_pk_hash,
205+ owner_pk_hash,
206+ ..Default :: default ( )
207+ } ) ;
208+
209+ // Wait for boot
210+ model. step_until ( |m| m. soc_ifc ( ) . cptra_flow_status ( ) . read ( ) . ready_for_runtime ( ) ) ;
211+ assert_eq ! (
212+ model. soc_ifc( ) . cptra_fw_error_non_fatal( ) . read( ) ,
213+ 0
214+ ) ;
215+ }
216+
163217#[ cfg( not( feature = "fpga_realtime" ) ) ]
164218#[ test]
165219fn test_mbox_idle_during_warm_reset ( ) {
You can’t perform that action at this time.
0 commit comments