summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdin Scannell <ascannell@google.com>2018-05-14 20:26:35 -0700
committerShentubot <shentubot@google.com>2018-05-14 20:27:21 -0700
commit17a0fa3af05dbb147cdd3d5ec898d31812a0ea66 (patch)
treeef1309ad5c69882625e9bce466df011a4bb72775
parent08879266fef3a67fac1a77f1ea133c3ac75759dd (diff)
Ignore spurious KVM emulation failures.
PiperOrigin-RevId: 196609789 Change-Id: Ie261eea3b7fa05b6c348ca93e229de26cbd4dc7d
-rw-r--r--pkg/sentry/platform/kvm/bluepill_unsafe.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/pkg/sentry/platform/kvm/bluepill_unsafe.go b/pkg/sentry/platform/kvm/bluepill_unsafe.go
index 85703ff18..9e252af64 100644
--- a/pkg/sentry/platform/kvm/bluepill_unsafe.go
+++ b/pkg/sentry/platform/kvm/bluepill_unsafe.go
@@ -105,7 +105,11 @@ func bluepillHandler(context unsafe.Pointer) {
case _KVM_EXIT_IO:
throw("I/O")
case _KVM_EXIT_INTERNAL_ERROR:
- throw("internal error")
+ // An internal error is typically thrown when emulation
+ // fails. This can occur via the MMIO path below (and
+ // it might fail because we have multiple regions that
+ // are not mapped). We would actually prefer that no
+ // emulation occur, and don't mind at all if it fails.
case _KVM_EXIT_HYPERCALL:
throw("hypercall")
case _KVM_EXIT_DEBUG: