diff --git a/exosphere/src/smc_api.c b/exosphere/src/smc_api.c index 063611a0a..a0f96073b 100644 --- a/exosphere/src/smc_api.c +++ b/exosphere/src/smc_api.c @@ -25,6 +25,7 @@ #define SMC_PRIV_HANDLERS 0x9 #define DEBUG_LOG_SMCS 0 +#define DEBUG_PANIC_ON_FAILURE 0 /* User SMC prototypes */ uint32_t smc_set_config(smc_args_t *args); @@ -260,6 +261,7 @@ void call_smc_handler(uint32_t handler_id, smc_args_t *args) { } #endif +#if DEBUG_PANIC_ON_FAILURE if (args->X[0] && (!is_aes_kek || args->X[3] <= EXOSPHERE_TARGET_FIRMWARE_DEFAULT_FOR_DEBUG)) { MAKE_REG32(get_iram_address_for_debug() + 0x4FF0) = handler_id; @@ -268,6 +270,9 @@ void call_smc_handler(uint32_t handler_id, smc_args_t *args) { *(volatile smc_args_t *)(get_iram_address_for_debug() + 0x4F00) = *args; panic(PANIC_REBOOT); } +#else + (void)(is_aes_kek); +#endif (void)result; /* FIXME: result unused */ } @@ -636,8 +641,10 @@ uint32_t smc_configure_carveout(smc_args_t *args) { } /* Configuration is one-shot, and cannot be done multiple times. */ - if (g_configured_carveouts[carveout_id]) { - return 2; + if (exosphere_get_target_firmware() < EXOSPHERE_TARGET_FIRMWARE_300) { + if (g_configured_carveouts[carveout_id]) { + return 2; + } } configure_kernel_carveout(carveout_id + 4, address, size);