mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-12-08 21:22:43 +00:00
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
3.6 KiB
3.6 KiB