tools: acrn-crashlog: Reboot system to cold after collecting reserve log

After panic, kernel will do warm boot to reserve memory for log collecting.
Need to cold reboot system as the original behaviour.

Tracked-On:#1024
Signed-off-by: Liu, Xinwu <xinwu.liu@intel.com>
Acked-by: Chen, Gang <gang.c.chen@intel.com>
This commit is contained in:
Liu, Xinwu 2019-01-07 16:04:09 +08:00 committed by acrnsi
parent e3b33a9871
commit 156ea70821
2 changed files with 18 additions and 5 deletions

View File

@ -111,10 +111,6 @@ static void channel_oneshot(struct channel_t *cnl)
if (!is_boot_id_changed())
return;
e = create_event(REBOOT, cname, NULL, 0, NULL, 0);
if (e)
event_enqueue(e);
for_each_crash(id, crash, conf) {
if (!crash || !is_root_crash(crash))
continue;
@ -147,6 +143,10 @@ static void channel_oneshot(struct channel_t *cnl)
}
}
e = create_event(REBOOT, cname, NULL, 0, NULL, 0);
if (e)
event_enqueue(e);
for_each_info(id, info, conf) {
if (!info)
continue;

View File

@ -13,8 +13,10 @@
#include "load_conf.h"
#include "channels.h"
#include "fsutils.h"
#include "cmdutils.h"
#include "log_sys.h"
#include "event_handler.h"
#include "startupreason.h"
/* Watchdog timeout in second*/
#define WDT_TIMEOUT 300
@ -196,14 +198,25 @@ static void *event_handle(void *unused __attribute__((unused)))
sender->send(e);
}
if (e->event_type == REBOOT) {
char reason[REBOOT_REASON_SIZE];
read_startupreason(reason, sizeof(reason));
if (!strcmp(reason, "WARM") ||
!strcmp(reason, "WATCHDOG"))
if (exec_out2file(NULL, "reboot") == -1)
break;
}
if ((e->dir))
free(e->dir);
free(e);
event_processing = 0;
free(last_e);
}
LOGE("something goes error, %s exit\n", __func__);
LOGE("failed to reboot system, %s exit\n", __func__);
return NULL;
}