Now reuse allow_trigger_s5 in life_mngr_config to allow WAAG to trigger
system reboot.
Tracked-On: #7215
Signed-off-by: Xiangyang Wu <xiangyang.wu@intel.com>
Signed-off-by: Fei Li <fei1.li@intel.com>
Add user VM reboot command and related command handler in
lifecycle manager to support user VM reboot.
Libvirt will send user VM reboot command to lifecycle manager
of service VM through socket, this command is forwarded to the
specified user VM, user VM will execute reboot command to start
reboot itself.
v1-->v2:
Update some interfaces name to make it reable:
(1) enable_uart_channel_dev_resend -->
start_uart_channel_dev_resend
(2) enable_all_uart_channel_dev_resend -->
start_all_uart_channel_dev_resend
(3) disable_uart_channel_dev_resend -->
stop_uart_channel_dev_resend
(4) get_reboot_flag --> get_user_vm_reboot_flag
Tracked-On: #5921
Signed-off-by: Xiangyang Wu <xiangyang.wu@intel.com>
Acked-by: Wang, Yu1 <yu1.wang@intel.com>
Currently, the lifecycle manager in Service VM will issue poweroff
command to shutdown service VM when User VM fails to shutdown. The
post-launched RTVM with virtio device may hang after Service VM
shutdown.
In this patch, the lifecycle manager in Service VM will stop to
shut down service VM when User VM fails to shutdown. Users have
chance to fix User VM shutdown failure (such as forcelly shutdown
User VM or execute poweroff command in User VM), after the failure
is fixed, user can trigger S5 in service VM to shutdown platform
gracefully.
Tracked-On: #6652
Signed-off-by: Xiangyang Wu <xiangyang.wu@intel.com>
In this module, the following functions are implemented:
For uart channel of service VM, implement handlers for sync command,
system shutdown request command, acked poweroff command, vm poweroff
timeout command.
The uart channel commands of service VM and related actions are
described below:
Command Actions
---------------------------------------------------------------
sync Send acked sync
command to uart in user VM
----------------------------------------------------------------
system shutdown If this request is valid, send
request poweroff command to each
connected user VM through uart,
Enable message reseding.
----------------------------------------------------------------
acked poweroff Remove uart of user VM from
command connection list, stop message polling,
if connection list is empty, will
wait for user VM status through check
ACRN DM process instance, if all user
VMs are shutdown, then shutdown
service VM
---------------------------------------------------------
ACK timeout If it is timeout of receiving poweroff ACK,
the action is similar to acked poweroff.
Ohterwise, just disable message reseding.
---------------------------------------------------------
For uart channel of user VM, implement handlers for acked sync
command, poweroff command, acked system shutdown request command,
ACK timeout command.
The uart channel commands of user VM and related actions are
described below:
Command Actions
--------------------------------------------------------
acked sync Print log message
--------------------------------------------------------
poweroff Disconnect uart channel,
exit message polling, close
unix domain socket, shutdown user VM
--------------------------------------------------------
user VM shutdown Exit message polling, close
unix domain socket, shutdown user VM
--------------------------------------------------------
acked system Print log message
shutdown request
-------------------------------------------------------
ACK timeout Disconnect uart channel,
exit message polling, close
unix domain socket
---------------------------------------------------------
For socket server in each VM, implement handler for system
shutdown request.
In user VM, forward this command to service VM through uart.
In service VM, send poweroff command to each connected user VM
through uart.
Implement handler for user VM shutdown request in socket server of
service VM, send user VM shutdown command to user VM which is
specified in the user VM shutdown request message.
v1-->v2:
Add comments in c file and head file.
v2-->v3:
Update commit message about allow s5 command and update
some log message.
v3-->v4:
Guest shutdown support.
v4-->v5:
Update command name.
v5-->v6:
Move uart channel operations into uart channel module.
v6-->v7:
Set resend requirement for some commands.
Add ACK receiving timeout handler for user VM.
v7-->v8:
Update message reseding enable, this interface will be
called before sending message.
v8-->v9:
Use strlen to calculate the length of string, this will be
the parameter of send_message_by_uart.
Tracked-On: #6652
Signed-off-by: Xiangyang Wu <xiangyang.wu@intel.com>
Reviewed-by: fei1.li@intel.com