From a162469cb6c83634e7927da7f2e1b907b452d76c Mon Sep 17 00:00:00 2001 From: Liam Merwick Date: Wed, 29 Jul 2020 23:45:12 +0000 Subject: [PATCH] qemu: Set govmmQemu NoReboot config Knob The Kata architecture does not support rebooting VMs (the lifecycle being start/exec/kill) and if a VM is killed (e.g. using sysrq-trigger), the VM does not exit fully and other layers do not notice the state change. Set the NoReboot config Knob so that govmmQemu.LaunchQemu() runs QEMU with the --no-reboot command-line option. Fixes: #2866 Signed-off-by: Liam Merwick --- virtcontainers/qemu.go | 1 + virtcontainers/qemu_test.go | 1 + 2 files changed, 2 insertions(+) diff --git a/virtcontainers/qemu.go b/virtcontainers/qemu.go index b56c273da0..65795f5998 100644 --- a/virtcontainers/qemu.go +++ b/virtcontainers/qemu.go @@ -489,6 +489,7 @@ func (q *qemu) createSandbox(ctx context.Context, id string, networkNS NetworkNa NoUserConfig: true, NoDefaults: true, NoGraphic: true, + NoReboot: true, Daemonize: true, MemPrealloc: q.config.MemPrealloc, HugePages: q.config.HugePages, diff --git a/virtcontainers/qemu_test.go b/virtcontainers/qemu_test.go index 88f55f0e32..cc03d81dbe 100644 --- a/virtcontainers/qemu_test.go +++ b/virtcontainers/qemu_test.go @@ -202,6 +202,7 @@ func TestQemuKnobs(t *testing.T) { assert.Equal(q.qemuConfig.Knobs.NoUserConfig, true) assert.Equal(q.qemuConfig.Knobs.NoDefaults, true) assert.Equal(q.qemuConfig.Knobs.NoGraphic, true) + assert.Equal(q.qemuConfig.Knobs.NoReboot, true) } func testQemuAddDevice(t *testing.T, devInfo interface{}, devType deviceType, expected []govmmQemu.Device) {