1
0
Fork 0
mirror of https://github.com/CTCaer/hekate.git synced 2024-11-26 03:32:17 +00:00

hos: exo: fatal: add check for mixed atmosphere sysmods

Normally that can only happen if atmosphere is updated and config uses fusee-secondary instead of package3. In that case boot2 sysmodule (0100000000000008) will fatal.
This commit is contained in:
CTCaer 2021-09-17 23:23:43 +03:00
parent a2d18f0848
commit bcc2512cb6

View file

@ -246,11 +246,11 @@ void config_exosphere(launch_ctxt_t *ctxt, u32 warmboot_base)
// Parse usb mtim settings. Avoid parsing if it's overridden. // Parse usb mtim settings. Avoid parsing if it's overridden.
if (ctxt->fss0_main_path && !ctxt->exo_ctx.usb3_force) if (ctxt->fss0_main_path && !ctxt->exo_ctx.usb3_force)
{ {
char set_path[256]; char settings_path[256];
strcpy(set_path, ctxt->fss0_main_path); strcpy(settings_path, ctxt->fss0_main_path);
strcat(set_path, "config/system_settings.ini"); strcat(settings_path, "config/system_settings.ini");
LIST_INIT(sys_settings); LIST_INIT(sys_settings);
if (ini_parse(&ini_sections, set_path, false)) if (ini_parse(&ini_sections, settings_path, false))
{ {
LIST_FOREACH_ENTRY(ini_sec_t, ini_sec, &ini_sections, link) LIST_FOREACH_ENTRY(ini_sec_t, ini_sec, &ini_sections, link)
{ {
@ -416,6 +416,8 @@ static const char *get_error_desc(u32 error_desc)
} }
} }
#define HOS_PID_BOOT2 0x8
void secmon_exo_check_panic() void secmon_exo_check_panic()
{ {
volatile atm_fatal_error_ctx *rpt = (atm_fatal_error_ctx *)ATM_FATAL_ERR_CTX_ADDR; volatile atm_fatal_error_ctx *rpt = (atm_fatal_error_ctx *)ATM_FATAL_ERR_CTX_ADDR;
@ -431,6 +433,10 @@ void secmon_exo_check_panic()
WPRINTFARGS("Title ID: %08X%08X", (u32)((u64)rpt->title_id >> 32), (u32)rpt->title_id); WPRINTFARGS("Title ID: %08X%08X", (u32)((u64)rpt->title_id >> 32), (u32)rpt->title_id);
WPRINTFARGS("Error: %s (0x%x)\n", get_error_desc(rpt->error_desc), rpt->error_desc); WPRINTFARGS("Error: %s (0x%x)\n", get_error_desc(rpt->error_desc), rpt->error_desc);
// Check if mixed atmosphere sysmodules.
if ((u32)rpt->title_id == HOS_PID_BOOT2)
WPRINTF("Is fss0 path correct?\n");
// Save context to the SD card. // Save context to the SD card.
char filepath[0x40]; char filepath[0x40];
f_mkdir("atmosphere/fatal_errors"); f_mkdir("atmosphere/fatal_errors");